參照 blog.csdn.net/chenyannan0…
1.遇到的問題大概就"商家參數錯誤";"空白頁";"系統繁忙"等等吧
2.問題解決:商家參數錯誤就是由於沒有加Map載loadUrl時候要配置一個Map.key是指定的,url是受權域名android
Map<Sting,String> map = new HashMap<>();
map.put("Referer", "http://......"); //建議此處填寫webm網站地址
複製代碼
3.直接用webview去load部分機型可行,由於內核限制的就不行了
4.最終解決方式以下web
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");////建議此處填寫webm網站地址
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);
複製代碼