收藏
回答

[微信JSAPI支付]支付验证签名失败

安卓返回 -1

ios返回:2


后台日志:


验证签名




最后一次编辑于  01-28  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

2 个回答

  • 波
    01-28

    您好,请按照以下几点来检查,

    1)你签名中的key,也就是你的API密钥key,这个参数要你们自己到商户平台设置的,设置的规则是32位数字与字母大小写的组合的随机数,不能设置成签名串和参数appsecret,你们有正确设置吗???

    2)检查开放平台对应的包名与签名是否有正确设置。

    https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 这里有详细的设置说明。

    3)调用支付使用的noncestr这个参数必须和商家服务器调用统一下单接口返回的那个noncestr一致

    4)从预支付订单返回的数据 ,没有重新签名,也会引起这个问题。

    5)重新安装微信后试试。


    01-28
    赞同 1
    回复 5
    • jack_翔
      jack_翔
      02-01

      请问

      3)调用支付使用的noncestr这个参数必须和商家服务器调用统一下单接口返回的那个noncestr一致

      这句话的意思,是不是后台调用统一下单的noncestr,与传给前台页面调用JSAPI的noncestr要一致,

      并且在传送到前台前,同样参与加签后送往前台页面使用?

      02-01
      回复
    • 波
      02-02回复jack_翔

      您好,是的。

      02-02
      回复
    • jack_翔
      jack_翔
      02-02回复

       现在前台 一直到在报错,get_brand_wcpay_request:fail

      授权目录我也配置了,也吧noncestr 返回到 前台了

      已经不知道 怎么测试了

      后台处理

      前台代码

      求帮助 谢谢了

      02-02
      回复
    • jack_翔
      jack_翔
      02-02回复

       



      全部用的都是微信支付 里面的 API 的方法做的后台

      02-02
      回复
    • 波
      02-02回复jack_翔

      你好,这个是签名错误,请按照以下几点仔细检查:

      1) 使用微信的在线签名工具检查签名是否和程序生成的一致

      https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1 签名工具用谷歌打开。

      选择MD5,XML,然后把请求参数xml放进去,就能校验签名。

      2)如果和微信的在线签名工具一致,说明程序没有错误,确定是API密钥错误(被别人改动或者记错了)

      在商户平台的账户信息中更改API密钥(账户设置-安全设置-API安全), 15分钟后生效

      2.1)统一下单用的是A商户号,也必须是A商户号登陆商户平台设置key才对。

      2.2)要注意统一下单请求参数中total_fee参数的类型是int类型。

      3) 如果和微信的在线签名工具不一致,说明程序有错误,常见的错误可能是:

      3.1) 编码问题,确保所有的都是utf-8的. 如果有中文, 可以先把中文改成英文重新签名,看是否签名错误,如果英文不会错中文才会错,基本肯定是编码问题

      3.2:)消息中字段大小写和文档中完全一致


      02-02
      回复
  • jack_翔
    jack_翔
    02-02

    问题找到了。

    统一下单接口 默认加签方式是 HMACSHA256

    ,我传给前台的机密方式 是MD5,现在把加密方式统一,问题就解决了。

    02-02
    赞同
    回复 1
    • 3987丶奋斗
      3987丶奋斗
      02-28

      您好!能详细说明一下你二次验签的步骤吗?


      这里的生成sign的方法和上边统一下单的一样吧

      02-28
      回复