V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alex321
V2EX  ›  分享发现

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

  •  
  •   alex321 · 2015-11-17 16:22:35 +08:00 · 1655 次点击
    这是一个创建于 3319 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天准备做微信支付,准备使用 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>
    2 条回复    2015-11-20 15:22:37 +08:00
    qinxi
        1
    qinxi  
       2015-11-18 08:40:52 +08:00
    我说个我当时的经验吧........我在支付页的 js 里面多写了空格...一直报错.TM 气死我了...
    alex321
        2
    alex321  
    OP
       2015-11-20 15:22:37 +08:00
    然后,今天那个控件输入突然不黑屏了。。
    e ,此事甚是蹊跷。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3996 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:14 · PVG 13:14 · LAX 21:14 · JFK 00:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.