收藏
回答

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

安卓返回 -1

ios返回:2


后台日志:


验证签名




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

9 个回答

  • 星辰
    星辰
    2021-09-25

    问题已解决:

    统一下单接口返回的签名必须包含prepay_id=XXXXXXXXXXXXXXXX

    关键下面两行:

    resultMap.put("package", "prepay_id=" + resMap.get("prepay_id"));//必须要带"prepay_id="前缀进行签名
    resultMap.put("sign", WXPayUtil.generateSignature(resultMap, WXConstEnum.key));//签名
    
    2021-09-25
    有用 1
    回复
  • 波
    2019-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)重新安装微信后试试。


    2019-01-28
    有用 1
    回复 10
    • 2019-02-01

      请问

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

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

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

      2019-02-01
      回复
    • 波
      2019-02-02回复

      您好,是的。

      2019-02-02
      回复
    • 2019-02-02回复

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

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

      已经不知道 怎么测试了

      后台处理

      前台代码

      求帮助 谢谢了

      2019-02-02
      回复
    • 2019-02-02回复

       



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

      2019-02-02
      回复
    • 波
      2019-02-02回复

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

      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:)消息中字段大小写和文档中完全一致


      2019-02-02
      回复
    查看更多(5)
  • ReturnToYouth
    ReturnToYouth
    2023-11-30

    请问楼主是怎么解决的啊

    2023-11-30
    有用
    回复
  • Mr.H
    Mr.H
    2022-09-30

    吗的这么多年过去了,开发文档还是一个d样的垃圾,能不能学学人家隔壁某宝

    2022-09-30
    有用
    回复
  • ?,!。
    ?,!。
    2022-02-24

    折腾了一下午和一晚上终于解决了。我这边的问题是:我们之前已经对接 过app的微信支付,后台直接返回了{ "package": "Sign=WXPay", "appid": "wx666", "sign": "7E9360EE36", "partnerid": "1116401", "prepayid": "wx66000", "noncestr": "345332", "timestamp": "1625620895" } 这样的数据各式我当时的做法是拿着后台返回的这些参数 格式化后直接去调用微信支付。

    但是注意注意,JSAPI加密sign的方法和app不一样, sign不能混用,它是是 需要把appId , timeStamp, nonceStr,package, signType 5个参数拼接key 以后 再使用md5加密


    2022-02-24
    有用
    回复
  • 契阔
    契阔
    2021-08-24
    不知道有人是否遇到了这个问题,如果你用的是JAVA版本的官方的SDK,请留意WxPay中的signType,默认沙箱环境环境下才会是MD5加密方式,不然的话,即使你在参数中设置了MD5也不会起作用。
    
    2021-08-24
    有用
    回复
  • 乘风归去
    乘风归去
    2021-02-25

    我已经被这个文档整懵逼了,公众号的文档里,调起支付


    在微信支付文档里调起支付


    用哪个? 文档就不能统一一下,一直提示支付验证签名失败!!!受不了

    2021-02-25
    有用
    回复
  • 空城、旧梦
    空城、旧梦
    2020-01-16

    我也遇到这个问题了,好几天了,参数设置正确,不知道为什么验证失败。写接口文档的人啊,我只想问问你不能写的详细点吗?

    2020-01-16
    有用
    回复
  • 2019-02-02

    问题找到了。

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

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

    2019-02-02
    有用
    回复 2
    • 3987丶奋斗
      3987丶奋斗
      2019-02-28

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


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

      2019-02-28
      回复
    • Mr.
      Mr.
      2020-04-16回复3987丶奋斗
      兄弟,你这么做是对的
      2020-04-16
      1
      回复
登录 后发表内容