卡券签名错误排查方法

若开发者在调用addcard接口遇到签名错误时,请按照以下步骤排查错误: 

Step1. 检验签名算法是否正确,开发者可以使用Chrome打开卡券签名调试工具,开发者也可以参考JS-SDK Demo中卡券的签名写法,

参见:示例代码和JS-SDK Demo

 

Step2.检查CardExt内的参数是否正确

   -检查是否存在自定义code码的card_id没有在cardext内传入code参数,或者非自定义code模式的卡券传入了code参数,这两种情况都可能导致参数错误或者签名错误;

  -检查是否存在bind_openid为true的card_id没有在cardext内传入openid参数,或者bind_openid为false的card_id的卡券传入了openid参数,这两种情况都可能导致参数错误或者签名错误;

  -检查是否在cardext内传入了A、B、C、D四个参数,但是签名时却使用了A、B、C三个参数或者使用了A、B、C、D、E五个参数,这种情况一定会出现签名错误;

 

Step3.检查ticket是否正确/有效  

   -检查获取当前ticekt的appid是否为创建card_id的appid;

   -检查获取当前ticket的接口是否正确,确认获取的ticket的type类型是type=wx_card;

   -检查ticket是否过期/无效;

 

Addcard接口常见错误以及原因: 

领取页面提示 错误原因 修改方法

已领完(addcard)

当前卡券无库存 调用增加库存接口增加库存
addcard接口内cardext参数
内nonce_Str和timestamp值重复
保证不同的请求中cardext参数内
nonce_Str和timestamp值重复
自定义code不能实时下发 js拉起领取页面时code无法实时下发

参数错误(addcard)

cardext参数与card_id属性不对其 开发者须先查询card_id详情,重点关注是否使用
自定义code、是否绑定openid、是否是导入code模式
自定义code的卡券在cardext须填入code字段,参与签名;
绑定openid的卡券须传入openid字段
code超长或格式错误 检查code参数是否超过20位或含特殊字符

签名错误(addcard)

签名算法错误 使用http://mp.weixin.qq.com/debug
/cgi-bin/sandbox?t=cardsign工具校验签名算法
ticket错误 确认使用的ticket是卡券api_ticket而不是jsapi_ticket
且在有效期内
cardext内参数与参与签名参数不对齐 cardext内若填入了需要参与签名的参数,须在签
名算法中也将字段计入签名
cardext参数格式错误 cardext本身是一个字符串不是object对象,若格式
错误iOS系统会提示签名错误

拉取卡券列表为空
(choosecard)

签名错误 拉起卡券列表传入的signature字段有误,或者参与签名的
参数与接口传入的参数不对齐
筛选条件错误 筛选条件中传入了shopid或者card_type,但是实际没有对应
门店或者卡类型的卡券

请仔细阅读

官方文档:https://mp.weixin.qq.com/s/WhYpWmfuhUBw2wseTXdt2A

posted @ 2018-05-05 03:11  伏允坤  阅读(2735)  评论(0编辑  收藏  举报