这是楼主写的第一篇博文,我的博文特色就是一击必中。如果你的问题是这样的,那么快速浏览找到解决方案,如果不是,关闭文章,继续去探索吧~~
问题:
Android在对接H5支付的时候,出现了这样一个问题。明明是在android原生的调用的H5支付链接,可是报错【请在微信外打开订单,进行支付】,提示很明显,在发起微信支付的时候,认为我是在微信中打开的,所以不让支付。
上图:
探索过程:
当然就是百度了,百度了好多次,竟然没有发现这样的问题。所有的回答全是,在浏览器打开,不要在微信打开。可我明明就是在自己写的WebView中打开的啊,真让人头大。
上图:
问题原因:
原来是在进行webView设置的时候,多了这两句代码。
String ua = settings.getUserAgentString();
settings.setUserAgentString(ua + " MicroMessenger/4.5.255");
问题剖析:
android通过微信内置浏览器访问网页得到的user agent为
Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255
也就是说,微信是通过判断MicroMessenger关键字来鉴别是不是微信内置浏览器,所以才会报错。
解决方案:
去掉这个用户代理(userAgent)就行了。
总结:
自己不了解的代码不要随便拷贝过来就加上,一定要弄明白这些代码的意义,不然你出现的问题,度娘都没法帮你解决。
网友评论