微信支付签名错误解决方法

原创 2016年09月29日 23:32:03

由于项目需要,需要将微信支付嵌入到java web项目中,开发中一直发现签名错误问题,可是自己的签名算法久经考验,怎么会被这道坎给拦住了。
后来发现原来是在wx.config()和wx.chooseWXPay()方法中的timestamp和noncestr不一致导致的。我刚开始在wx.config()中生成了一对timestamp和noncestr,而又在chooseWXPay中生成了一对timestamp和noncestr。所以修改成如下的代码:

pay:function (ordno) {
            wx.config({
                debug: false,
                appId: "${wxSignature.appid}",
                timestamp: "${wxSignature.timestamp}",
                nonceStr: "${wxSignature.noncestr}",
                signature: "${wxSignature.signature}",
                jsApiList: [
                                'checkJsApi',
                                'chooseWXPay',
                            ]
                });
            $.ajax({
                url:"/wx/pay/wxpay.json",
                type:"post",
                data:{
                    timestamp:"${wxSignature.timestamp}",
                    nonceStr:"${wxSignature.noncestr}",
                    ordno:ordno},
                success:function (data) {
                    var tenpay=data;
                    wx.chooseWXPay({
                            timestamp:tenpay.timeStamp, 
                            nonceStr: tenpay.nonceStr, // 支付签名随机串,不长于 32 位
                            package: tenpay.prepayid, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
                            signType:tenpay.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
                            paySign: tenpay.paySign, // 支付签名
                            success:function (data) {                                               //alert(data);                                  window.location.href=window.location.href;//刷新页面

                            }

                        })

                    }
                }
            )

    }

在下发页面的时候,生成一对timestamp和nonceStr,并生成签名,用户点击的时候调用wx.config()函数,同时通过ajax的方法将timestamp和nonceStr传到后台生成新的支付签名。如此就可以通过签名检验了。细细想来,或许我刚开始的用法不对了。我完全可以在ajax,success中调用wx.config 以及wx.chooseWXPay()。自己还是太年轻了呀。明天修改代码的时候试验一下。这种支付测试的成本有点大。而且还有奇葩的一点是安卓手机调用出错后没有出错的具体信息,而苹果手机能够打印出具体的信息。挺有意思。

微信jsapi支付验证签名失败

微信jsapi支付验证签名失败
  • zjy660358
  • zjy660358
  • 2016年11月26日 16:24
  • 7294

微信统一支付接口返回“签名错误”的可能原因

在调试微信支付的“统一下单”接口的时候一直遇到“签名错误: 在调试微信支付的“统一下单”接口的时候一直遇到“签名错误”。网上查找了各种资料,一般可能是以下几个问题,如果大家出现此错误的话不妨挨个排查,...
  • SakuraLLj
  • SakuraLLj
  • 2015年08月28日 10:14
  • 8606

微信支付 进行统一下单 签名错误

微信支付 进行统一下单 签名错误,我在微信支付接口签名校验工具中验证通过,但是还是提示签名错误,我在 key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全...
  • kunga0814
  • kunga0814
  • 2016年06月17日 08:52
  • 9961

微信小程序支付开发爬坑攻略(支付签名验证失败)

第1个坑:微信支付的api密钥(签名需要的key参数) 商户中心(https://pay.weixin.qq.com/index.php/extend/employee) – API安全 – ...
  • menjilifu
  • menjilifu
  • 2017年12月02日 09:59
  • 1712

php 微信小程序支付流程(注意事项),小程序支付回调

支付步骤逻辑: 1. 小程序发起请求预支付 2. 服务端调用接口发起预支付信息 3. 微信小程序调起支付完成支付1. 小程序发起请求预支付 2. 服务端调用接口发起预支付信息 服务端接收到请...
  • weixin_36429334
  • weixin_36429334
  • 2016年12月08日 18:19
  • 7213

##iOS中的微信支付 支付验证签名失败

iOS中的微信支付 支付验证签名失败今天要在项目中添加微信支付,iOS端的所有东西都已经按照文档搞好了,可就是跳转到微信的时候显示“支付验证签名失败”,可是安卓端的都没有问题,就很郁闷了。 后来在对文...
  • meiyulong518
  • meiyulong518
  • 2016年10月25日 10:56
  • 11740

微信支付统一下单,签名错误

微信支付统一下单,签名错误
  • ZaiYiNiDeZaiYi
  • ZaiYiNiDeZaiYi
  • 2017年04月19日 15:03
  • 7816

微信支付一直签名错误

这两天无数次在做微信支付的时候出现签名错误,都快崩溃了。明明我自己生成的签名是没得问题的。自己手动生成的签名,和官方的微信支付接口测试结果是一样的。 后来无意中提到了  postMethod.se...
  • qq_25821067
  • qq_25821067
  • 2017年02月16日 11:25
  • 6170

微信native方式支付中body为中文时签名错误解决方法

最近在做在做微信支付中的native支付第二种支付方式,在请求参数时遇到了最大的问题就是,body(商品描述)为中文时,签名失败,为英文时签名成功。这个问题搞了好几天,没有搞定,今天终于搞定了,特此分...
  • qiwenmingshiwo
  • qiwenmingshiwo
  • 2014年12月12日 23:43
  • 33464

微信支付有汉字时出现签名错误的解决办法

微信支付有汉字时出现签名错误的解决办法 最近发现在win2003开发微信支付时,有汉字时出现签名错误,但在win7上不会出错, 最后发现是字符编码不一致造成的。 解决办法 改正...
  • yjg428
  • yjg428
  • 2015年03月06日 23:44
  • 17041
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:微信支付签名错误解决方法
举报原因:
原因补充:

(最多只允许输入30个字)