title: 卡券 header: develop nav: api

sidebar: cardticket

接口目录

  1. 创建卡券
    1.1 步骤一:选取卡券背景色 1.2 步骤二:选择卡券类型并创建卡券
    1.2.1卡券基础信息字段(重要) 1.3 步骤三:上传Code码 1.4 步骤四:上传卡券Banner图(可选) 1.4.1 Banner创建 1.4.2 Banner修改 1.4.3 Banner删除 1.4.4 Banner详情查询 1.4.5 Banner列表批量查询

  2. 领券事件推送

  3. 跳转协议带参数 3.1 获取参数 3.2 解密参数

  4. 核销同步

  5. 管理卡券 5.1 查看卡券详情 5.2 批量查询卡券列表 5.3 删除卡券

百度卡券

小程序为开发者提供接入百度卡券的免费接口,接入后可在百度多种运营资源进行投放,同时发放的优惠券统一进入用户的「卡券包」查看和管理,并引导用户直达商家小程序浏览及购买商品。 图片

用户在百度领券流程概述: 1) 用户在百度卡券包等运营资源位上领券; 2) 百度记录用户的领取记录,返回用户领券成功; 3) 通过领券事件推送(异部通知)和跳转协议带参数两种途径,告知开发者用户的领取记录; 注意:开发者收到后需为用户下发真实优惠券;

前提条件

  1. 已完成开发者入驻和小程序创建
  2. 已使用百度官方提供的登录能力
  3. 开发者业务有优惠券功能,具备发券-核销能力。百度智能小程序仅作为平台投放、券的统一展示、集中管理。如,个人中心有我的优惠券/礼券/卡券等,用户可查看可使用。

1. 创建卡券

开发步骤

图片

明确卡券ID与Code码的区别

创建卡券成功后获取百度分配的卡券ID,一个卡券ID代表一类卡券,包含相应库存数量的Code码。

例如: 创建100元代金券,获取一个卡券ID(couponId)用于投放,并需开发者上传对应业务的Code码,根据上传Code码的数量,百度设置库存100万。 用户A,领取到商户投放的50元代金券时,券面上会有一个唯一的标识码,即Code码。每个用户的Code码都不相同,所以卡券发放时,百度将会派发100万个不同的Code码给用户。

字段示意图

图片

1.1 步骤一:选取卡券背景色

目前百度提供包括以上16种色值供开发者使用,选择适用的背景色,将背景色名称(如B010)填入color字段。 图片

背景色名称 背景色值
B010 #9857AE
B020 #5854BE
B030 #487FCC
B040 #288DAF
B050 #28915E
B060 #449045
B070 #95B250
B080 #B82C28
B090 #B85029
B100 #B76229
B110 #B87029
B120 #B48228
B130 #B89028
B140 #C5AE34
B150 #282828
B160 #5F6062

1.2 步骤二:选择卡券类型并创建卡券

百度提供以下3种卡券类型,1-代金券,2-折扣券,3-通用优惠券。

开发者须知

1) 一个小程序内全部卡券的callbackUrl需为同一个;

2) description 字段传入文本格式支持富文本标签,如使用<br>换行;

3) 卡券管理当前不提供更新卡券接口,如有更新需求,需重新创建卡券。

接口地址
  1. HTTP请求方式 POST/application-json https://openapi.baidu.com/rest/2.0/smartapp/v1.0/coupon/create?access_token=ACCESS_TOKEN
请求参数
参数 说明
access_token 调用接口凭证
POST数据 Json结构
POST数据示例
  1. {
  2. "couponType":"DISCOUNT",
  3. "discount":30,
  4. "leastCost":100,
  5. "reduceCost":10,
  6. "baseInfo":{
  7. "title":"卡券标题",
  8. "color":"B080",
  9. "getLimit":3,
  10. "dateInfo":{
  11. "getStartTimestamp":1574952776,
  12. "getEndTimestamp":1577544776,
  13. "type":1,
  14. "beginTimestamp":1574952776,
  15. "endTimestamp":1577544776,
  16. "timeUnit":1,
  17. "timeValue":22
  18. },
  19. "appRedirectPath": "/pages/index/index"
  20. }
  21. "description":"使用描述",
  22. "callbackUrl":"卡券事件回调地址"
  23. }
