收藏
回答

微信支付接口签名校验通过,却一直提示签名错误?

原先微信支付签名加密一直使用默认的MD5加密,可以正常使用,后来因安全问题,单位要求改成HMAC-SHA256加密,现在问题是用微信支付接口签名校验工具(https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1)可以校验通过,支付时却一直报签名错误,调试了两天了,也在网上搜索各种解决办法都无效,现在没试的就是改商户Key,这个不能改,因为很多个小程序使用的是同一个Key,改了其它都没法用了,实在是不知道怎么回事了,只能发贴求助下。

签名类型:

校验通过:

签名错误:

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

4 个回答

  • 微信支付技术助手1
    微信支付技术助手1
    11-18

    仔细检查参数,核对参数没有问题。注意大小写,转义。还有编码。不要造成乱码。

    11-18
    赞同
    回复
  • Kenen.Gao
    Kenen.Gao
    11-27

    我的是用默认MD5,校验是正确的,但是返回的是签名参数错误,怎么解决

    11-27
    赞同
    回复 1
    • 红萝卜炒鸡蛋
      红萝卜炒鸡蛋
      11-27
      签名参数排序查一下。
      11-27
      回复
  • 红萝卜炒鸡蛋
    红萝卜炒鸡蛋
    11-18

    我本来也是觉的应该是参数的问题,但参数用MD5就没问题,现在线上的用MD5还没替换呢。。。真是邪门了

    顺便吐槽下:这后台错误信息反馈的太笼统了,就不会指出具体是哪一条哪个参数有问题吗?

    11-18
    赞同
    回复
  • Hanks🇨🇳
    Hanks🇨🇳
    11-18

    参数问题,key应该没有问题,只是你传参签名有问题,仔细debug检查检查吧

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