支付宝六(商户会员卡之模板创建)
商户会员卡模板创建一直持续了大半个月的时间,天天与支付宝的技术进行沟通,终于创建成功了,这里Mark一下。
1. 构建模板参数
下面的模板参数中,有许多前面加了注释符号,基本都是可选参数,而且容易导致报 “入参错误” 的参数,如果您有需要,请自行尝试或联系支付宝技术客服。
/*** @todo: 组建 会员卡模板 相关参数数组* @return array*/
public function addMarketCardJson(){
$json_data = array();
$json_data['request_id'] = date('YmdHis').mt_rand(10000,99999);
$json_data['card_type'] = 'OUT_MEMBER_CARD';
$json_data['biz_no_prefix'] = 'prex';
$json_data['biz_no_suffix_len'] = '10';
$json_data['write_off_type'] = 'qrcode'; #qrcode: 二维码 dqrcode: 动态二维码 barcode: 条码 dbarcode: 动态条码 text: 文本
$json_data['template_style_info']['card_show_name'] = '高端会员卡';
$json_data['template_style_info']['logo_id'] = 'YS6zsqoES5iHcD4uGwrP6QAAACMAAQED'; # logo 上传后的ID 1M以内,格式bmp、png、jpeg、jpg、gif; 尺寸不小于500*500px的正方形; 请优先使用商家LOGO;
$json_data['template_style_info']['color'] = 'rgb(55,112,179)'; #卡片背景色
$json_data['template_style_info']['background_id'] = '1BPt1AVNQnGAkntb2PFw3QAAACMAAQED'; # 上传背景图片返回的ID
$json_data['template_style_info']['bg_color'] = 'rgb(153,204,153)'; # 背景色#$json_data['template_style_info']['feature_descriptions'] = array('使用高端会员卡,0门卡享受9折优惠') ; # √ 描述#$json_data['template_style_info']['slogan'] = '会员权益享不停'; # √ 标语#$json_data['template_style_info']['slogan_img_id'] = '1BPt1AVNQnGAkntb2PFw3QAAACMAAQED'; # √ 标语图片ID#$json_data['template_style_info']['brand_name'] = '高端会员'; # √ 品牌名称$json_data['template_benefit_info'] = array( # √ 权益信息, 1、在卡包的卡详情页面会自动添加权益栏位,展现会员卡特权, 2、如果添加门店渠道,则可在门店页展现会员卡的权益
array(
'title' => '消费即折扣1', # 权益标题
'benefit_desc' => ['消费即折扣2'], # 权益描述
'start_date' => '2016-07-18 15:17:23', # 权益开始时间
'end_date' => '2017-07-18 15:17:23', # 权益结束时间
));$json_data['column_info_list'] = array(
array(
'code' => 'BENEFIT_INFO', # code 唯一码 写死
'more_info' => array(
'title' => '会员专享权益', # 二级页面标题√
'url' => BASE_DOMAIN, # 超链接(选择openweb的时候必须填写url参数内容)√
'params' => '{}', # 需要URL地址回带的值,JSON格式(openweb时填)√# 'descs' => ['会员生日打六折'] # 选择opennative的时候必须填写descs的内容√
),
'title' => '进入店铺', # 栏目标题
'operate_type' => 'openWeb', # 1、openNative:打开二级页面,展现 more中descs 2、openWeb:打开URL 3、staticinfo:静态信息
// 'value' => '80' , # 卡包详情页面,卡栏位右边展现的值√
));$json_data['field_rule_list'] = array(
array(
'field_name' => 'Balance', # Balance:金额 Point:整数 Level:任意字符串 OpenDate:开卡日期 ValidDate:过期日期
'rule_name' => 'ASSIGN_FROM_REQUEST', # 1.ASSIGN_FROM_REQUEST: 以rule_value为key值,表示该栏位的值从会员卡开卡接口中获取,会员卡开卡接口的card_info中获取对应参数值# 2、DATE_IN_FUTURE: 生成一个未来的日期(格式YYYY-MM-DD),当选择DATE_IN_FUTURE的时候,field_name 必须是OpenDate或ValidDate, 值为(10m或10d 分别表示10个月或10天)# 3、CONST: 常量,会员卡开卡接口进行开卡的时候使用模板创建时候设置的值,即取rule_value的值
'rule_value' => 'Balance' # 根据rule_name,采取相应取值策略# 3.CONST:直接取rule_value作为卡属性值# 3.DATE_IN_FUTURE:10m或10d 分别表示10个月或10天# 1.ASSIGN_FROM_REQUEST:在开卡Reuqest请求中按rule_value取值,现在和field_name对应的为(OpenDate、ValidDate、Level、Point、Balance)
),
/* array('field_name' => 'Point','rule_name' => 'ASSIGN_FROM_REQUEST','rule_value' => 'Point'),array('field_name' => 'Level','rule_name' => 'CONST','rule_value' => '1'),array('field_name' => 'OpenDate','rule_name' => 'DATE_IN_FUTURE','rule_value' => '0d'),array('field_name' => 'ValidDate','rule_name' => 'DATE_IN_FUTURE','rule_value' => '12m')*/
);
// $json_data['open_card_conf'] = array( # √
// 'open_card_source_type' => 'ISV', #ISV:外部系统 MER:直连商户
// 'source_app_id' => '2016101702200000', # 渠道APPID,提供领卡页面的服务提供方
// 'open_card_url' => BASE_DOMAIN, # 开卡连接,必须http、https开头
// #'conf' => '' , # √ 配置,预留字段,暂时不用
// );// $json_data['service_label_list'] = ['HUABEI_FUWU'] ; # √ 服务Code HUABEI_FUWU:花呗服务(只有需要花呗服务时,才需要加入该标识)
// $json_data['shop_ids'] = []; # √ 会员卡上架门店id(支付宝门店id),既发放会员卡的商家门店id// $json_data['pub_channels'] = array( # √ 卡模板投放渠道
// array(
// 'pub_channel' => 'SHOP_DETAIL' , # 1、SHOP_DETAIL:店铺详情页 2、PAYMENT_RESULT: 支付成功页(支付成功页暂不支持)
// 'ext_info' => '{}' # 扩展信息,无需配置 "key":"value"
// )
// );#card_level_conf 这个参数 有问题 请勿添加
// $json_data['card_level_conf'] = array( # √ 卡级别配置
// array(
// 'level' => 'VIP3', # 会员级别 该级别和开卡接口中的levle要一致
// 'level_show_name' => '黄金会员', # 会员级别显示名称
// 'level_icon' => 'aPQKWaYXQZimxEFz09nTBQAAACMAAQED',# 会员级别对应icon, 通过接口(alipay.offline.material.image.upload)上传图片
// 'level_desc' => '黄金会员享受免费停车,加油85折', # 会员级别描述
// ),
// array('level' => 'VIP2','level_show_name' => '银牌会员','level_icon' => 'rIBh_U4IRfmJtP97b-M5QQAAACMAAQED','level_desc' => '银牌会员享受免费停车,加油9折',
// ),
// array( 'level' => 'VIP1','level_show_name' => '铁牌会员','level_icon' => 'U1GnhAh8QNGJxkBcBADyQAAAACMAAQED','level_desc' => '铁牌会员享受免费停车,加油9折',
// )
// );
return $json_data;
2. 创建会员卡模板
这里有一个已经成功的 json 模板例子,可以尝试一下 ,可能有些人用不了,不知道原因,不过我这里成功了
PHP在转json的过程中 可以将中文字符不转义,注意支付宝的 文档中
#会员卡 模板创建
public function addMarketCardTemplete(){
$this->AopClient->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$this->AopClient->apiVersion = '1.0';
$request = new AlipayMarketingCardTemplateCreateRequest();
$post_data = $this->addMarketCardJson();
$post_data = json_encode($post_data,JSON_UNESCAPED_UNICODE);/* 正常请求成功数据 请更改 request_id 值 再请求 $post_data = '{"request_id": "124678911122","card_type": "OUT_MEMBER_CARD","biz_no_prefix": "prex","biz_no_suffix_len": "8","write_off_type": "qrcode","template_style_info": {"card_show_name": "高端会员卡","logo_id": "tLuK85s3SnKSiagmulHBUwAAACMAAQQD","color": "rgb(55,112,179)","background_id": "tLuK85s3SnKSiagmulHBUwAAACMAAQQD","bg_color": "rgb(55,112,179)"},"field_rule_list": [{"field_name": "Balance","rule_name": "ASSIGN_FROM_REQUEST","rule_value": "Balance"}],"column_info_list": [{"code": "BENEFIT_INFO","more_info": {"title": "会员专享权益","url": "http://www.baidu.com","params": "{}"},"title": "会员专享","operate_type": "openWeb"}],"template_benefit_info": [{"title": "消费即折扣","benefit_desc": ["消费即折扣"],"start_date": "2016-07-18 15:17:23","end_date": "2017-07-34 12:12:12"}]
}';*/
$request->setBizContent($post_data);
$result = $this->AopClient->execute($request);$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
if(!empty($resultCode)&&$resultCode == 10000){
echo "成功";
} else {
echo "失败";
}}
创建成功返回结果
{"alipay_marketing_card_template_create_response":{"code":"10000","msg":"Success","template_id":"20161207000000000099121000300xxx"},"sign":"DsXWiJsQOPhWC77Tls4d4UicLE0on5o60y5o2S4uRKaP4Br8ojPT4FY+bdj5MN5k/J5OS2ypnDdBvHOyo3U5Z/tpmdWpxRgphiE7OLO+8PXOCYOU9Jh+OThk/KQYJqPbC/o5FSRRDeZ7PUBbwLVnZHolQMxP/emi5JFyMEYDIA8="}
3. 会员卡更新模板
#会员卡 模板更新
public function updateMarketCardTemplete(){
$this->AopClient->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$this->AopClient->apiVersion = '1.0';
$request = new AlipayMarketingCardTemplateModifyRequest();
$post_data = $this->addMarketCardJson();
$post_data['template_id'] = '2016120700000000009912100030xxxx';
$post_data['request_id'] = '124678911122';
$post_data['write_off_type'] ='barcode';
unset($post_data['card_type']); #更新模板不需要此参数
unset($post_data['biz_no_suffix_len']); #更新模板不需要此参数
$post_data = json_encode($post_data,JSON_UNESCAPED_UNICODE);
$request->setBizContent($post_data);
$result = $this->AopClient->execute($request);$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
if(!empty($resultCode)&&$resultCode == 10000){
echo "成功";
} else {
echo "失败";
}}
修改成功返回结果
{"alipay_marketing_card_template_modify_response":{"code":"10000","msg":"Success","template_id":"20161207000000000099121000300xxx"},"sign":"DsXWiJsQOPhWC77Tls4d4UicLE0on5o60y5o2S4uRKaP4Br8ojPT4FY+bdj5MN5k/J5OS2ypnDdBvHOyo3U5Z/tpmdWpxRgphiE7OLO+8PXOCYOU9Jh+OThk/KQYJqPbC/o5FSRRDeZ7PUBbwLVnZHolQMxP/emi5JFyMEYDIA8="}
4. 会员卡模板查询
#会员卡 模板查询
public function queryMarketCardTemplete(){
$this->AopClient->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$this->AopClient->apiVersion = '1.0';
$request = new AlipayMarketingCardTemplateQueryRequest();
$post_data['template_id'] = '201612070000000001031170003XXXX';
$post_data = json_encode($post_data,JSON_UNESCAPED_UNICODE);
$request->setBizContent($post_data);
$result = $this->AopClient->execute($request);$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
if(!empty($resultCode)&&$resultCode == 10000){
echo "成功";
} else {
echo "失败";
}}# ----------------------------------------会员卡模板部分结束---------------------------------------------------------
返回结果
{"alipay_marketing_card_template_query_response":{"code":"10000","msg":"Success","biz_no_prefix":"prex","biz_no_suffix_len":"10","card_type":"OUT_MEMBER_CARD","column_info_list":[{"code":"BENEFIT_INFO","more_info":{"params":"{}","title":"会员专享权益","url":"http:\/\/testshop1.ouyun.com\/"},"operate_type":"openWeb","title":"进入店铺"}],"field_rule_list":[{"field_name":"Balance","rule_name":"ASSIGN_FROM_REQUEST","rule_value":"Balance"}],"template_benefit_info":[{"benefit_desc":["消费即折扣2"],"end_date":"2017-07-18 15:17:23","start_date":"2016-07-18 15:17:23","title":"消费即折扣1"}],"template_style_info":{"background_id":"1BPt1AVNQnGAkntb2PFw3QAAACMAAQED","bg_color":"rgb(153,204,153)","card_show_name":"高端会员卡","color":"rgb(55,112,179)","logo_id":"YS6zsqoES5iHcD4uGwrP6QAAACMAAQED"}},"sign":"onpHp4PQr6hOsbRGrbM+B5h8o1xG7Ny"}
支付宝文档 部分示例 有问题 其中 json部分参数错误
https://doc.open.alipay.com/docs/api.htm?docType=4&apiId=1192
【注意】
支付宝文档中 card_level_conf 这个示例参数 是个多维数组 json 时 需要 {[{等级1},{等级2},{等级3}]} 否则会报 “入参格式错误”,还有些可选的参数也会报此错误,尽量减少可选参数。
支付宝六(商户会员卡之模板创建)相关推荐
- 记录 支付宝口碑--商户会员卡 开发历程
人生第一次写博客,肯定会有多多不足,希望在接下来的日子里自己能坚持下来,持之以恒. 简单介绍下功能需求,对接商场的CRM会员管理系统和支付宝口碑,实现通过口碑能给商场商圈开通电子会员卡,并通过支付宝消 ...
- 支付宝 口碑会员卡模板创建实例
alipay.marketing.card.template.create(会员卡模板创建)https://docs.open.alipay.com/api_5/alipay.marketing.ca ...
- .NET版支付宝商户会员卡接入
最近公司计划对接支付宝会员卡功能,而任务恰巧由领导安排给我这边,小弟之前也未做过支付宝接口,研究了三天,终于将支付宝会员卡API接口大体上调通了,现将其整理下,以供参考. 蚂蚁金服开发平台-商户会员卡 ...
- 支付宝七(商户会员卡之发放卡券)
支付宝会员卡发放 接口实现 部分功能 1. 发放会员卡 # 会员卡 开卡public function openCard(){$this->load->helper('url');$acc ...
- 十六.静态页面抽取模板 2021-03-31
十六.静态页面抽取模板 引言 模板标签之模板继承 静态模板文件:链接:https://pan.baidu.com/s/1eZKi4a5fBTmy-DwAQmr51w 提取码:8mmy django-- ...
- vs code vue模板创建
摆图 其他模板创建,依照此法即可. 转载于:https://blog.51cto.com/11mihu/1926917
- 超图桌面版使用模板创建数据源
新建一个文件型数据源test1; 新创建完是空的:文件数据源菜单下拉,基于模板创建数据源: 选择数据源模板,国情普查:这是一套系统预定义的模板: 创建: 根据模板创建的数据源,数据集结构会被继承过来: ...
- 03_Weblogic之配置简单域:启动和配置域,使用模板创建域,使用控制台
1 域:概览 是Oracle Weblogic Server的基本管理单元 始终包含一个配置为管理服务器的Oracle WebLogic Server实例 域中可以包括一些称为受管服务器的Ora ...
- docker镜像了解(建立私有仓库,基于已有镜像创建,Docker的数据管理) 基于Dockerfile创建,基于本地模板创建,端口映射,容器互联)
文章目录 docker镜像 制作镜像的过程 基于已有镜像创建 基于本地模板创建 基于Dockerfile创建 Dockerfile操作指令 Docker的数据管理 数据卷 docker的网络通信 容器 ...
最新文章
- android studio转载文章
- 一些简单网络命令用法
- h5实现网页内容跟随窗口大小移动_h5页面能流行于各大社交平台必定有其原因的...
- [leetcode]347. Top K Frequent Elements
- 产品经验谈:B端产品需求的3个层次,你都了解吗?
- laravel CURD
- linux加水印乱码,linux java程序加水印及中文乱码方案(二)
- npm ERR! path D:\NodeWWW\webpack\node_modules\fsevents\node_modules
- 免费下载百度文库的几款在线工具推荐
- 公交车管理系统C语言
- 郝斌数据结构与算法自学视频教程
- PPM 金字塔池化模块 - PSPNet
- imitate wechat - 2
- 设计师悲剧:你一天内要完成100张海报
- stm32 esp8266 ota升级-自建mqtt和文件服务器全量升级
- 14个适合后台管理系统快速开发的前端框架
- 陕西美食羊肉泡馍,舌尖上的美感
- 灵活就业身份参加社保,怎样才能以工人身份退休?
- T560和为k的子数组
- vector介绍及使用