用微信支付的demo测试,安卓正常支付,ios却报错,报错内容为:timestampget_brand_wcpay_request:fail

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/skfzc/article/details/50264819
用微信支付的demo测试,安卓正常支付,ios却报错,报错内容为:timestampget_brand_wcpay_request:fail ,看提示,应该是timestamp获取的问题,但是如果获取的不对,为什么安卓能正常呢,找啊找啊,终于发现有条资料说是微信传输的JSON参数必须是字符串,突然想到,time()获取的应该是数值型的吧,找到WxPay.JsApiPay.php里传递timestamp的位置,将时间戳的类型变成字符型,再测试,终于成功了!
展开阅读全文

微信支付JSAPI报错支付验证签名失败

09-08

微信公众号支付,首先调用统一下单API,调用成功,得到结果如下:rn[W84n5gy8g90/09-07 16:00:19][http-8082-4][INFO] MainController.order(263): result_code=SUCCESSrn[W84n5gy8g90/09-07 16:00:19][http-8082-4][INFO] MainController.order(263): sign=8124882E93A7A206F8626E55D1FAE160917A6F13E583A574629787230210D011rn[W84n5gy8g90/09-07 16:00:19][http-8082-4][INFO] MainController.order(263): mch_id=1486965732rn[W84n5gy8g90/09-07 16:00:19][http-8082-4][INFO] MainController.order(263): prepay_id=wx20170907174825797c2e09400232740890rn[W84n5gy8g90/09-07 16:00:19][http-8082-4][INFO] MainController.order(263): return_msg=OKrn[W84n5gy8g90/09-07 16:00:19][http-8082-4][INFO] MainController.order(263): appid=wxefae220aec453e99rn[W84n5gy8g90/09-07 16:00:19][http-8082-4][INFO] MainController.order(263): nonce_str=S2oy3tT2WBLiVkTTrn[W84n5gy8g90/09-07 16:00:19][http-8082-4][INFO] MainController.order(263): return_code=SUCCESSrn[W84n5gy8g90/09-07 16:00:19][http-8082-4][INFO] MainController.order(263): device_info=WEBrn[W84n5gy8g90/09-07 16:00:19][http-8082-4][INFO] MainController.order(263): trade_type=JSAPIrnrn然后通过JSAPI调起微信支付,但是一直报“支付验证签名失败”,首先我肯定我的签名是正确的,因为通过了腾讯的在线签名验证https://pay.weixin.qq.com/wiki/tools/signverify/,和我的签名比对是一致的,rnrn下面是我用“微信Web开发者工具”调试JSAPI调起支付的截图:rn[img=https://img-bbs.csdn.net/upload/201709/08/1504836043_807901.png][/img]rnrn下面是微信的在线签名验证的比对结果:rnrn[img=https://img-bbs.csdn.net/upload/201709/08/1504836455_534604.png][/img]rn问题为何我的签名明明是对的但是调起JSAPI支付的时候老是报什么“支付验证签名失败”,我调用的API都是微信官方JAVA Demo中提供的,且统一下单也是这样签名并没有报错,为何JSAPI就报错?网上各种方法都试过了,仔细检查了参数没问题,重置了KEY等,这个问题困扰我好多天了实在是耗不起了,求懂的大神们帮帮我吧,跪拜/(ㄒoㄒ)/~~ 论坛

java微信公众号 js调用微信支付报错 errMsg:chooseWXPay:fail

08-29