返回示例
  1. {
  2. "errno":0,
  3. "msg":"success",
  4. "data":{
  5. "couponId":"xxxx"
  6. }
  7. }
1- 代金券
参数 是否必传 类型 示例值 描述
couponType String CASH 卡券类型
leastCost Long 1000 表示可使用的门槛金额(单位为分),不传默认为0,即无起用门槛。
reduceCost Long 500 代金券专用,表示减免金额(单位为分)。
baseInfo JSON结构 见下面示例 基本的卡券数据,见下表,所有卡券通用。
description String 打开小程序,①在个人中心-我的礼券可查看;②下单时选择该优惠券 使用须知:卡券使用方法的介绍
callbackUrl String 卡券领取事件推送地址
  1. {
  2. "couponType":"CASH",
  3. "leastCost":100,
  4. "reduceCost":50,
  5. "baseInfo":{
  6. ················
  7. },
  8. "description":"使用描述",
  9. "callbackUrl":"卡券事件回调地址"
  10. }
2- 折扣券
参数 是否必传 类型 示例值 描述
couponType String DISCOUNT 卡券类型
discount Int 80 折扣券专用,表示打折力度(格式为百分比),填80就是八折。
baseInfo JSON结构 见下面示例 基本的卡券数据,见下表,所有卡券通用。
description String 打开小程序,①在个人中心-我的礼券可查看;②下单时选择该优惠券 使用须知:卡券使用方法的介绍
callbackUrl String 卡券领取事件推送地址
  1. {
  2. "couponType":"DISCOUNT",
  3. "discount":80,
  4. "baseInfo":{
  5. ················
  6. },
  7. "description":"使用描述",
  8. "callbackUrl":"卡券事件回调地址"
  9. }
3- 通用优惠券
参数 是否必传 类型 示例值 描述
couponType String GENERAL 卡券类型,当以上卡券类型无法满足时,可使用通用优惠券类型
baseInfo JSON结构 见下面示例 基本的卡券数据,见下表,所有卡券通用。
description String 打开小程序,①在个人中心-我的礼券可查看;②下单时选择该优惠券 使用须知:卡券使用方法的介绍
callbackUrl String 卡券领取事件推送地址
  1. {
  2. "couponType":"GENERAL",
  3. "baseInfo":{
  4. ················
  5. }
  6. "description":"使用描述",
  7. "callbackUrl":"卡券事件回调地址"
  8. }

1.2.1卡券基础信息字段(重要)

参数 是否必传 类型 示例值 描述
title String 当当图书20元立减金 优惠券名称,不能超出10个字
color String B010 卡券背景色,支持范围: [B010 ~ B160]
dateInfo JSON结构 见上述示例 使用日期,有效期的信息。
type Integer 1 券使用时间类型:1:开发者设置使用开始和结束时间;2:领取之后,多久可使用;当类型为1时,beginTimestamp和endTimestamp必传;当类型为2时,timeUnit和timeValue必传
beginTimestamp Long 1574952776 使用开始时间,当type为1时,beginTimestamp必传且生效;
endTimestamp Long 1577544776 使用结束时间,当type为1时,endTimestamp必传且生效;
timeUnit Integer 2 时间单位:1-时;2-天;3-月;当type为2时,timeUnit必传且生效;
timeValue Integer 30 时间值;当type为2时,timeValue必传且生效;
getStartTimestamp Long 1574952776 开始领取时间
getEndTimestamp Long 1577544776 结束领取时间
getLimit Integer 2 每人领取次数限制
appRedirectPath String pages/index/index 已领取的卡券,从详情頁点击「立即使用」打开小程序页面地址,不传默认打开首页
callbackUrl String 卡券领取事件推送地址

1.3 步骤三:上传Code码

接口地址
  1. HTTP请求方式 POST/form https://openapi.baidu.com/rest/2.0/smartapp/v1.0/coupon/code/batchUpload?access_token=ACCESS_TOKEN
