收藏
回答

统一下单接口签名位数问题

原先微信支付签名加密一直使用默认的MD5加密,可以正常使用,后来因安全问题,单位要求改成HMAC-SHA256加密,现在问题是用微信支付接口签名校验工具(https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1)可以校验通过,支付时却一直报签名错误,调试几天都找不到原因,后来再去仔细看了下统一下单的接口说明(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1),发现了问题所在,签名字段长度为32,原先使用MD5算法时计算出来的签名长度是32位,一直使用没问题,改成HMAC-SHA256算法后计算出来的签名长度是64位,超过字段长度限制了,所以一直报“签名错误”,我不知道这是接口本身就不能使用HMAC-SHA256签名(虽然文档写着支持),还是我自己的算法问题,但我在网上在线HMAC-SHA256加密计算出来的也都是64位,如果不支持,希望管理员能给个明确的回复,以便我回复单位目前只支持MD5加密算法,如果支持,能不能提供一个例子(或一小段代码)以便我们参考。


最后一次编辑于  11-20
回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员-小柿子
    社区技术运营专员-小柿子
    11-25

    支付、卡券相关的问题请移步至微信支付专区https://developers.weixin.qq.com/community/pay提问,我们会有对应同学来处理,此贴先隐藏,请重新发帖咨询。

    11-25
    赞同
    回复 1
    • 红萝卜炒鸡蛋
      红萝卜炒鸡蛋
      11-27
      花了好几天时间挖坑,终于搞定HMAC-SHA256签名,可以使用,这里面有个坑,用默认的MD5时,签名里无需加入sign_type字段就可以验证通过,改成HMAC-SHA256后需加入sign_type,并且要注意参数名称排序顺序,后面的pay_sign也一样。我改的程序之前是别人开发的,我中间接进去将原先的MD5改成HMAC-SHA256,根本就不会去想签名参数少了,以为原先MD5可以了应该参数都没问题的,哎。。。这个参数为什么不直接搞成必须填的呢?为了省这一个参数,挖了一个好大的坑,我估计很多人都被这坑坑惨了!
      11-27
      回复
  • 红萝卜炒鸡蛋
    红萝卜炒鸡蛋
    11-21

    没人知道吗?

    11-21
    赞同
    回复 1
    • 红萝卜炒鸡蛋
      红萝卜炒鸡蛋
      11-25
      5天了。。。还是没人回答。。。每天邀请两人,私信管理员都没回应。。。这个社区就如一潭死水。。。
      11-25
      回复