收藏
回答

应答的微信支付签名验证失败

获取特约商户授权状态使用官网的sdk调用该接口,结果是正常,但在SDK中校验签名时候报错:“应答的微信支付签名验证失败”。

检查后发现请求的证书序列号和响应报文中header中的 `Wechatpay-Serial`不一致?

请问怎么解决?


回答关注问题邀请回答
收藏

7 个回答

  • 果果璐璐
    果果璐璐
    2021-01-15

    终于解决了,给大家分享一下;原因大家也都知道:请求接口的时候提供的证书不对,很多人提供的是“商户API证书”,调用接口需要提供微信支付的“平台证书”;获取“平台证书”官网文档描述的不是很明确,或者容易被https://api.mch.weixin.qq.com/v3/certificates这个接口搞混乱,这个返回的不是直接的平台证书;需要使用工具:Certificate Downloader来生成,下载地址:https://github.com/EliasZzz/CertificateDownloader/releases;源代地址:https://github.com/wechatpay-apiv3/CertificateDownloader 查看使用说明;对命令用实例说明一下,因为我花了很久才搞定:java -jar CertificateDownloader-1.1.jar -f 商户私钥文件路径 -k 证书解密的密钥 -m 商户号 -o 证书保存路径  -s 商户证书序列号

    这里需要注意一下不要:-c 参数 非必需参数

    需要对大家有帮助,微信号:buyizu360

    2021-01-15
    有用 10
    回复 23
    • 易站_萧
      易站_萧
      2021-01-18
      我按照果果璐璐的说法解决了,补充下:
      1.https://api.mch.weixin.qq.com/v3/certificates这个接口可以无视。

      2.这个问题的关键是要获得正确的v3支付证书;具体方法如下:
      (1)https://github.com/EliasZzz/CertificateDownloader/releases这里下载那个jar包,
      (2)执行:“java -jar CertificateDownloader-1.1.jar -f 商户私钥文件路径 -k 证书解密的密钥 -m 商户号 -o 证书保存路径 -s 商户证书序列号”就行了。
      这条命令的参数搞清楚3点:“商户私钥文件路径”是账号中心->API安全->API证书中设置并下载的证书(就是其中的apiclient_key.pem,下载还会获得apiclient_cert.pem,我之前把这个当做支付证书了,其实不是,apiclient_cert.pem这用不着),“商户证书序列号”这个东西也是设置API证书那里知道;“证书解密的密钥”在账号中心->API安全->APIv3密钥中设置的(注意api密钥和apiv3密钥是2个东西)。
      执行完了是个类似wechatpay_250393205B4A9CC12900B44B65E04B9751CE95.pem的文件。
      2021-01-18
      7
      回复
    • 崩
      2021-01-24
      jar包下不动?有可用的jar包吗?
      2021-01-24
      回复
    • 宾棠.cn
      宾棠.cn
      2021-01-29回复易站_萧
      你好,我是PHP的。我如何下载这个呢
      2021-01-29
      回复
    • Bohr
      Bohr
      2021-02-20回复宾棠.cn
      我也是PHP遇到这个问题,然后我安装Java环境,执行命令:java -jar CertificateDownloader-1.1.jar -f 商户私钥文件路径 -k 证书解密的密钥 -m 商户号 -o 证书保存路径 -s 商户证书序列号,即可生成微信支付平台证书。
      2021-02-20
      1
      回复
    • Red-🌈
      Red-🌈
      2021-02-21回复Bohr
      这么麻烦的吗。没其他办法吗
      2021-02-21
      回复
    查看更多(18)
  • 郭树灿
    郭树灿
    2022-04-29

    到处都是坑org.apache.http.HttpException: 应答的微信支付签名验证失败,确实比支付宝垃圾多了

    2022-04-29
    有用 2
    回复
  • granp
    granp
    2019-11-08

    @  问题解决了吗


    2019-11-08
    有用 1
    回复 1
    • YING
      YING
      2020-05-09
      我也遇到了同样的问题 请问你解决了吗
      2020-05-09
      回复
  • Mr.B🏀
    Mr.B🏀
    2022-06-10

    这样执行后还是在报 支付验证签名失败 是什么原因呢?

    2022-06-10
    有用
    回复
  • 石光
    石光
    2020-09-16

    我也遇到了,刚刚解决了。问题原因:公钥取得不对,公钥应该用“微信支付平台证书”,而不是商户API公钥。如何获取“微信支付平台证书”参考https://wechatpay-api.gitbook.io/wechatpay-api-v3/jie-kou-wen-dang/ping-tai-zheng-shu。第一次下载用“证书下载工具”。

    2020-09-16
    有用
    回复
  • 陸
    2020-09-01

    我也遇到了同样的问题 请问你解决了吗

    2020-09-01
    有用
    回复
  • 火力发电机
    火力发电机
    2020-08-01

    我也遇到这个问题,请问解决了吗

    2020-08-01
    有用
    回复
登录 后发表内容