请求参数
参数 说明 类型 是否必传 备注
couponId 卡券ID String
couponCodes 卡券Code码列表 String 使用,隔开,最多传100
返回示例
  1. {
  2. "errno": 0,
  3. "msg": "success",
  4. "data": {
  5. "successNum":5,
  6. "failNum":2 //重复导入的code会忽略
  7. }
  8. }

1.4 步骤四:上传卡券Banner

上传图片接口

为了保证开发者的卡券在用户的能快速、稳定地加载出图片素材,我们强烈建议开发者将卡券素材先调用接口导入百度服务器。 开发者需调用该接口上传商户图标至百度服务器,获取相应picUrl(卡券Banner图片)。请求参数为file,上传图片后,获取返回url。

开发者须知: 1) 图片尺寸:1032* 144px; 2) 当前一个卡券ID仅支持创建一个Banner;

请求地址
  1. HTTP请求方式 POST/form-data https://openapi.baidu.com/file/2.0/smartapp/v1.0/coupon/upload/image?access_token=ACCESS_TOKEN
返回示例
  1. {
  2. "errno": 0,
  3. "msg": "success",
  4. "data": {
  5. "url": "https://b.bdstatic.com/searchbox/mappconsole/image/20191128/8d382c36-2b85-4f2c-b6d1-0d6afbc04dc8.png"
  6. }
  7. }

1.4.1 Banner创建

请求地址
  1. HTTP请求方式 POST/application-json https://openapi.baidu.com/rest/2.0/smartapp/v1.0/coupon/banner/add?access_token=ACCESS_TOKEN
请求参数
参数 说明
access_token 调用接口凭证
POST数据 Json数据
POST数据示例
  1. {
  2. "couponId":"xxx",
  3. "picUrl":"/index/index",
  4. "title":"卡券标题",
  5. "appRedirectPath":"跳转的小程序页面路径"
  6. }
参数 说明 类型 是否必传
couponId 卡券ID String
picUrl 卡券banner图片 String
title 卡券banner图标题 String
appRedirectPath banner图跳转的小程序页面路径 String
返回示例
  1. {
  2. "errno": 0,
  3. "msg": "success",
  4. "data": {
  5. "bannerId": 23830865
  6. }
  7. }

1.4.2 Banner修改

请求地址
  1. HTTP请求方式 POST/application-json https://openapi.baidu.com/rest/2.0/smartapp/v1.0/coupon/banner/update?access_token=ACCESS_TOKEN
请求参数
参数 说明
access_token 调用接口凭证
POST数据 Json数据
POST数据示例
  1. {
  2. "bannerId":"bannerId",
  3. "couponId":"xxx",
  4. "picUrl":"www.baidu.com",
  5. "title":"标题",
  6. "appRedirectPath":"跳转小程序页面路径"
  7. }
参数说明
参数 说明 类型 是否必传
couponId 卡券ID String
bannerId 卡券banner记录id Long
picUrl 卡券banner图片 String
title 卡券banner图标题 String
appRedirectPath banner图跳转的小程序页面路径 String
返回示例
  1. {
  2. "errno": 0,
  3. "msg": "success",
  4. "data": true
  5. }

1.4.3 Banner删除

请求地址
  1. HTTP请求方式 POST/form https://openapi.baidu.com/rest/2.0/smartapp/v1.0/coupon/banner/delete?access_token=ACCESS_TOKEN
请求参数
参数 说明 类型 是否必传
couponId 卡券ID String
bannerId 卡券banner记录id Long
返回示例
  1. {
  2. "errno": 0,
  3. "msg": "success",
  4. "data": true
  5. }

1.4.4 Banner详情查询

请求地址
  1. HTTP请求方式 GET https://openapi.baidu.com/rest/2.0/smartapp/v1.0/coupon/banner/get?access_token=ACCESS_TOKEN
