您的位置:首页 > 移动开发 > 微信开发

android webview拉起微信h5支付错误解决办法

2018-01-10 14:05 1286 查看

这里坑比较深.网上说的方式也大多没有用.不废话带你解决

1.遇到的问题大概就"商家参数错误";"空白页";"系统繁忙"等等吧
2.问题解决:商家参数错误就是因为没有加Map载loadUrl时候要配置一个Map.key是指定的,url是授权域名

Map<Sting,String> map = new HashMap<>();
map.put("Referer", "http://......");

3.直接用webview去load部分机型可行,因为内核限制的就不行了
4.最终解决方式如下
Map<String, String> map = new HashMap<>();
map.put("Referer","http://....");
WebView webView = ((WebView) findViewById(R.id.webview));

WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDefaultTextEncodingName("UTF-8");
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.setWebChromeClient(new WebChromeClient());
WebViewClient webViewClient = new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 如下方案可在非微信内部WebView的H5页面中调出微信支付
if (url.startsWith("weixin://wap/pay?")) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
return true;
} else {
Map<String, String> extraHeaders = new HashMap<String, String>();
extraHeaders.put("Referer", "http://wxpay.wxutil.com");
view.loadUrl(url, extraHeaders);
}
return true;
}

@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, android.net.http.SslError error) { // 重写此方法可以让webview处理https请求
handler.proceed();
}
};
webView.setWebViewClient(webViewClient);
webView.loadUrl("https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=...", map);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