收藏
回答

签名验证失败不通过,“错误的签名,导致验签失败”是什么原因导致的呢?

根据文档提示所需要检查的以下几个,

1.签名串的最后一行没有附加换行符

如果请求报文主体为空(如GET请求),最后一行应为一个换行符。 =====>根据报错信息这个排除

2.签名串中的参数,跟实际请求的参数不一致

手工拼接的URL,和实际请求发送的不一致。我们建议的实现是,使用HTTP库构造请求对象或者URL对象,再使用相应的方法取得URL。===》这个url我是string拼接的  如下

https://api.mch.weixin.qq.com/v3/apply4subject/applyment/merchants/+mchid+"/state"

签名和设置Authorization头时,使用了前后生成的两个时间戳。        =====>这个排除

签名和设置Authorization头时,使用了前后生成的两个不同的随机串。=====>这个排除

签名和请求时,使用了前后两次序列化的JSON串作为请求主体。    =====>这个排除

商户的开发者可以将关键参数生成并保存在变量中,签名和发送请求时统一使用,避免前后生成的信息不一致。=====>这个排除

3.文本的编码不一致

生成签名串使用了非UTF-8编码或者未设置具体编码。    =====>这个排除

4使用了错误的商户私钥

开发者可以使用如下的openssl命令检查私钥和商户证书中的modulus(p、q两个大素数的乘积)是否一致。如果两者一致,那么私钥和证书是成对的。  ======>这个我根据微信平台返回的证书获取的privatekey用的是下图的apiclient_key跟商户序列号用的是apiclient_cert




代码一块就是简单的拼接





能看看是哪一块出问题了吗


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

4 个回答

  • 惜阳
    惜阳
    2022-11-18

    我的是post方法是成功的,用get就报错误的签名,验签失败

    2022-11-18
    有用
    回复 1
    • 强子.
      强子.
      03-04
      请问问题解决了吗
      03-04
      回复
  • 凌兵
    凌兵
    2020-03-18

    境外商户 没有地方设置 KEY啊?

    2020-03-18
    有用
    回复
  • CheIng
    CheIng
    2019-10-11

    老哥你解决了吗?

    2019-10-11
    有用
    回复
  • 微信支付技术助手1
    微信支付技术助手1
    2019-08-30

    签名错误,基本可以从两点排查,签名参数(用官方验证工具验证),KEY的问题(更换一下KEY),基本就能解决签名错误的问题

    2019-08-30
    有用
    回复 1
    • 胡亚楠
      胡亚楠
      2019-11-07
      您好,官方验证工具从哪可以下载,麻烦能给个链接吗
      2019-11-07
      回复
登录 后发表内容