请求参数
参数 说明 类型 是否必传 备注
couponId 卡券ID String
bannerIds 卡券banner记录id Long ,分隔多个bannerId ,最大值限制20
返回示例
  1. {
  2. "errno": 0,
  3. "msg": "success",
  4. "data": [
  5. {
  6. "bannerId": 23830865,
  7. "couponId": "23830866",
  8. "title": "titletest",
  9. "picUrl": "picUrlTest",
  10. "appRedirectPath": "destUrlTest",
  11. "createTime": 1574396789,
  12. "updateTime": 1574396788
  13. }
  14. ]
  15. }

1.4.5 Banner列表批量查询

请求地址
  1. HTTP请求方式 GET https://openapi.baidu.com/rest/2.0/smartapp/v1.0/coupon/banner/batchGet?access_token=ACCESS_TOKEN
请求参数
参数 说明 类型 是否必传 默认值
couponId 券id String
picUrl 卡券图片推广图链接地址 String
title 卡券图片推广图标题 String
pageNum 页码,默认值为: 0 Integer 1
pageSize 页大小,默认值为: 20 Integer 20
返回示例
  1. {
  2. "errno": 0,
  3. "msg": "success",
  4. "data": {
  5. "pageNo": 1,
  6. "total": 1,
  7. "dataList": [
  8. {
  9. "bannerId": 23830865,
  10. "couponId": "23830866",
  11. "title": "titletest",
  12. "picUrl": "picUrlTest",
  13. "appRedirectPath": "destUrlTest",
  14. "createTime": 1574396789,
  15. "updateTime": 1574396788
  16. }
  17. ]
  18. }
  19. }

2 领券事件推送

卡券被用户领取会触发事件推送,该事件将发送至开发者填写的卡券回调地址callbackUrl

百度服务器在3秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。 关于重试的消息排重,推荐使用FromUserName + CreateTime 排重。 假如服务器无法保证在3秒内处理并回复,可以直接回复空串,百度服务器不会对此作任何处理,并且不会发起重试。

开发者服务器收到请求必须做出下述回复:

1.直接回复success(推荐方式) 2.直接回复空串

用户在领取卡券时,百度会把这个事件推送到开发者填写的callbackUrl

推送示例

  1. {
  2. "ToUserName":"app_id",
  3. "FromUserName":"open_id",
  4. "CreateTime":"1472551036",
  5. "MsgType":"event",
  6. "Event":"user_get_coupon",
  7. "CouponId":"pZI8Fjwsy5fVPRBeD78J4RmqVvBc",
  8. "UserCouponCode":"226009850808",
  9. "CouponTakeId":"xxxxx"
  10. }

参数说明

参数 说明
ToUserName 开发者app_id
FromUserName 领券用户的OpenID
CreateTime 消息创建时间 (整型)
MsgType 消息类型,event
Event 事件类型,user_get_coupon(用户领取卡券)
CouponId 卡券ID
UserCouponCode 卡券Code码
CouponTakeId 卡券领取标识,调用核销同步接口时必传

3. 跳转协议带参数

用户从百度卡券包卡券详情点击「立即使用」时,跳转打开开发者小程序的跳转协议路径页面地址,同时带上该券的领券参数coupon,开发者拿到参数后,对参数进行解密,可以获取到该用户的领券信息。

注意事项:coupon为加密信息,需要使用小程序App Secret (智能小程序密匙)进行解密(小程序开发者平台:设置->开发设置->开发者ID(App Secret (智能小程序密匙)))

图片

3.1 获取参数

开发者需在卡券详情页点击立即使用跳转的页面上,通过 onShow() 获取当前页面路径中的coupon参数;

开发者须知 若点击「立即使用」 加密信息传递,注意需要在小程序app.js文件中增加onShow能力开发;

代码示例(放在app.js中)
  1. onShow(event) {
  2. let extraData = event.referrerInfo.extraData;
  3. let coupon = extraData.coupon;
  4. swan.showModal({
  5. title: '提示' + coupon,
  6. });
  7. }

3.2 解密参数

coupon参数进行解密,获取到用户的领券信息,为用户发券;

