100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Android webview加载H5页面调起微信支付

Android webview加载H5页面调起微信支付

时间:2021-02-13 10:29:32

相关推荐

Android webview加载H5页面调起微信支付

场景

一个H5的页面,需要在app内用webview展示,然后涉及到支付,要求能够调用微信支付来付款,页面没有问题,但是写完出现了一些问题。

问题

页面不显示,展示空白

需要设置:

webSettings.setDomStorageEnabled(true);

否则,一些节点不支持显示,建议都加上这一句,并设置为true。

点击支付调不起微信

因为,webview支持http和https的scheme,我们知道微信的schem是weixin://,所以我们需要拦截这个url,并手动处理。

需要我们重写:

webView.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {if (url.startsWith("weixin://wap/pay?") || url.startsWith("http://weixin/wap/pay")) {try {Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.setData(Uri.parse(url));startActivity(intent);} catch (ActivityNotFoundException e) {// 处理错误}return true;} return true;}@Overridepublic void onReceivedSslError(WebView view, SslErrorHandler handler, .http.SslError error) {//重写此方法可以让webview处理https请求handler.proceed();}});

跳转微信,报参数错误,联系商户

这个在微信的文档里写的很清楚:

if (url.startsWith("weixin://wap/pay?") || url.startsWith("http://weixin/wap/pay")) {try {Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.setData(Uri.parse(url));startActivity(intent);} catch (ActivityNotFoundException e) {//处理错误}return true;} else {Map<String, String> extraHeaders = new HashMap<>();extraHeaders.put("Referer", "商户域名");view.loadUrl(url, extraHeaders);}return true;

就是添加extraHeaders.put("Referer", "商户域名");这一句,key为Referer,value为你跳转支付的商户域名。

以上!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。