收藏
回答

wx.addCard一直报签名错误

这个问题折腾了两天了,搜了很多网友的解决方法,以及按照签名排错文档中的提示逐一排查,然而并没有什么用,下面将我的环境和遇到的签名问题描述一下。

  1. 我的公众号和小程序均已认证,同时使用工作号的appid 获取token 和api_ticket 并且做了缓存。

    https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}

    https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=wx_card

  2. 前目排序如下:

    var perpare = string.Format("{0}{1}{2}{3}", api_ticket,  timestamp.ToString(), nonce_str,cardid );

    这个是参照调试工具的排序方法,官方文档说的字典排序,可是我用字典排序,排序的结果跟调试工具完全不一样。

  3. 签名后的结果与调试工具一直。

    cardExt 字符串拼装如下:

    var cards =[{
           cardId: me.data.cardId,
           cardExt: '{"timestamp":' + res.data.timestamp + ',"signature":"' + res.data.signature +  '", "nonce_str":"' + res.data.nonceStr + '"}'
         }];
    输出结果

  4. 输出结果如下:

  5. {
    cardExt:"{"timestamp":1547435004,"signature":"bf50d6cef45d43137e0494b9a299b59d569a84b0", "nonce_str":"313d0cc5af004275845f15f1c7b40e9d"}",
    cardId:"p18KQ55QuuWfC9NxcM2yKBGAKUbk"
    }

我实在是没辙了,所以发帖求助,如能解决万分感谢。


最后一次编辑于  2019-01-14
回答关注问题邀请回答
收藏

3 个回答

  • 稻草人
    稻草人
    2019-01-14

    问题解决了,原来是排序问题 正确的字符串排序应该是

    var perpare = string.Format("{0}{1}{2}{3}", timestamp, nonce_str,api_ticket, cardid );

    另外小程序端 字符串 拼接应该是:

    cardExt: '{"timestamp":' + res.data.timestamp + ',"signature":"' + res.data.signature +  '", "nonce_str":"' + res.data.nonceStr + '"}'

    注意 timestamp不能 有引号。

    2019-01-14
    有用 2
    回复
  • 鱼鱼阿侬
    鱼鱼阿侬
    2022-02-28

    非常感谢哈哈哈,我这里是cardId填写有错误

    2022-02-28
    有用
    回复
  • 于召洋
    于召洋
    发表于移动端
    2020-10-03
    1402
    2020-10-03
    有用
    回复
登录 后发表内容