收藏
回答

JSAPI验证签名失败


第一次验签结果:

 <xml><return_code><![CDATA[SUCCESS]]></return_code>

<return_msg><![CDATA[OK]]></return_msg>

<appid><![CDATA[*******]]></appid>

<mch_id><![CDATA[1574059461]]></mch_id>

<nonce_str><![CDATA[yQNcBxMuDo1xbcAa]]></nonce_str>

<sign><![CDATA[500188F1D749B020F77CAA27BDB03107]]></sign>

<result_code><![CDATA[SUCCESS]]></result_code>

<prepay_id><![CDATA[wx061036329215387cff6171831698335700]]></prepay_id>

<trade_type><![CDATA[JSAPI]]></trade_type>

</xml>

第二次页面验签的代码

所有都检查过了 还是验证签名失败!!!

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

2 个回答

  • 微信支付技术助手8
    微信支付技术助手8
    2020-05-06

    请按照以下几点进行排查:

    1、使用签名检查工具(https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1)校验签名算法是否有误

    2、确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题)

    3、确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查)

    4、确认参数的大小写,参数名与接口文档一致

    5、签名原串的参数值使用原始值,不需要encode

    2020-05-06
    有用
    回复
  • Javen
    Javen
    2020-05-06

    截图中的 payInfo.sign 你是怎么生成的?是按照这个文档规则生成的签名吗?https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6

    如果对你有帮助请点下「有用」

    2020-05-06
    有用
    回复 4
    • Pomelo Island
      Pomelo Island
      2020-05-06
      是按照这个生成的签名
      2020-05-06
      回复
    • Javen
      Javen
      2020-05-06回复Pomelo Island
      那为什么你 timeStamp 还需要在前端生成 ?
      2020-05-06
      回复
    • Pomelo Island
      Pomelo Island
      2020-05-06
      因为这边商量说 我只需要给下面这些参数给前端
      2020-05-06
      回复
    • Javen
      Javen
      2020-05-06回复Pomelo Island
      前端使用的 timeStamp 要与后端签名的值保持一致,建议都由后端生成或者都由前端生成。推荐前者
      2020-05-06
      回复
登录 后发表内容
问题标签