Веб-браузер Android не работает для оплаты картой VISA через шлюз worldpay - PullRequest
0 голосов
/ 08 октября 2019

Платеж 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);
    }
}
...