Android Webview付款不适用于Worldpay网关上的Visa卡。在PayPal上可以正常使用。
@Override 公共视图onCreateView(最终LayoutInflater充气机,最终的ViewGroup容器,最终的捆绑包saveInstanceState){ ViewGroup viewGroup =(ViewGroup)inflater.inflate(R.layout.iap_web_payment,container,false); mParentContainer =(RelativeLayout)viewGroup.findViewById(R.id.iap_web_container); mWebView =(WebView)viewGroup.findViewById(R.id.wv_payment); mWebView.setWebViewClient(new IAPWebViewClient()); mWebView.getSettings()。setJavaScriptEnabled(true); mWebView.getSettings()。setSaveFormData(false); mWebView.getSettings()。setJavaScriptCanOpenWindowsAutomatically(true); mWebView.getSettings()。setUserAgentString(“ Mozilla / 5.0(iPhone; CPU iPhone OS 9_3,如Mac OS X)AppleWebKit / 601.1.46(KHTML,如Gecko)版本/9.0 Mobile / 13E233 Safari / 601.1”); mWebView.getSettings()。setDomStorageEnabled(true); mWebView.getSettings()。setAppCacheEnabled(true); mWebView.getSettings()。setLoadsImagesAutomatically(true); mWebView.getSettings()。setUseWideViewPort(true); createCustomProgressBar(mParentContainer,BIG);
mUrl = getWebUrl();
return viewGroup;
}
私有类IAPWebViewClient扩展了WebViewClient {
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
return false;
}
@TargetApi(Build.VERSION_CODES.N)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view,handler,error);
handler.proceed(); // Ignore SSL certificate errors
}
@SuppressWarnings("deprecation")
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
hideProgressBar();
}
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr) {
// Redirect to deprecated method, so you can use it in all SDK versions
if (rerr != null && shouldHandleError(rerr.getErrorCode())) {
if (isVisible()) {
onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString());
}
}
}
@Override
public void onPageFinished(final WebView view, final String url) {
hideProgressBar();
super.onPageFinished(view, url);
}
}