在调用JS-SDK添加微信卡券的时候,发现相同的一个卡券,在重复进入领取页面的时候,会报不同的错,一些是签名错误,一些就是灰色,不给选择。
在调用微信卡券的签名校验工具后发现,所有的数据包括签名都是正确的。
查看微信文档时发现微信官方提供的签名说明如下:
查看参与签名的值后发现,比较有可能的是nonce_str的问题,因为这个数是非必填的。
由于是一个32位的长度,因此这边是直接采用的字符化后的GUID,按理是符合微信的要求的。
在查看小程序的文档中发现卡券的添加示例参数如下:
在示例数据里面是没有这个nonce_str参数的,那就很有可能就是这个参数的问题。
后面将这个参数去掉之后,签名错误的情况就没有出现了。每次都能顺利进入领取页面,而且领取是正常的。
这个nonce_str参数是使用了GUID的字符串,难道是因为以数字开头的导致出错了,而字母开头的就不会报错?暂时没做核查,后面有空再校对一下。