微信 JS-SDK 在 ios 上的支付有 bug - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cgyqqcgy
V2EX    微信

微信 JS-SDK 在 ios 上的支付有 bug

  •  
  •   cgyqqcgy 2015-07-25 22:05:14 +08:00 6026 次点击
    这是一个创建于 3735 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 在ios设备上,微信jssdk的支付,如果是通过域名访问,就会提示appid非法,如果将这个url转发一下,支付就正常了;错误提示如附图:

    • 在android设备上不会有这个问题,支付一直都是ok的。

    • 我们的应用地址是: http://m.nzaom.com/ .

    • 使用的jsapi是如下:

    wx.chooseWXPay({ timestamp: options.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 nonceStr: options.nonceStr, // 支付签名随机串,不长于 32 位 package: options.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***) signType:'MD5', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' paySign: options.paySign, // 支付签名 success: function (res) { if(res.errMsg == "chooseWXPay:ok" ) { riot.route('cart-success') }else{ riot.route('cart-fail') } // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。 } }); 

    错误提示

    19 条回复    2015-07-27 10:25:19 +08:00
    kalman03
        1
    kalman03  
       2015-07-25 22:19:25 +08:00
    同样遇到与LZ一样的问题,最恶心的是,在没有开启debug的状态下,是一种假死的卡住,并没有LZ的图片提示,而是在开启debug的时候,才会弹出这个invalid appid的提示

    尼玛,微信支付这货还能不能在H5上好好的玩啊!!!!
    kalman03
        2
    kalman03  
       2015-07-25 22:21:02 +08:00
    PS:楼主的riot是个什么东东?
    cgyqqcgy
        3
    cgyqqcgy  
    OP
       2015-07-25 22:28:22 +08:00
    abelyao
        4
    abelyao  
       2015-07-25 22:30:23 +08:00
    @kalman03
    @cgyqqcgy
    微信 JS-SDK 的坑太多了…
    说到假死,我在两部 iPhone 上随便 alert 几个字符,点确定都关不掉,只能后台关闭微信
    feipinghuang
        5
    feipinghuang  
       2015-07-25 23:00:27 +08:00
    很多时候都是config的问题,调试的时候先看看wx.cofig有没有问题。
    wx.error(function(res){
    alert(JSON.stringify(res, null, 4));
    });
    cgyqqcgy
        6
    cgyqqcgy  
    OP
       2015-07-25 23:01:55 +08:00
    @feipinghuang config没有问题,debug 模式下,提示config ok的
    feipinghuang
        7
    feipinghuang  
       2015-07-25 23:09:38 +08:00
    @cgyqqcgy 你把appId: options.appid加上试试
    cgyqqcgy
        8
    cgyqqcgy  
    OP
       2015-07-25 23:10:58 +08:00
    @feipinghuang 这个我也试过了,没有用。。
    abelyao
        9
    abelyao  
       2015-07-25 23:11:03 +08:00
    @kalman03
    @cgyqqcgy
    @feipinghuang

    顺路请教一个问题,也是 JS-SDK 的:
    微信的后台有配置 A,B 两个域名为 JS 接口的域名,开发的时候用的是 A 域名,然后要上线了,切换 B 域名,一直就提示 JS-SDK 的签名错误,但是把涉及签名的几个字段,拿到微信的网页上去检查,也都是对的,config 中的 url 也和签名中的 url 一致,很是郁闷。不知道几位能不能想到是什么其它可能的原因?
    feipinghuang
        10
    feipinghuang  
       2015-07-25 23:15:53 +08:00
    @abelyao access_token 的即时刷新
    abelyao
        11
    abelyao  
       2015-07-25 23:17:39 +08:00
    @feipinghuang
    我原先在数据库中缓存了 access_token 和 jssdk_ticket,只有过期的话才重新获取新的。
    但出了这个问题之后,我把数据库中的所有缓存都删了,也等于是即时获取了两个新的,但还是提示签名错误,o()o 唉
    feipinghuang
        12
    feipinghuang  
       2015-07-25 23:22:33 +08:00
    @abelyao 要不你加我微信(feipinghuang)吧 咋们深度探讨一下这个问题
    abelyao
        13
    abelyao  
       2015-07-25 23:27:37 +08:00
    @feipinghuang 好的,回头加你,现在手机打不出中文了,在重置手机… /t/208320
    kalman03
        14
    kalman03  
       2015-07-25 23:53:29 +08:00
    @abelyao

    先检查参与签名的key,特别是大小写,参考我写的(调用wx.chooseWXPay的签名参数):

    map.put("appId", model.getAppid());// 公众账号ID
    map.put("nonceStr", model.getNonce_str());// 随机字符串
    map.put("timeStamp", now);
    map.put("package", "prepay_id="+model.getPrepay_id());
    map.put("signType", "MD5");

    如果是获取调用统一下单,你还需要获取openid,同时注意参与签名的参数值是否进行了encodeURIComponent(正常是需要encodeURIComponent的)
    abelyao
        15
    abelyao  
       2015-07-26 00:04:45 +08:00
    @kalman03 同样的代码,换回 A 域名就正常,换到 B 域名就提示签名出错,所以不是代码有问题,而且大小写的问题也检查了好几次… AB 两个域名都有在 JS 调用域名的列表中。
    mgcnrx11
        16
    mgcnrx11  
       2015-07-26 00:23:49 +08:00
    @abelyao OAuth授权域名是A域名吧?这个也是有关系的,因为我一直记得不能写两个域名测试,测试OK了必须上去mp后台配域名
    abelyao
        17
    abelyao  
       2015-07-26 00:32:13 +08:00
    @mgcnrx11 开发的时候 oauth 用 A 域名,部署到 B 域名的时候有把 oauth 改到 B 域名去,因为我的第一部是在 PHP 端校验 SESSION 如果没有就先进授权了,所以换 B 域名这个肯定得改,过了授权才有加载 JS 的事…
    juneszh
        18
    juneszh  
       2015-07-26 00:37:47 +08:00
    握爪 互勉 今天也是为了公众号搞了一天微信JDSDK支付
    Winny
        19
    Winny  
       2015-07-27 10:25:19 +08:00
    检查一下支付设置中的地址是否正确(区分大小写。)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5627 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 06:30 PVG 14:30 LAX 23:30 JFK 02:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86