微信公众号卡券签名错误
发布于 4 年前 作者 zhugang 806 次浏览 来自 分享

错误原因:生成signature的timestamp精确到了毫秒

修复方式:将生成signature的timestamp精确到秒

前提:

1、使用微信公众号创建了卡券模板、生成api_ticket(type=wx_card)、生成签名;

2、前端页面使用了以上公众号获取签名验证。

报错如下所示:

当时的微信文档如下:

由于我在创建卡券时指定了"use_custom_code":false,“bind_openid”: false,所有以上的code和openid都没有参与签名,timestamp以当前时间戳(精确到毫秒,这里给自己挖了一个坑,就是因为这个一直报错“签名错误”。这里一定要精确到秒!!!)

参与生成signature的字段:

card_id(不参与cardExt)、timestamp(当前时间毫秒值/1000)、nonce_str(32位随机字符串)、api_ticket(https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card

最终的请求格式(注意cardExt的字符串形式):

wx.addCard({
  cardList: [
    {
      cardId: 'yyyyyyy',
      cardExt: '{"timestamp": "1234567", "nonce_str": "zzzzzz", "signature":"xxxxxxx"}'
    }, {
      cardId: 'yyyyyyy',
      cardExt: '{"timestamp": "1234567", "nonce_str": "zzzzzz", "signature":"xxxxxxx"}'
    }
  ],
  success (res) {
    console.log(res.cardList) // 卡券添加结果
  }
})
回到顶部