参照
1.遇到的问题大概就"商家参数错误";"空白页";"系统繁忙"等等吧 2.问题解决:商家参数错误就是因为没有加Map载loadUrl时候要配置一个Map.key是指定的,url是授权域名Mapmap = new HashMap<>();map.put("Referer", "http://......"); //建议此处填写webm网站地址复制代码
3.直接用webview去load部分机型可行,因为内核限制的就不行了
4.最终解决方式如下Mapmap = 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 extraHeaders = new HashMap (); 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);复制代码