Выполнение Java Script запускает Chrome, а не веб-представление - PullRequest
0 голосов
/ 07 сентября 2018

Я получаю форму в htmlString, после ее оборачивания в html, тега script и загрузки ее в веб-представление, я автоматически перенаправляю в chrome, что мне нужно сделать в веб-представлении.

Это платежная форма, и мне нужно показать процесс оплаты в моем веб-просмотре внутри моего приложения для Android.

String htmlResponse = "<HTML><BODY>"+htmlString+"</BODY> " +
                " <script> " +
                " document.getElementById('payfast-pay-form').submit(); " +
                " </script> " +
                " </HTML>";
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.loadData(htmlResponse , "text/html", "UTF-8");

Данные формы

<form id="payfast-pay-form" action="https://sandbox.payfast.co.za/eng/process" method="post"><input type="hidden" name="merchant_id" value="243627242"><input type="hidden" name="merchant_key" value="4343343535535"><input type="hidden" name="return_url" value="https://dev.xyz.com/app/bookings/234?complete=1"><input type="hidden" name="cancel_url" value="https://dev.xyz.com/bookings/234?complete=0"><input type="hidden" name="notify_url" value="https://dev-v1-0.xyz.com/itn/settlement"><input type="hidden" name="name_first" value="Agent testing"><input type="hidden" name="name_last" value="Saloni"><input type="hidden" name="email_address" value="saloni@gmail.com"><input type="hidden" name="m_payment_id" value="234"><input type="hidden" name="amount" value="10500"><input type="hidden" name="item_name" value="We Then"><input type="hidden" name="item_description" value="xyz Booking"><input type="hidden" name="custom_int1" value=""><input type="hidden" name="custom_int2" value=""><input type="hidden" name="custom_int3" value=""><input type="hidden" name="custom_int4" value=""><input type="hidden" name="custom_int5" value=""><input type="hidden" name="custom_str1" value="settlement-amount"><input type="hidden" name="custom_str2" value=""><input type="hidden" name="custom_str3" value=""><input type="hidden" name="custom_str4" value=""><input type="hidden" name="custom_str5" value=""><input type="hidden" name="payment_method" value=""><input type="hidden" name="signature" value="afwidufuwfiurgfiwgfugfiwfw83"></form>

1 Ответ

0 голосов
/ 07 сентября 2018

Клиент веб-просмотра отсутствовал в моем коде, поэтому я был перенаправлен в браузер Chrome.

WebViewClient webViewClient = new WebViewClient() {

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                showProgressDialogForAgent();
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                hideProgressDialog();
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {

                Log.e("shouldUrlLoading: ", request.getUrl().getPath());
                if (request.getUrl().getPath().equals("/app/bookings/"+id))
                switch (request.getUrl().getQueryParameter("complete")) {
                    case "1":
                        onPaymentSuccess();
                        break;
                    case "0":
                        onPaymentFailure();
                        break;
                }
                return super.shouldOverrideUrlLoading(view, request);
            }
        };
        webView.setWebViewClient(webViewClient);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...