Android原生WebView调用微信H5支付出现【请在微信外打开订单,进行支付】

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

问题:

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

总结:

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容