使用小程序App Secret (智能小程序密匙)进行解密(小程序开发者平台:设置->开发设置->开发者ID(App Secret (智能小程序密匙))

解密结果说明
  1. {"open_id":"xxx","coupon_id":"xxx","coupon_code":"xxx","app_key":"xxx","coupon_take_id":"xxx"}
参数说明
参数 是否必须 说明
open_id 用户openId
coupon_id 卡券ID
coupon_code 卡券Code码,小程序开发者创建时上传的Code码
app_key 小程序appKey
coupon_take_id 卡券领取标识,调用核销同步接口时必传

4. 核销同步

用户用券环节在开发者小程序内完成,开发者服务器核销掉该卡券后,需调用核销同步接口,同步至百度服务器。

消耗code接口是核销卡券的唯一接口,开发者可以调用当前接口将用户的优惠券进行核销,该过程不可逆。

接口请求说明
  1. HTTP请求方式 POST/form https://openapi.baidu.com/rest/2.0/smartapp/v1.0/coupon/code/consume?access_token=ACCESS_TOKEN
请求参数
参数 说明 类型 是否必传
couponId 卡券ID String
couponTakeId 百度分配的用户领取id Long
couponCode 劵码 String
openId 用户id string

返回示例

  1. {
  2. "errno": 0,
  3. "msg": "success",
  4. "data": true
  5. }

5. 管理卡券

5.1 查看卡券详情

请求地址
  1. HTTP请求方式 GET https://openapi.baidu.com/rest/2.0/smartapp/v1.0/coupon/get?access_token=ACCESS_TOKEN
请求参数
参数 说明 类型 是否必传
couponId 卡券ID String
请求参数
  1. {
  2. "errno":0,
  3. "msg":"success",
  4. "data":{
  5. "couponId":"xxxx",
  6. "couponType":"DISCOUNT",
  7. "discount":30,
  8. "baseInfo":{
  9. "title":"卡券标题",
  10. "color":"B10",
  11. "getLimit":3,
  12. "dateInfo":{
  13. "getStartTimestamp":1574952776,
  14. "getEndTimestamp":1577544776,
  15. "type":1,
  16. "beginTimestamp":1574952776,
  17. "endTimestamp":1577544776,
  18. "timeUnit":1,
  19. "timeValue":22
  20. }
  21. },
  22. "description":"使用描述",
  23. "callbackUrl":"卡券事件回调地址"
  24. }
  25. }

5.2 批量查询卡券列表

接口描述:批量查询卡券接口。

请求地址:
  1. HTTP请求方式 GET https://openapi.baidu.com/rest/2.0/smartapp/v1.0/coupon/batchGet?access_token=ACCESS_TOKEN
参数 说明 类型 是否必传 默认值
title 券名称 String
couponType 券类型 String
pageNum 页码,默认值为: 0 Integer 0
pageSize 页大小,默认值为: 20 Integer 20
返回示例
  1. {
  2. "errno":0,
  3. "msg":"success",
  4. "data":{
  5. "pageNo":1,
  6. "total":3,
  7. "dataList":[
  8. {
  9. "couponType":"DISCOUNT",
  10. "discount":30,
  11. "baseInfo":{
  12. "title":"卡券标题",
  13. "color":"B10",
  14. "getLimit":3,
  15. "dateInfo":{
  16. "getStartTimestamp":1574952776,
  17. "getEndTimestamp":1577544776,
  18. "type":1,
  19. "beginTimestamp":1574952776,
  20. "endTimestamp":1577544776,
  21. "timeUnit":1,
  22. "timeValue":22
  23. }
  24. },
  25. "description":"使用描述",
  26. "callbackUrl":"卡券事件回调地址"
  27. }
  28. ]
  29. }
  30. }

5.3 删除卡券

请求地址
  1. HTTP请求方式 POST/form https://openapi.baidu.com/rest/2.0/smartapp/v1.0/coupon/delete?access_token=ACCESS_TOKEN
请求参数
参数 说明 类型 是否必传
couponId 卡券ID String
返回示例
  1. {
  2. "errno": 0,
  3. "msg": "success",
  4. "data": true
  5. }