Daily Archives: 2015 年 07 月 10 日

Hello World 日志

微信支付的又一个坑

    从前年微信支付刚公测开始,前后接了三次微信支付。。。这次再接,居然还是磕磕绊绊,今天半个下午,都被一个下面这个错误提示误导了:
         getBrandWCPayRequest:fail_no permission to execute
    而且还不是总是出这个错误,有时是能正常支付的
    一般,出现这个错误,是因为微信支付授权地址不对,可是检查了n次,支付授权地址、js授权域名、oauth授权地址,都没发现问题
    然后怀疑签名错误,于是对比公钥,修改公钥,重新上传证书
    。。。总之,折腾了N次,还是不行
    ~~软件开发就是这样,如果一个问题,所有可能的原因都不是原因,那就剩下最后一个不可能的原因了:
    因为业务需要,这个项目要接入两个微信公众号,为了开发方便,两个公众号的代码是一起的,支付授权的url地址也就是一起的~~或许这就是原因
    设法将支付授权url地址区分开~~~问题解决!!
    猜测微信的“支付授权地址”是这样工作的,在微信客户端内,存在一个“支付授权地址–微信公众号”的缓存,而非“微信公众号–支付授权地址”,缓存更新不及时,就会出现上面的错误表现
——
btw:
    由于微信并未修改内置浏览器的内核,所以内置浏览器的很多特殊特性,都是微信webview通过外围的ios、android程序加入的
    比如新出的摇一摇页面获取openid/跳转关注页面,其实不过是再摇一摇出来的页面里种了一个cookie标记,如果你从摇一摇的页面退出来,再通过url直接进入这个页面,还可能调摇一摇的jsapi
    再比如oauth授权,如果A帐号进过你得站点,切换到B帐号后在,再进你得站点,用户身份还是A…因为cookie还在
    不过,实事求是的说,微信的jsapi确实很NB,将大量的原生应用的权限授权给了webview,大大扩展了web开发的可能性
    相对于微信的webview,phonegap这类专业号称使用webview做出原生应用的东西,就是个渣渣~~