说一个 android 5.1 微信 Oauth 奇怪的问题

2015-11-17 16:22:35 +08:00
 alex321
今天准备做微信支付,准备使用 JSAPI 方法,然后就需要获取用户的 openId 。
好了,我之前写了个方法直接在当前页面监测是否存在 Oauth 跳转过来的 code ,如果不存在认定为新请求,执行 redirect ;如果存在则 server 端去获取用户状态并设置 user 变量。
问题来了,我花了半天的时间去调试总是提示我签名失败,我很认真地赶脚是自己的问题,排查了好久好久木发现问题;通过微信官方提供的 js 签名在线检查( http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign )也是正确的。然后,我记得此前这个用在 js-sdk 上是很顺利的,就把之前的 js-api-demo 再排查了下,发现木有任何问题,签名、功能啥的都是正确的。

最后,我找来找去,想起唯一不同的就是我在新页面上做了个 Oauth 跳转,好奇地看看当前页面的地址,居然是微信跳转的 oa 地址啊啊啊。所以,这是签名一直错误的根源么。。

然后,在接唯一订单的时候也是遇到签名错误,按照微信支付官方的调试工具( https://pay.weixin.qq.com/wiki/tools/signverify/ ),依旧我输出的参数和对方输出的参数是一致的,然后可劲儿地报签名错误,经检查,白名单、授权目录、测试目录、使用的商户支付 API key 都是正确的。。。再有,微信支付那个登录控件输入的时候屏幕好一阵黑,恐怖。。
唯一订单 post 过去的 xml 大概是这样的:

<xml>
<appid><![CDATA[appId]]></appid>
<body><![CDATA[test for Chinese]]></body>
<mch_id>mchId</mch_id>
<nonce_str><![CDATA[8olxp6ytndjr1k4cfapmedkjexnyh2d5]]></nonce_str>
<notify_url><![CDATA[notifyUrl]]></notify_url>
<openid><![CDATA[openId]]></openid>
<out_trade_no>1447748715</out_trade_no>
<spbill_create_ip><![CDATA[clientIP]]></spbill_create_ip>
<total_fee>1</total_fee>
<trade_type><![CDATA[JSAPI]]></trade_type>
<sign><![CDATA[D28560D9B6352E0A92A948A8F1C86C37]]></sign>
</xml>
1651 次点击
所在节点    分享发现
2 条回复
qinxi
2015-11-18 08:40:52 +08:00
我说个我当时的经验吧........我在支付页的 js 里面多写了空格...一直报错.TM 气死我了...
alex321
2015-11-20 15:22:37 +08:00
然后,今天那个控件输入突然不黑屏了。。
e ,此事甚是蹊跷。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/236820

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX