评论

JSAPI支付踩坑“支付验证签名失败”

微信网页开发js-sdk调用JSAPI支付“支付验证签名失败”

大佬请绕道!

最开始图方便,使用了PHP的http_build_query来将数组转为字符串,此处会将prepay_id=123456789的等号进行转换成%3D导致签名验证失败。

此处建议使用官方的例子,使用字符串将参数拼接,避免出错。

特别注意timestamps后端在签名的时候是大写S,而微信的js-sdk里面wx.chooseWXPay接口调用时是小写。

微信js-sdk文档里面还有一个坑。

wx.chooseWXPay({
  timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
  nonceStr: '', // 支付签名随机串,不长于 32 位
  package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
  signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
  paySign: '', // 支付签名
  success: function (res) {
    // 支付成功后的回调函数
  }
});


调用这个接口居然没有用appId这个参数,不管你怎么调,最后都报支付验证签名失败。

最终在微信支付官方的文档里面看到调用接口有appId,果断加上试了一下。成功了。

最后一次编辑于  2020-02-12  
点赞 7
收藏
评论

9 个评论

  • 枫叶
    枫叶
    2020-05-22

    微信这个jsapi就是个垃圾,,调了几天了,还是签名错误

    2020-05-22
    赞同 1
    回复 4
    • Yan tao
      Yan tao
      2020-09-13
      遇到类似问题,求解决方案
      2020-09-13
      回复
    • 孤木๛
      孤木๛
      2020-12-15
      请问解决了吗,同问题,求解
      2020-12-15
      回复
    • Mr.H
      Mr.H
      2022-09-30
      一样没解决,都特么两年过去了,垃圾垃圾文档,要不是用微信的人多,吗的我才不接。现在给人做程序我都首推支付宝。
      2022-09-30
      回复
    • m
      m
      05-24
      我使用v3版本也是提示签名错误,好恶心
      05-24
      回复
  • W
    W
    2020-02-29

    我按照你说的加了后不行啊


    2020-02-29
    赞同 1
    回复 3
    • 金钱豹
      金钱豹
      2020-02-29
      检查参数少了没有,前端js-sdk接口要加appId这个参数,注意大小写,后端加密是用的大写
      2020-02-29
      回复
    • W
      W
      2020-02-29回复金钱豹
      正常啊。查了半天资料,还是提示支付验证签名失败
      2020-02-29
      回复
    • W
      W
      2020-02-29回复金钱豹
      莫名其妙能用了。。。我TM
      2020-02-29
      回复
  • ☆鼠♥
    ☆鼠♥
    07-23

    遇到同样的问题,有两种可能,一种就是参数大小写的问题,另一种就是版本问题

    07-23
    赞同
    回复
  • Bill Hsieh
    Bill Hsieh
    03-08
    遇到了同样的问题,解决过程是 前后端1个1个对比统一参数。小程序后端的加密字段和App的不一致特别注意这几个 appid和appId的区别
                payMap.put("appId",);
                payMap.put("timeStamp",);    
                payMap.put("nonceStr",);
                payMap.put("signType",);
                payMap.put("package","prepay_id="+prepayId);
    


    03-08
    赞同
    回复
  • A习水豆腐皮火锅
    A习水豆腐皮火锅
    发表于移动端
    2023-08-05
    ..
    2023-08-05
    赞同
    回复
  • 久爱不腻i
    久爱不腻i
    2023-03-28

    牛啊牛啊,狗样的大小写

    2023-03-28
    赞同
    回复
  • 张伟
    张伟
    2022-03-09

    就是大小写s问题卡了一天

    2022-03-09
    赞同
    回复
  • 夜辰
    夜辰
    2021-03-25

    统一下单完成后,需要返回给前端的参数中的签名paySign ,一定要再次生成!!!!

    网页端接口请求参数列表参数需要重新进行签名计算,参与签名的参数为:appId、timeStamp、nonceStr、package、signType,参数区分大小写。)

    详情参考手册

    https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6


    2021-03-25
    赞同
    回复
  • 只会好
    只会好
    2020-04-08

    合单 支付 返回前端 接口 的 paySign 怎么计算呀?大哥 求助 我用的php 有demo吗


    2020-04-08
    赞同
    回复 3
    • 金钱豹
      金钱豹
      2020-04-08
      合单的我还没有接触过。发帖求助吧
      2020-04-08
      回复
    • 只会好
      只会好
      2020-05-13回复金钱豹
      我搞定了 电商收付通  代码 已开源 在gitthub
      2020-05-13
      回复
    • 阿木
      阿木
      2020-09-13
      我们也遇到电商收付通的验证签名失败问题,加微信联系一下麻烦告知好吗?keker_official
      2020-09-13
      回复
登录 后发表内容