微信支付问题总结
由于贴在网页的图片无故消失了,我上传了一份doc文档
http://download.csdn.net/detail/free555/9179515
1. Config: invalid signature
用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign提供的工具校验得到是signature和我自己在后台计算出来的是一致的
在网络上找到的一些相关讨论
http://segmentfault.com/q/1010000002520634
http://segmentfault.com/q/1010000002502269/a-1020000002549180
官方的说明:
基本可以确定是签名使用的URL不一致导致的,因此只有在前台和后台把签名要用到的数值dump出来对比看看
前台js code
alert("nonceStr:" + nonce );
alert("timeStamp = " + timestamp);
alert("pay_appid = " + appId);
alert("location=" + location.href.split('#')[0]);
alert("URL=" + data.url)
alert("sha1 sign=" + signature);
后台 code
string1 = "jsapi_ticket=" + jsapi_ticket +
"&noncestr=" + nonce_str +
"×tamp=" + timestamp +
"&url=" + url;
System.out.println("tobe sign str = " +string1);
对比URL
后台
url=http://XXX/XXX/pay/weixin_pay.html?code=031a8aab748b0dfdfb9a528426acfa51&state=1@a9e82d33-619d-402d-9c32-e36d3813fa6f88
前台
url=http:// XXX/XXX /pay/weixin_pay.html?code=031a8aab748b0dfdfb9a528426acfa51&state=1%40a9e82d33-619d-402d-9c32-e36d3813fa6f88
解法:将后台的URL中的@转义为%40
2. chooseWXPay:fail
http://mp.weixin.qq.com/wiki/home/index.html中对API的描述
在debug问题1的时候,看到这个描述后,于是在后台做MD5签名的时候使用的字符串去掉了key
MD5 signsrc:appId=xxxx&nonceStr=xxxxxx&package=prepay_id=xxxx&signType=MD5&timeStamp=1444789363
但是一直提示chooseWXPay:fail
网络上的一些讨论
但是我加上appId后一样会有这样的提示,于是我找了一天Iphone测试,发现Iphone上回提示签名错误,于是我突然想到在debug问题1的时候我不MD5签名字串做了修改,于是将其作了修改,终于成功了。
MD5 sign src: appId=xxxx&nonceStr=xxxxxx&package=prepay_id=xxxx&signType=MD5&timeStamp=1444789363&key=xxx