Android原生WebView调用微信H5支付出现【请在微信外

2019-10-09  本文已影响0人  一击必中

这是楼主写的第一篇博文,我的博文特色就是一击必中。如果你的问题是这样的,那么快速浏览找到解决方案,如果不是,关闭文章,继续去探索吧~~

问题:

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)就行了。

总结:

自己不了解的代码不要随便拷贝过来就加上,一定要弄明白这些代码的意义,不然你出现的问题,度娘都没法帮你解决。

上一篇 下一篇

猜你喜欢

热点阅读