奖励有点少,实在是没有c币了。rn下面是我的js,不清楚到底是什么原因导致的,各位大神帮忙给解决下吧;具体报错:config签名啥的是OK的,但是在调用chooseWXPay的时候,就失败了 报错errMsg:chooseWXPay:fail 没有别的提示信息,不清楚失败原因rn$('#pay_sub_btn').on(touchType, function()rn var _this = $(this);rn var payType = $('#pay_type').val();rn var orderId = $('#J_payOrder_id').val();rn var orderSn = $('#J_payOrder_sn').val();rn var payFee = $('#J_payOrder_card_no').val();rn var fieldLabel = $('#fieldLabel').val();rn var date = $('#date').val();rn var orderTimes = $('#orderTimes').val();rn var gymName = $('#gymName').val();rn var path = $('#basePath').val();rn rn hideError();rn lock = true;rn _this.text('支付中...');rn if(payType == 13)rn //支付宝支付rn rn elsern $.ajax( rn url:path+"/orders/OrdersPayForWx.do?orderId="+orderIdrn ).done(function(data) rn var obj = eval('(' + data + ')'); rn if(parseInt(obj.agent)<5 && obj.agent != "false") rn alert("您的微信版本低于5.0无法使用微信支付,请升级之后再操作!~");rn return; rn else if(obj.agent == "false")rn alert("请使用微信浏览器操作!~");rn return; rn rn if(obj.code == "0")rn alert("登陆已经过期,请重新登录!~");rn window.location.href = path+'/login.jsp';rn rn wx.config(rn debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。rn appId: obj.appId, // 必填,公众号的唯一标识rn timestamp: obj.contime, // 必填,生成签名的时间戳rn nonceStr: obj.constr, // 必填,生成签名的随机串rn signature: obj.consign,// 必填,签名,见附录1rn jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2rn );rn wx.ready(function()rn wx.chooseWXPay(rn "timestamp": obj.paytime, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符rn "nonceStr": obj.paystr, // 支付签名随机串,不长于 32 位rn "package": obj.paypack, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)rn "signType": obj.paysigntype, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'rn "paySign": obj.paysign, // 支付签名rn success: function (res) rn // 支付成功后的回调函数rn alert(res.err_msg);rn _this.text('支付');rn if(res.err_msg == "get_brand_wcpay_request:ok" ) rn _this.text('支付');rn // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。 rn window.location.href = path + '/orders/GetOrders.do?page=1&pageSize=10&orderStatus=0';rn elsern alert(res.errMsg);rn alert(res.err_msg);rn _this.text('支付');rn return false;rn rn rn );rn );rn wx.error(function(res)rn alert(res.err_msg);rn _this.text('支付');rn return false;rn );rn ); rn rn );rn rn 问答

Python爬虫运行正常,最后却报错

01-02

刚学Python,不明白,特来请教。rn程序是爬取贴吧某个地址的图片,运行正常,图片也都下载下来了。rn代码如下:rn[code=python]import urllib.requestrnimport rernresponse = urllib.request.urlopen("http://tieba.baidu.com/p/3646792267?fr=ala0&pstaala=2&tpl=5")rnhtml = response.read().decode("utf-8")rna='src="(.*?\.jpg)"'rnc=re.findall(a,html)rns=0rnfor i in c:rn urllib.request.urlretrieve(i,"%s.png" % s)rn s=s+1rn[/code]rn然而在执行完毕报错:rnTraceback (most recent call last):rn File "E:/untitled/getpng.py", line 10, in rn s=s+1rn File "E:\Python\lib\urllib\request.py", line 187, in urlretrievern with contextlib.closing(urlopen(url, data)) as fp:rn File "E:\Python\lib\urllib\request.py", line 162, in urlopenrn return opener.open(url, data, timeout)rn File "E:\Python\lib\urllib\request.py", line 465, in openrn response = self._open(req, data)rn File "E:\Python\lib\urllib\request.py", line 483, in _openrn '_open', req)rn File "E:\Python\lib\urllib\request.py", line 443, in _call_chainrn result = func(*args)rn File "E:\Python\lib\urllib\request.py", line 1268, in http_openrn return self.do_open(http.client.HTTPConnection, req)rn File "E:\Python\lib\urllib\request.py", line 1240, in do_openrn h.request(req.get_method(), req.selector, req.data, headers)rn File "E:\Python\lib\http\client.py", line 1083, in requestrn self._send_request(method, url, body, headers)rn File "E:\Python\lib\http\client.py", line 1118, in _send_requestrn self.putrequest(method, url, **skips)rn File "E:\Python\lib\http\client.py", line 960, in putrequestrn self._output(request.encode('ascii'))rnUnicodeEncodeError: 'ascii' codec can't encode characters in position 263-268: ordinal not in range(128)rnrnProcess finished with exit code 1rn大神解答一下这个是什么意思,万分感谢。rn 论坛

没有更多推荐了,返回首页