接口名称:alipay.pass.template.add
接口描述:支付宝卡券新建模版接口
使用场景介绍:商户通过此接口添加用于同步到手机支付宝卡券的模版
可选券类型
支付宝卡券支持优惠券、票务和行程单三种模板类型,不同模板类型有不同的展示排版结构。
支付宝卡券支持多种产品类型。开发者可以根据自身的业务场景,选择合适的产品类型。产品类型包括:免费券、兑换券、团购券、彩票、电影票、旅游景点门票、酒店、登机牌、机票、火车票及其汽车票。(具体的字段设置可以参考卡券类型)
券示例及其排版结构
不同模板类型有不同的展示排版结构,结构图如下:
1. 优惠券的排版结构
2. 票务的排版结构
3. boardingPass的排版结构
为简化卡券开发,我们提供了所见即所得的卡券模板设计功能,请根据如下步骤来获得模板内容,并在支付宝卡券系统中创建模板。
1. 进入卡券平台(https://alipassprod.alipay.com),选择券类型,点击“编辑”,根据需要设计模板。
2. 查看模板样式效果
商户在网站上设计完成模板之后,点击保存后会获得一个二维码,例如下图。
打开手机支付宝,扫描获得的二维码,会出来一个领取页面,领取券后可以查看最终的券样式是否满足需求。
3. 点击二维码下载模板文件,解压后如下图(如果无法解压,请将后缀名修改为zip即可解压)。
4. 打开pass.json文件,其值即为创建模板的参数tpl_content中content的值。
业务主体参数(biz_content)
参数 | 参数名称 | 类型 | 必填 | 描述 | 范例 |
---|---|---|---|---|---|
unique_id |
唯一标识 |
String(64) |
否 |
商户用于控制模版的唯一性。(可以使用时间戳保证唯一性) |
20140709150010 |
tpl_content |
模板内容 |
String(65000) |
是 |
模板内容信息,遵循JSON规范。 详情参见 tpl_content的构成 |
{"logo": " https://tfsimg.alipay.com/images/kabaoprod/T1uoldXeVlXXaCwpjX","strip": null,"icon": null,"content": {}} |
tpl_content为json对象,由content(即pass.json内容,必传)、icon、logo(图片url地址,必传)、strip(图片的url地址),4个元素共同构成tpl_content的json对象。
提取pass.json文件后,就可以构造tpl_content字符串对象,如下:
为了保证卡券展示的灵活扩展,卡券展示使用JSON格式的字符串来存储,其中一些是固定节点,控制在钱包中的展示位置,一部分是用户自定义的展示文案,文案可以是在模板设计时就设计好的固定文案,也可以是变量,使用$var$来表示,等券实例化时再传入具体的var代表的值来替换,其中var为变量名,可以是任何有意义的名称,最好全部由英文字母组成。Content节点里面的内容为pass.json的内容,pass.json对象大体由下面6大部分组成。
结构视图
属性描述
参数 | 参数名称 | 类型 | 必填 | 描述 | 范例 |
---|---|---|---|---|---|
evoucherInfo |
基础属性 |
String |
是 |
pass的基础信息,如pass标题、pass类型等 |
|
style |
样式属性 |
String |
否 |
pass在app展现时的样式信息 |
|
fileInfo |
文件属性 |
String |
是 |
Alipass文件的相关信息 |
|
merchant |
主体内容图片url |
String |
是 |
pass对应的第三方信息 |
|
platform |
渠道属性 |
String |
是 |
pass发布渠道或者平台信息 |
|
appInfo |
应用属性 |
String |
否 |
第三方手机客户端应用信息 |
结构视图
属性描述
参数 | 参数名称 | 类型 | 必填 | 描述 | 范例 |
---|---|---|---|---|---|
goodsId |
商品ID |
String(64) |
否 |
pass对应商品的id |
-- |
title |
pass名称 |
String(256) |
是 |
pass的名称,如优惠券的名称 |
**优惠券 |
卡券大类型(展示模板) |
String(16) |
是 |
支付宝当前支持pass的类型(不同类型会有不同的详情展示模板) |
coupon |
|
卡券子类型(产品业务) |
String(16) |
是 |
支付宝当前支持pass的子类型,与type字段结合确定pass的准确类型 |
free |
|
startDate |
开始时间 |
String(16) |
是 |
pass生效时间(起飞时间),YYYY-MM-dd HH:mm:ss格式字符串 |
2016-6-30 15:44:11 |
endDate |
结束时间 |
String(19) |
是 |
pass失效时间(落地时间)(可与startDate相同),需要精确到秒,如:2013年5月1日到期,则到结束时间需要设置成2013-05-01 23:59:59 |
2013-05-01 23:59:59 |
pass特性 |
EInfo(4000) |
是 |
不同类型pass对应的特定属性 |
["wave","text"] |
|
操作信息 |
Operation(1000) |
是 |
支持文本、二维码、声波等核销内容展示,也可作为启动应用操作 |
|
|
提醒信息 |
RemindInfo |
100 |
用于在pass 生效或截止前提示用户,可设置时间提前量、提醒的内容 |
|
支付宝卡券支持以下3种 type类型,不同模板类型有不同的展示模板排版结构。
序号 | 模板类型名称 | 模板描述 |
---|---|---|
1 |
coupon |
优惠券类默认展示模板 |
2 |
eventTicket |
事件票务类默认展示模板 |
3 |
boardingPass |
登车、船、飞机票务等默认展示模板 |
支付宝卡券支持以下11种产品业务类型。接口调用方可以根据自身的业务场景,选择合适的产品类型。product分类如下
序号 | 产品业务类型 | 描述 |
---|---|---|
1 |
free |
免费券 |
2 |
price |
兑换券 |
3 |
groupon |
团购券 |
4 |
lottery |
彩票 |
5 |
movie |
电影票 |
6 |
tourist |
旅游景点门票等 |
7 |
hotel |
酒店 |
8 |
boarding |
登机牌 |
9 |
air |
机票 |
10 |
train |
火车票 |
11 |
bus |
汽车票 |
einfo数据是alipass的主体信息,主要用于展示给用户。如:电影票、登机牌、优惠券等均有自有行业特定的信息。 第三方可根据实际需要按照约定的JSON数据格式将内容进行组装。这些数据最终会按照组装顺序显示在alipass的详情中(正面和背面均支持)。目前主要包含:headFields、primaryFields、secondaryFields、auxiliaryFields、backFields几大块区域。
einfo结构区域描述(einfo)
序号 | Key | 字段名 | 描述 | 可空 |
---|---|---|---|---|
1 |
logo |
PassLogo |
从alipass文件包中获取:即logo.png |
Y |
2 |
logoText |
Logo旁白 |
logo旁白区域 |
N |
3 |
secendLogoText |
辅助Logo旁白 |
第二行logo旁白区域(可选) |
Y |
4 |
Thumbnail |
缩略图 |
从alipass文件包中获取:即strip.png。 |
Y |
5 |
headFields |
内容 |
头部右端区域块【EinfoUnit列表】 |
Y |
6 |
primaryFields |
第一区域块 |
第一区域块需要展示的内容【EinfoUnit列表】 |
Y |
7 |
secondaryFields |
第二区域块 |
第二区域块需要展示的内容【EinfoUnit列表】 |
Y |
8 |
auxiliaryFields |
辅助区域块 |
辅助域块需要展示的内容【EinfoUnit列表】 |
Y |
9 |
backFields |
背面区域块 |
背面区域块需要展示的内容【EinfoUnit列表】 |
Y |
说明:headFields、primaryFields、secondaryFields、auxiliaryFields、backFields区域,至少有一个区域有值。
区块规则(EinfoUnit)
序号 | 内容 | 字段名 | 字段类型 | 说明 | 可空 |
---|---|---|---|---|---|
1 |
key |
字段关键字 |
String |
字段关键字 |
N |
2 |
label |
显示名称 |
String |
显示名称 |
Y |
3 |
value |
显示具体值 |
String |
显示具体值 |
Y |
4 |
type |
字段类型 |
String |
可选类型为电话【tel】、网站连接地址【url】、地图【map】、文本【text】(默认)等。根据不同的类型,将在该字段前添加相应的icon,并会根据实际情况相应支持电话拨出、启动浏览器跳转连接地址、启动手机应用客户端、地图等功能; |
Y |
说明:如果key 的值不为空,则label 和value 必须有一个值非空。
einfo业务必要属性声明
说明:因部分业务需要,除基础属性外在einfo同样有部分特有的关键属性信息(key值固定,显示名称不做限制)不得为空,并且需要保证在einfo中关键业务的key值没有重复,但并不限制排版位置。如下表所示:
序号 | Product业务类型 | 必要属性名称(名称可自定义) | Key(固定) |
---|---|---|---|
1 |
train(火车票) |
出发地 |
from |
目的地 |
to |
||
列车号 |
trainNo |
||
2 |
boarding(登机牌) |
出发地 |
from |
目的地 |
to |
||
航班号 |
fltNo |
||
3 |
air(机票) |
出发地 |
from |
目的地 |
to |
||
航班号 |
fltNo |
||
4 |
bus(汽车票) |
出发地 |
from |
目的地 |
to |
||
车次号 |
busNo |
核销操作区目前支持:wave(声波方式)、qrcode(二维码方式)、barcode(条码方式)、text(文本方式)、应用启动(app)、网页链接(url)、图片(img)
核销方式 | 模板中核销区(operation)示例 | 备注 |
---|---|---|
声波方式 |
"operation": [{ "message": "$ackCode$", "messageEncoding": "UTF-8", "format": "wave", "altText": "$ackCode$" }] |
如果是声波类型,message字符长度规则如下 1)16位及以下字符串任意字符传输。(兼容上期版本)eg: !@#$%^&*()|{}12a 2)长度在16位以上字符串,最长长度不超过32位。整个字符串组合为数字或A-F的字母(字母不区分大小写,输出结果统一为大写),首字符不能为0 eg: 123456789ABCDEF0123456789ABCDEFA 3)不符合规则客户端本地过滤不显示声波核销按钮 |
二维码方式 |
"operation": [{ "message": "$ackCode$", "messageEncoding": "UTF-8", "format": "barcode", "altText": "$ackCode$" }] |
|
条码方式 |
"operation": [{ "message": "$ackCode$", "messageEncoding": "UTF-8", "format": "qrcode", "altText": "$ackCode$" }] |
|
文本方式 |
"operation": [{ "altText": "兑换码", "message": [{ "label": "序列号", "value": "$ackCode$" },{ "label": "验证码", "value": "4958" }], "messageEncoding": "utf-8", "format": "text" }] |
如果format为文本方式,message需要为json数组 |
应用方式 |
"operation": [{ "message": { "android_appid": "androidId", "android_launch": "android启动地址", "android_download": "Android下载地址", "ios_appid": "IOSId", "ios_launch": "ios启动地址", "ios_download": "ios下载地址" }, "format": "app", "messageEncoding": "utf-8", "altText": "按钮文字" } |
跳转启动外部应用 |
图片 |
"operation": [{ "message": { "img": "*****.png", "target": "" }, "format": "img", "messageEncoding": "utf-8", "altText": "核销图片" }] |
|
链接 |
"operation": [{ "format": "url", "message": "https://****", "messageEncoding": "utf-8", "altText": "请使用" }] |
|
结构视图
属性描述
序号 | Key | 字段名 | 字段类型 | 描述 | 可空 |
---|---|---|---|---|---|
1 |
offset |
提前时间 |
String |
提醒默认的提前秒数,(3600-24×3600秒之间) |
Y |
提醒文案示例:
1)机票
“您从#from#到#to#的航班将于今(明天)天#startDate#起飞,请提前做好安排。“
2)酒店
“您将于#startDate#入住#title#店,请提前做好安排。“
3)门票
“您预订了#startDate#的#title#门票,请提前做好安排。“
说明:提醒文案中的的变量会从pass的基础属性和einfo中捞取,并会根据实际展示需要进行格式化。
商户属性是指归属于第三方的最终商户,比如天猫商城是一个第三方,其中深航机票是一个最终商户。
结构视图
属性描述
序号 | Key | 字段名 | 字段类型 | 描述 | 可空 |
---|---|---|---|---|---|
1 |
mname |
商户全称 |
String |
商户完整名称 |
N |
2 |
mshortName |
商户简称 |
String |
商户的简称 |
Y |
3 |
maddr |
商户地址 |
String |
商户的通讯地址 |
Y |
4 |
mtel |
商户电话 |
String |
商户的服务电话 |
Y |
5 |
minfo |
商户简介 |
String |
商户的介绍 |
Y |
结构视图
属性描述
序号 | Key | 字段名 | 字段类型 | 长度 | 描述 | 可空 |
---|---|---|---|---|---|---|
1 |
channelID |
渠道商ID |
String |
32 |
第三方在支付宝的partnerId 若已入驻蚂蚁金服开放平台则使用对应的appId |
N |
2 |
channelScene |
渠道场景 |
String |
32 |
可以设置为public,server,如果设置pubic则当发券时不给用户发PUSH消息,设置server会发PUSH |
Y |
3 |
webServiceUrl |
渠道商服务地址 |
String |
128 |
第三方服务url,用于将支付宝相关的信息同步给第三方 |
N |
结构视图
属性描述
序号 | Key | 字段名 | 描述 | 可空 |
---|---|---|---|---|
1 |
backgroundColor |
背景颜色 |
整体卡券背景颜色 |
N |
结构视图
属性描述
序号 | Key | 字段名 | 字段类型 | 字段长度 | 描述 | 可空 |
---|---|---|---|---|---|---|
1 |
formatVersion |
Pass文件版本 |
Integer |
10 |
Alipass的版本,现为2 |
N |
2 |
canPresent |
是否支持转赠 |
Boolean |
10 |
当设置为可转赠则可以在钱包中点击转赠按钮,将拥有的券转赠给其他用户 |
Y |
3 |
canShare |
是否支持共享 |
Boolean |
10 |
当前Alipass是否指定到单一用户,如果支持共享则可以有多个用户拥有同一张pass文件 |
Y |
4 |
serialNumber |
Pass文件序列号 |
String |
32 |
文件序列号,同一第三方提供的序列号需要唯一; 同一用户重复添加的pass,对应的serialNumber要求一致(多份购买行为例外)。 |
N |
结构视图
属性描述
序号 | Key | 字段名 | 字段类型 | 描述 | 可空 |
---|---|---|---|---|---|
1 |
label |
名称 |
String |
在alipass中显示的app应用名称 |
Y |
2 |
message |
应用描述 |
String |
应用的简短描述,可能会展示在alipass的应用信息区。 |
Y |
3 |
app |
应用具体信息 |
String |
应用具体信息,包含: 1:应用ID或包名 2:应用启动地址: 3:应下载地址: (需要区分IOS与android) |
Y |
HTTPS请求地址:https://openapi.alipay.com/gateway.do
参数 | 参数名称 | 类型 | 必填 | 描述 | 范例 |
---|---|---|---|---|---|
app_id |
应用ID |
String(32) |
是 |
支付宝分配给开发者的应用ID |
2014072300007148 |
method |
接口名称 |
String(128) |
是 |
接口名称 |
alipay.pass.template.update |
format |
数据格式 |
String(40) |
否 |
仅支持JSON |
json |
charset |
编码格式 |
String(10) |
是 |
请求使用的编码格式,如UTF-8,GBK,GB2312等 |
UTF-8 |
sign_type |
签名方式 |
String(10) |
是 |
商户生成签名字符串所使用的签名算法类型,目前支持RSA |
RSA |
sign |
签名值 |
String(256) |
是 |
商户请求参数的签名串,详见签名与验签 |
详见示例 |
timestamp |
请求时间 |
String(19) |
是 |
发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" |
2014-07-24 03:07:50 |
version |
版本 |
String(3) |
是 |
调用的接口版本,固定为:1.0 |
1.0 |
app_auth_token |
授权令牌 |
String(40) |
否 |
详见应用授权(此链接后继需修改) |
|
1. 进入卡券平台(https://alipassprod.alipay.com),完成在线模板设计。示例如下图。
2. 获取json.pass作为tpl_content中content属性,为了更好的保持模板的灵活通用性,示例将有效时间、描述文案,标题设为变量(validStartDate,validEndDate, discountInfo, logoText,useStateDesc)。调用创建模板接口完成模板创建。
HTTP请求源码示例
https://openapi.alipay.com/gateway.do?sign=uVzuTRpcIvgmDCRfyR9eusJmgNoeRs3OWI2eyrIWqwE7F01ttFRdpzmiqWBfuxI%2FePuFrC1R8bL5V4h82sH5CQ%2F3CuIo6HQO2YC63f7pKdBx5gC%2FxMdTevdC4QCJF5k0xWu5JlssKy%2FKliNUqgFFiQfTLHPPhr%2B8usaZ1UwqSZE%3D×tamp=2015-06-24+14%3A13%3A49&sign_type=RSA&app_id=102014022600003526&method=alipay.pass.template.add&version=1.0&alipay_sdk=alipay-sdk-java-dynamicVersionNo&format=json&biz_content= { "unique_id": "1435126393468", "tpl_content": { "logo": "https://alipass.alipay.com//temps/free/logo.png", "strip": "https://alipass.alipay.com//temps/free/strip.png", "icon": "http://alipassprod.test.alipay.net/temps/free/icon.png", "content": { "evoucherInfo": { "title": "风情优惠券", "type": "coupon", "product": "free", "startDate": "$validStartDate$", "endDate": "$validEndDate$", "operation": [ { "format": "qrcode", "message": "45612346579465", "messageEncoding": "UTF-8", "altText": "45612346579465" }, { "format": "barcode", "message": "45612346579465", "messageEncoding": "UTF-8", "altText": "45612346579465" } ], "einfo": { "logoText": "$logoText$", "headFields": [ { "key": "status", "label": "状态", "value": "$useStateDesc$", "type": "text" } ], "primaryFields": [ { "key": "strip", "label": "", "value": "$discountInfo$", "type": "text" } ], "secondaryFields": [ { "key": "validDate", "label": "有效期至:", "value": "$validEndDate$", "type": "text" } ], "auxiliaryFields": [ ], "backFields": [ { "key": "description", "label": "详情描述", "value": "1.该优惠有效期:截止至2014年06月18日;\n2.凭此券可以享受以下优惠:\n享门市价优惠\n不与其他优惠同享。详询商家。", "type": "text" }, { "key": "shops", "label": "可用门店", "value": "", "type": "text" }, { "key": "disclaimer", "label": "负责声明", "value": "除特殊注明外,本优惠不能与其他优惠同时享受; 本优惠最终解释权归商家所有,如有疑问请与商家联系。 提示:为了使您得到更好的服务,请在进店时出示本券。", "type": "text" } ] }, "remindInfo": { "offset": "2" } }, "merchant": { "mname": "hodewu", "mtel": "", "minfo": "" }, "platform": { "channelID": "$channelID$", "webServiceUrl": "http://alipassprod.test.alipay.net/builder/syncRecord.htm?tempId=2016062716334639647179025" }, "style": { "backgroundColor": "RGB(255,126,0)" }, "fileInfo": { "formatVersion": "2", "canShare": true, "canBuy": false, "canPresent": true, "serialNumber": "$serialNumber$", "supportTaxi": "true", "taxiSchemaUrl": "alipays://platformapi/startapp?appId=20000130&sourceId=20000030&showTitleBar=YES&showToolBar=NO&showLoading=NO&safePayEnabled=YES&readTitle=YES&backBehavior=back&url=/www/index.html" }, "appInfo": { "app": { "android_appid": "com.taobao.ecoupon", "ios_appid": "taobaolife://", "android_launch": "com.taobao.ecoupon", "ios_launch": "taobaolife://", "android_download": "http://download.taobaocdn.com/freedom/17988/andriod/Ecoupon_2.0.1_taobao_wap.apk", "ios_download": "https://itunes.apple.com/cn/app/id583295537" }, "label": "淘宝券券APP", "message": "点击调起APP" }, "source": "alipassprod", "alipayVerify": [ ] } } }
响应结果示例
{ "alipay_pass_template_add_response": { "code": "10000", "msg": "Success", "result": "{ \"serialNumber\":\"1550547540752564\",\"operate\":\"UPDATE\"}", "success": true }, "sign": "hAxz/ahsRObKHxo6d41OcfPyDVMJKaHC77Lp9+uE2ENV9w4tpBQKYim1D1ACPYq1ziN5532oEeBAbV6Wo6YNCRwFiMAKRGO8Fm5UOAHxfr4E35mb1gcihR31N25YLCD/k5fDPY1daezb57fPcq4zDiVAy49jd5gNcC9v85yEtck="
返回参数说明
名称 | 类型 | 是否列表类型 | 是否必须 | 示例值 | 描述 |
---|---|---|---|---|---|
success | String | 否 | 必须 | true | 操作成功标识【true:成功;false:失败】 |
result | String | 否 | 必须 | {“tpl_id”:“f038871a4b1151e8038bb9277c3d52e3”,“tpl_params”:“[title,startDate,channelID,serialNumer]”} | 参见下面的模板创建返回结果参数说明 |
模板创建返回结果参数说明
名称 | 类型 | 是否列表类型 | 是否必须 | 示例值 | 描述 |
---|---|---|---|---|---|
tpl_id |
String |
否 |
必须 |
f038871a4b1151e8038bb9277c3d52e3 |
新创建的模板编号 |
tpl_params |
String |
否 |
必须 |
[title,startDate] |
用户定义的变量的key |
名称 | 描述 | 解决方案 |
---|---|---|
KP.AE_ALIPASS_TEMPLATE_CONTENT_IS_BLANK |
tpl_content为空 |
tpl_content不能为空 |
KP.AE_ALIPASS_TEMPLATE_UNIQUE_IS_BLANK |
unique_id为空 |
unique_id不能为空 |
KP.AE_ALIPASS_TEMPLATE_CONTENT_FORMAT_ERR |
模板内容格式错误 |
检查tpl_content是否json格式 |
KP.AE_ALIPASS_ESSENTIAL_PARAMS_BLANK |
模板内容必填参数缺少 |
根据错误提示,检查必填参数 |
KP.AE_ALIPASS_TEMPLATE_UNRECOGNIZE_PROPERTY |
模板内容中存在不识别的参数key值 |
根据错误提示修正 |
KP.AE_ALIPASS_DATE_ERROR |
日期不合法,必须为yyyy-MM-dd HH:mm:ss格式 |
日期不合法,请检查startDate和endDate |
KP.AE_SYSTEM_ERROR |
系统错误 |
重试或联系技术支持 |
KP.AE_ALIPASS_DATA_CONTAIN_FORBIDDEN_WORD |
存在敏感词 |
修改文本中的敏感词 |
KP.AE_ALIPASS_TEMPLATE_PARAMS_VALUE_INVAILD |
模板存在参数值不合法 |
模板存在参数值不合法,根据错误提示修改 |
KP.AE_ALIPASS_TEMPLATE_EXISTED |
模板已经存在 |
幂等控制,确保unique_id的唯一性 |
接口名称:alipay.pass.template.update
接口描述:支付宝卡券更新模版接口
使用场景介绍:商户通过此接口更新已经存在的alipass模版。支付宝卡券通过卡券模板进行发放,因此模板的更新会导致,基于此模板发放的卡券的内容变更。
业务主体参数(biz_content)
参数 | 参数名称 | 类型 | 必填 | 描述 | 范例 |
---|---|---|---|---|---|
tpl_id |
模版ID |
String(32) |
是 |
更新的模板ID |
f038871a4b1151e8038bb9277c3d52e3 |
tpl_content |
模板内容 |
String(65000) |
是 |
模板内容信息,遵循JSON规范,详情参见新建模版中的“tpl_content参数说明” |
{"logo": "","strip": null,"icon": null,"content": {}} |
logo |
logo图片 |
String(1500) |
是 |
模板logo图片 |
https://tfs.alipay.net/images/alipassprod/T19XBXXhFXXXaCwpjX |
HTTPS请求地址:https://openapi.alipay.com/gateway.do
参数 | 参数名称 | 类型 | 必填 | 描述 | 范例 |
---|---|---|---|---|---|
app_id |
应用ID |
String(32) |
是 |
支付宝分配给开发者的应用ID |
2014072300007148 |
method |
接口名称 |
String(128) |
是 |
接口名称 |
alipay.pass.template.update |
format |
数据格式 |
String(40) |
否 |
仅支持JSON |
json |
charset |
编码格式 |
String(10) |
是 |
请求使用的编码格式,如UTF-8,GBK,GB2312等 |
UTF-8 |
sign_type |
签名方式 |
String(10) |
是 |
商户生成签名字符串所使用的签名算法类型,目前支持RSA |
RSA |
sign |
签名值 |
String(256) |
是 |
商户请求参数的签名串,详见签名与验签 |
详见示例 |
timestamp |
请求时间 |
String(19) |
是 |
发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" |
2014-07-24 03:07:50 |
version |
版本 |
String(3) |
是 |
调用的接口版本,固定为:1.0 |
1.0 |
app_auth_token |
授权令牌 |
String(40) |
否 |
详见应用授权(此链接后继需修改) |
|
在创建模板接口示例,完成模板创建的基础上,调用模板修改接口,对模板内容进行修改。
HTTP请求源码示例
https://openapi.alipay.com/gateway.do?sign=ERe8uRix%2BJcJ3%2B4MadVIxPCpJU7Z7%2FxZhd8TKmfAfOQR1oGuXBkvf3ty29VcA7KEGNi1b6Che3iw3zfWjM9Xp8Rdqsui6tkcmPqKaOW8Y%2BbfM7qtB2LfjNaKhNjC%2B1mz2O7ucv4GMpKxm%2BDdzLBKGZW%2BinyBkY4e%2BNrA3%2FOAjcA%3D×tamp=2015-06-24+16%3A54%3A13&sign_type=RSA&app_id=102014022600003526&method=alipay.pass.template.update&version=1.0&alipay_sdk=alipay-sdk-java-dynamicVersionNo&format=json&biz_content={ "tpl_id": " 2016062811032240457655570", "tpl_content": { "logo": "https://alipass.alipay.com//temps/free/logo.png", "strip": "https://alipass.alipay.com//temps/free/strip.png", "icon": "http://alipassprod.test.alipay.net/temps/free/icon.png", "content": { "evoucherInfo": { "title": "风情优惠券", "type": "coupon", "product": "free", "startDate": "$validStartDate$", "endDate": "$validEndDate$", "operation": [ { "format": "qrcode", "message": "45612346579465", "messageEncoding": "UTF-8", "altText": "45612346579465" }, { "format": "barcode", "message": "45612346579465", "messageEncoding": "UTF-8", "altText": "45612346579465" } ], "einfo": { "logoText": "$logoText$", "headFields": [ { "key": "status", "label": "优惠券状态", "value": "$useStateDesc$", "type": "text" } ], "primaryFields": [ { "key": "strip", "label": "", "value": "$discountInfo$", "type": "text" } ], "secondaryFields": [ { "key": "validDate", "label": "优惠券有效期至:", "value": "$validEndDate$", "type": "text" } ], "auxiliaryFields": [ ], "backFields": [ { "key": "description", "label": "详情描述", "value": "1.该优惠有效期:截止至2014年06月18日;\n2.凭此券可以享受以下优惠:\n享门市价8.5折优惠\n不与其他优惠同享。详询商家。", "type": "text" }, { "key": "shops", "label": "可用门店", "value": "", "type": "text" }, { "key": "disclaimer", "label": "负责声明", "value": "除特殊注明外,本优惠不能与其他优惠同时享受; 本优惠最终解释权归商家所有,如有疑问请与商家联系。 提示:为了使您得到更好的服务,请在进店时出示本券。", "type": "text" } ] }, "remindInfo": { "offset": "2" } }, "merchant": { "mname": "hodewu", "mtel": "", "minfo": "" }, "platform": { "channelID": "$channelID$", "webServiceUrl": "http://alipassprod.test.alipay.net/builder/syncRecord.htm?tempId=2016062716334639647179025" }, "style": { "backgroundColor": "RGB(255,126,0)" }, "fileInfo": { "formatVersion": "2", "canShare": true, "canBuy": false, "canPresent": true, "serialNumber": "$serialNumber$", "supportTaxi": "true", "taxiSchemaUrl": "alipays://platformapi/startapp?appId=20000130&sourceId=20000030&showTitleBar=YES&showToolBar=NO&showLoading=NO&safePayEnabled=YES&readTitle=YES&backBehavior=back&url=/www/index.html" }, "appInfo": { "app": { "android_appid": "com.taobao.ecoupon", "ios_appid": "taobaolife://", "android_launch": "com.taobao.ecoupon", "ios_launch": "taobaolife://", "android_download": "http://download.taobaocdn.com/freedom/17988/andriod/Ecoupon_2.0.1_taobao_wap.apk", "ios_download": "https://itunes.apple.com/cn/app/id583295537" }, "label": "淘宝券券APP", "message": "点击调起APP" }, "source": "alipassprod", "alipayVerify": [ ] } } }
响应结果示例
{ "alipay_pass_template_update_response": { "code": "10000", "msg": "Success", "result": "{\"tpl_id\":\"2015062614280547004605924\",\"tpl_params\":[\"filmName\",\"hallName\",\"count\",\"seatsInfo\",\"filmVersion\",\"dayTime\",\"hourTime\",\"secondLogoText\",\"cinemaName\",\"addr\",\"latitude\",\"longitude\",\"relevantText\",\"tel\",\"startDate\",\"endDate\",\"ackCode\",\"serialNumber\",\"channelID\"]}", "success": true }, "sign": "hAxz/ahsRObKHxo6d41OcfPyDVMJKaHC77Lp9+uE2ENV9w4tpBQKYim1D1ACPYq1ziN5532oEeBAbV6Wo6YNCRwFiMAKRGO8Fm5UOAHxfr4E35mb1gcihR31N25YLCD/k5fDPY1daezb57fPcq4zDiVAy49jd5gNcC9v85yEtck="
返回参数说明
名称 | 类型 | 是否列表类型 | 是否必须 | 示例值 | 描述 |
---|---|---|---|---|---|
success |
String |
否 |
必须 |
true |
操作成功标识【true:成功;false:失败】 |
result |
String |
否 |
必须 |
{"template_id":"989901","tpl_params":"[tile,startDate,channelID,serialNumber]"} |
参见下面的“模板更新返回结果参数说明” |
模板更新返回结果参数说明
名称 | 类型 | 是否列表类型 | 是否必须 | 示例值 | 描述 |
---|---|---|---|---|---|
tpl_id |
String |
否 |
必须 |
989901 |
更新的模板编号 |
tpl_params |
String |
否 |
必须 |
[title,startDate,channelID,serialNumer] |
商户定义的变量的key |
名称 | 描述 | 解决方案 |
---|---|---|
KP.AE_ALIPASS_TEMPLATE_CONTENT_IS_BLANK |
tpl_content为空 |
tpl_content不能为空 |
KP.AE_ALIPASS_TEMPLATE_UNIQUE_IS_BLANK |
unique_id为空 |
unique_id不能为空 |
KP.AE_ALIPASS_TEMPLATE_CONTENT_FORMAT_ERR |
模板内容格式错误 |
检查tpl_content是否json格式 |
KP.AE_ALIPASS_ESSENTIAL_PARAMS_BLANK |
模板内容中必填参数缺少 |
根据错误提示,检查必填参数 |
KP.AE_ALIPASS_TEMPLATE_UNRECOGNIZE_PROPERTY |
模板内容中存在不识别的参数key值 |
根据错误提示修正 |
KP.AE_ALIPASS_DATE_ERROR |
日期不合法,必须为yyyy-MM-dd HH:mm:ss格式 |
日期不合法,请检查startDate和endDate |
KP.AE_ALIPASS_TEMPLATE_NOT_EXIST |
模板不存在 |
检查模板ID是否存在 |
KP.AE_ALIPASS_DATA_CONTAIN_FORBIDDEN_WORD |
存在敏感词 |
检查模板内容,修改敏感词 |
KP.AE_SYSTEM_ERROR |
保存错误 |
重试或联系技术支持 |
接口名称:alipay.pass.instance.add
接口描述:支付宝卡券发放卡券接口
使用场景介绍:根据创建模板流程获取模板ID和动态参数;此后,商户将模版ID及模版中设置的动态参数值作为参数,调用发放卡券接口把卡券发放给支付宝用户。
业务主体参数(biz_content)
参数 | 参数名称 | 类型 | 必填 | 描述 | 范例 |
---|---|---|---|---|---|
tpl_id |
模板ID |
String(32) |
是 |
支付宝pass模版ID |
f038871a4b1151e8038bb9277c3d52e3 |
tpl_params |
参数键值对 |
String(38000) |
是 |
模版动态参数信息【支付宝pass模版参数键值对JSON字符串】。 |
{"cardNo":"0000001"} 此处cardNo是业务创建模板时指定的变量 |
recognition_type |
确认身份类型 |
String(1) |
是 |
Alipass添加对象识别类型:1–订单信息 |
1 |
recognition_info |
接受者身份信息 |
String(500) |
是 |
支付宝用户识别信息: |
{"partner_id":"2088102114633762","out_trade_no":"1234567"} |
tpl_params参数说明
动态参数是创建模板时声明的可被替换的数据(调用创建模板接口时返回),如:$cardNo$,如果创建模板时,channelID和serialNumber为动态参数,则创建卡券时要求必填;如果创建模板时,这2个字段为指定参数,则创建卡券时为非必填。此处cardNo是业务创建模板时指定的变量。
HTTPS请求地址:https://openapi.alipay.com/gateway.do
参数 | 参数名称 | 类型 | 必填 | 描述 | 范例 |
---|---|---|---|---|---|
app_id |
应用ID |
String(32) |
是 |
支付宝分配给开发者的应用ID |
2014072300007148 |
method |
接口名称 |
String(128) |
是 |
接口名称 |
alipay.pass.template.update |
format |
数据格式 |
String(40) |
否 |
仅支持JSON |
json |
charset |
编码格式 |
String(10) |
是 |
请求使用的编码格式,如UTF-8,GBK,GB2312等 |
UTF-8 |
sign_type |
签名方式 |
String(10) |
是 |
商户生成签名字符串所使用的签名算法类型,目前支持RSA |
RSA |
sign |
签名值 |
String(256) |
是 |
商户请求参数的签名串,详见签名与验签 |
详见示例 |
timestamp |
请求时间 |
String(19) |
是 |
发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" |
2014-07-24 03:07:50 |
version |
版本 |
String(3) |
是 |
调用的接口版本,固定为:1.0 |
1.0 |
app_auth_token |
授权令牌 |
String(40) |
否 |
详见第三方应用授权 |
|
HTTP请求源码示例
在创建模板接口示例完成模板创建的基础上,调用发放卡券接口,请求示例。
https://openapi.alipay.com/gateway.do?sign=rzVtT2%2F7LC2rpWIPkz74KhMa%2Fz7YG%2BiCrLtTh5cbMQszUE%2BZe9JYuwO1HWlREgn8CHVdVF7CuHBJI5GV4%2Frp57MzmpNpdOMXX6REm4KgIDBl1ZOEGlPxqUvwbkrTZSFN2Q62%2FcZHoG%2FVC8CD%2B1utl%2BFzx%2B78xecQIcwUGeAF%2BYk%3D×tamp=2015-06-24+20%3A37%3A44&sign_type=RSA&app_id=102014022600003526&method=alipay.pass.instance.add&version=1.0&alipay_sdk=alipay-sdk-java-dynamicVersionNo&format=json& biz_content={ "recognition_type": "1", "tpl_id": " 2016062810560547218925408 ", "recognition_info": { "partner_id": "2088102122069225", "out_trade_no": "1393388276383" }, "tpl_params": { "validStartDate": "2016-06-30 20:00:00", "validEndDate": "2016-07-30 20:00:00", "channelID": "102014022600003526", "discountInfo": "凭此券即可打8.5折", "logoText": "四季风情85折优惠券", "serialNumber": "4333673662446155" } }
支付宝用户收到发放的卡券,详情截图如下:
响应结果示例
{ "alipay_pass_instance_add_response": { "code": "10000", "msg": "Success", "result": "{\"passId\":\"5038200176\",\"serialNumber\":\"0336223063413266\",\" operate \":\" ADD \"}", "success": true }, "sign": "hAxz/ahsRObKHxo6d41OcfPyDVMJKaHC77Lp9+uE2ENV9w4tpBQKYim1D1ACPYq1ziN5532oEeBAbV6Wo6YNCRwFiMAKRGO8Fm5UOAHxfr4E35mb1gcihR31N25YLCD/k5fDPY1daezb57fPcq4zDiVAy49jd5gNcC9v85yEtck="
返回参数说明
名称 | 类型 | 是否列表类型 | 是否必须 | 示例值 | 描述 |
---|---|---|---|---|---|
success |
String |
否 |
必须 |
true |
操作成功标识【true:成功;false:失败】 |
result |
String |
否 |
必须 |
{"serialNumber":"123555123","passId":"209919213","operate":"ADD"} |
参见下面的“创建卡券实例信息参数说明” |
创建卡券实例信息参数说明
名称 | 类型 | 是否列表类型 | 是否必须 | 示例值 | 描述 |
---|---|---|---|---|---|
serialNumber |
String |
否 |
必须 |
123555123 |
商家指定的卡券唯一标识 |
passId |
String |
否 |
必须 |
209919213 |
卡包系统生成的卡券唯一标识 |
operate |
String |
否 |
必须 |
ADD |
操作类型 |
名称 | 描述 | 解决方案 |
---|---|---|
KP.AE_ALIPASS_TEMPLATE_NOT_FOUND |
模板不存在 |
检查tpl_id对应的模板是否存在 |
KP.AE_ALIPASS_USERID_NOSUPPORT |
该用户不支持 |
该用户在黑名单中,不支持发券 |
KP.AE_ALIPASS_APPID_NOSUPPORT |
该AppId不支持 |
该appId在黑名单中,不支持发券 |
KP.AE_ALIPASS_RECOGNITION_TYPE_NOSUPPORT |
recognitionType不支持userID方式发券 |
不支持userID方式发券 |
KP.AE_ALIPASS_RECOGNITION_TYPE_INVALID |
recognitionType不合法 |
recognitionType类型不合法 |
KP.AE_ALIPASS_PARAME_IS_NULL |
必填参数缺少 |
根据错误提示,补充必填参数 |
KP.AE_ALIPASS_PARAMS_FORMAT_ERROR |
格式错误。非json格式 |
检查json格式 |
KP.AE_ALIPASS_PARAMS_VALUE_INVAILD |
参数值不合法 |
根据错误提示修改 |
KP.AE_SYSTEM_ERROR |
保存失败 |
重试或联系技术支持 |
KP.AE_ALIPASS_REPEAT_ADD_ERROR |
卡券已经存在 |
重复添加,幂等控制 |
接口名称:alipay.pass.instance.update
接口描述:支付宝卡券更新接口
使用场景介绍:对于已经发布的卡券,商户可通过此接口进行更新,更新卡券接口包含三大主要功能:核销卡券、失效卡券、更新卡券样式内容。
核销卡券主要描述开发者如何将发放出去的卡券进行核销,使卡券在用户的支付宝客户端展示为已使用状态。对于支付宝卡券而言,核销操作只是将卡券状态变更为USED(已使用),用户客户端展示为已使用状态,未涉及资金流的核销。仅支持核销有效状态的卡券,若卡券处于卡券删除或者已转赠,不可进行核销操作。
核销卡券功能接口调用示例
在发放卡券接口示例,完成卡券发放的基础上,调用更新卡券接口,对卡券进行核销。
HTTP请求源码示例
https://openapi.alipay.com/gateway.do?sign=fNqP42dy3mgKGIBY20L9Ie2%2FOeVuZcw55Q7jzOFXxHyBDs3uDA4iZIwQLYyO10GARbCkPV%2BhRYdjnepQW7haTvnjuwuyghXdDUYwYADAYG5y0RvimDuQeYS%2BSKGqmEDYneapfWYZoP5acp7dxl7dkcK6byIaYloE5WFxj1RTmEY%3D×tamp=2015-06-24+21%3A09%3A20&sign_type=RSA&app_id=102014022600003526&method=alipay.pass.instance.update&version=1.0&alipay_sdk=alipay-sdk-java-dynamicVersionNo&format=json& biz_content={ "status": "USED", "verify_type": "wave", "channel_id": "102014022600003526", "serial_number": "4333673662446155", "verify_code": "1871236321871", "tpl_params":{"useStateDesc": "已使用"} }
调用更新卡券接口核销卡券之后,用户在支付宝客户端展示的卡券,将变成已使用状态,并且进入已失效列表。详情截图如下:
失效卡券主要描述开发者如何将发放出去的卡券进行作废,让卡券在用户的支付宝客户端消失的过程。
HTTP请求源码示例
https://openapi.alipay.com/gateway.do?sign=fNqP42dy3mgKGIBY20L9Ie2%2FOeVuZcw55Q7jzOFXxHyBDs3uDA4iZIwQLYyO10GARbCkPV%2BhRYdjnepQW7haTvnjuwuyghXdDUYwYADAYG5y0RvimDuQeYS%2BSKGqmEDYneapfWYZoP5acp7dxl7dkcK6byIaYloE5WFxj1RTmEY%3D×tamp=2015-06-24+21%3A09%3A20&sign_type=RSA&app_id=102014022600003526&method=alipay.pass.instance.update&version=1.0&alipay_sdk=alipay-sdk-java-dynamicVersionNo&format=json& biz_content={ "status": "CLOSED" "channel_id": "102014022600003526", "serial_number": "4333673662446155" }
更新卡券样式内容,包括内容、logo、背景图、样式等(要支持更新,必须在模板中将对应字段设置成可变参数)。
更新卡券内容功能接口调用示例
在发放卡券接口示例,完成卡券发放的基础上,调用更新卡券接口(更新优惠描述信息和logoText),对卡券进行更新。
HTTP请求源码示例
https://openapi.alipay.com/gateway.do?sign=fNqP42dy3mgKGIBY20L9Ie2%2FOeVuZcw55Q7jzOFXxHyBDs3uDA4iZIwQLYyO10GARbCkPV%2BhRYdjnepQW7haTvnjuwuyghXdDUYwYADAYG5y0RvimDuQeYS%2BSKGqmEDYneapfWYZoP5acp7dxl7dkcK6byIaYloE5WFxj1RTmEY%3D×tamp=2015-06-24+21%3A09%3A20&sign_type=RSA&app_id=102014022600003526&method=alipay.pass.instance.update&version=1.0&alipay_sdk=alipay-sdk-java-dynamicVersionNo&format=json& biz_content={ "channel_id": "102014022600003526", "serial_number": "4333673662446155", "tpl_params":{"discountInfo": "凭此券即可打5折","logoText": "四季风情5折优惠券"} }
支付宝用户卡券详情截图如下:
业务主体参数(biz_content)
参数 | 参数名称 | 类型 | 必填 | 描述 | 范例 |
---|---|---|---|---|---|
serial_number |
卡券序列号 |
String(256) |
是 |
商户指定卡券唯一值 |
209919213 |
channel_id |
商户ID |
String(32) |
是 |
代理商代替商户发放卡券后,再代替商户更新卡券时,此值为商户的pid/appid |
208891827377109 |
tpl_params |
变量键值对 |
String(38000) |
否 |
模版动态参数信息【支付宝pass模版参数键值对JSON字符串】 |
{"title":"xxx会员卡","startDate":"2014-04-10 10:00:00"} |
status |
更新的状态 |
String(10) |
否 |
券状态,支持更新为USED、CLOSED两种状态 tpl_params和status必填其一 |
USED |
verify_code |
核销码 |
String(30) |
否 |
核销码串值【当状态变更为USED时,建议传】 |
8612231273 |
verify_type |
核销方式 |
String(2) |
否 |
核销方式,目前支持:wave(声波方式)、qrcode(二维码方式)、barcode(条码方式)、input(文本方式,即手工输入方式)。pass和verify_type不能同时为空 |
wave |
HTTPS请求地址:https://openapi.alipay.com/gateway.do
参数 | 参数名称 | 类型 | 必填 | 描述 | 范例 |
---|---|---|---|---|---|
app_id |
应用ID |
String(32) |
是 |
支付宝分配给开发者的应用ID |
2014072300007148 |
method |
接口名称 |
String(128) |
是 |
接口名称 |
alipay.pass.template.update |
format |
数据格式 |
String(40) |
否 |
仅支持JSON |
json |
charset |
编码格式 |
String(10) |
是 |
请求使用的编码格式,如UTF-8,GBK,GB2312等 |
UTF-8 |
sign_type |
签名方式 |
String(10) |
是 |
商户生成签名字符串所使用的签名算法类型,目前支持RSA |
RSA |
sign |
签名值 |
String(256) |
是 |
商户请求参数的签名串,详见签名与验签 |
详见示例 |
timestamp |
请求时间 |
String(19) |
是 |
发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" |
2014-07-24 03:07:50 |
version |
版本 |
String(3) |
是 |
调用的接口版本,固定为:1.0 |
1.0 |
app_auth_token |
授权令牌 |
String(40) |
否 |
详见应用授权 |
|
响应结果示例
{ "alipay_pass_instance_add_response": { "code": "10000", "msg": "Success", "result": "{ \"serialNumber\":\"1550547540752564\",\"operate\":\"UPDATE\"}", "success": true }, "sign": "hAxz/ahsRObKHxo6d41OcfPyDVMJKaHC77Lp9+uE2ENV9w4tpBQKYim1D1ACPYq1ziN5532oEeBAbV6Wo6YNCRwFiMAKRGO8Fm5UOAHxfr4E35mb1gcihR31N25YLCD/k5fDPY1daezb57fPcq4zDiVAy49jd5gNcC9v85yEtck="
返回参数说明
名称 | 类型 | 是否列表类型 | 是否必须 | 示例值 | 描述 |
---|---|---|---|---|---|
success |
String |
否 |
必须 |
true |
操作成功标识【true:成功;false:失败】 |
result |
String |
否 |
必须 |
{"pass_id":"989901","serialNumber":"209919213","operate":"UPDATE"} |
参见下面的“更新卡券实例信息参数说明” |
更新卡券实例信息参数说明
名称 | 类型 | 是否列表类型 | 是否必须 | 示例值 | 描述 |
---|---|---|---|---|---|
serialNumber |
String |
否 |
必须 |
123555123 |
商家指定的卡券唯一标识 |
operate |
String |
否 |
必须 |
UPDATE |
操作类型 |
名称 | 描述 | 解决方案 |
---|---|---|
KP.AE_ALIPASS_PARAMS_FORMAT_ERROR |
格式错误,非json格式 |
检查json格式 |
KP.AE_MOBILE_ALIPASS_NOTEXIST |
alipass券不存在 |
检查serialNumber,channelID组合是否存在 |
KP.AE_ALIPASS_PARAMS_VALUE_INVAILD |
参数值不合法 |
根据错误提示修改 |
KP.AE_ALIPASS_PARAME_IS_NULL |
必填参数缺少 |
根据错误提示,补充必填参数 |
KP.AE_ALIPASS_UPDATE_ERROR |
更新失败 |
重试或联系技术支持 |
KP.AE_SYSTEM_ERROR |
系统错误 |
重试或联系技术支持 |
KP.AE_ALIPASS_PARAMS_FORMAT_ERROR |
格式错误。非json格式 |
检查json格式 |
KP.AE_MOBILE_ALIPASS_NOTEXIST |
alipass券不存在 |
检查serialNumber,channelID组合是否存在 |
KP.AE_ALIPASS_PARAMS_VALUE_INVAILD |
参数值不合法 |
根据错误提示修改 |