Платеж Android через веб-браузер не работает с картой Visa на шлюзе Worldpay. Работает нормально с PayPal.
@ Переопределить общедоступное представление onCreateView (конечный инфлятор LayoutInflater, финальный контейнер ViewGroup, финальный Bundle saveInstanceState) {ViewGroup viewGroup = (ViewGroup) inflater.inflate (R.layout.iap_web_payment, контейнер, false);mParentContainer = (RelativeLayout) viewGroup.findViewById (R.id.iap_web_container);mWebView = (WebView) viewGroup.findViewById (R.id.wv_payment);mWebView.setWebViewClient (новый IAPWebViewClient ());mWebView.getSettings () setJavaScriptEnabled (истина). mWebView.getSettings () setSaveFormData (ложь). . MWebView.getSettings () setJavaScriptCanOpenWindowsAutomatically (истина);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 (истина). mWebView.getSettings () setAppCacheEnabled (истина). . MWebView.getSettings () setLoadsImagesAutomatically (истина);mWebView.getSettings () setUseWideViewPort (истина). createCustomProgressBar (mParentContainer, BIG);
mUrl = getWebUrl();
return viewGroup;
}
закрытый класс IAPWebViewClient extends 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);
}
}