若开发者在调用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,但是实际没有对应

门店或者卡类型的卡券