收藏
回答

API V3, 微信投诉,回调通知,签名验证不通过

API V3,微信投诉,回调通知。

使用命令java -jar CertificateDownloader-1.1.jar 下载的平台证书,

明文:

String message = new StringBuilder()
        .append(timestamp)
        .append("\n")
        .append(nonce)
        .append("\n")
        .append(body)
        .append("\n")
        .toString();


密文为 请求header中的Wechatpay-Signature,

使用延签工具报错:签名验证不通过,没有具体的错误码。

代码中,验证签名返回false。

确定平台证书是最新下的证书,下载证书接口response中的serial_no字段和回调通知header中的Wechatpay-Serial一样。

请问该怎么排查这个问题呢? 谢谢

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

1 个回答

  • 微信支付技术助手8
    微信支付技术助手8
    2020-11-13

    工具验证签名不通过,就是你的签名参数和签名值有问题。麻烦检查一下是否是严格按照文档要求来进行的签名操作。


    2020-11-13
    有用 1
    回复 3
    • May
      May
      2020-11-27
      问题已经得到处理,今天有回调通知,正好做了验证。原因出现在没有使用回调通知请求的原始body数据进行验证签名处理,而是用了对象接收,自行转的json,这就和原始body数据顺序发生变化。记录一下,希望对其他的小伙伴有所帮助。
      2020-11-27
      回复
    • 卍
      01-26
      对的 应该使用string  java接参 @RequestBody String data  去验证签名
      01-26
      回复
    • 枫楠
      枫楠
      04-29回复
      建议不要使用 @RequestBody 接收 微信回调body,直接 HttpServletRequest#getInputStream() 接收。因为使用 @RequestBody 接收,spring 会使用 HttpMessageConverter 对请求参数进行处理,导致接收后的 body 与微信回调原 body 不一致。
      04-29
      回复
登录 后发表内容
问题标签