Reputation: 11
The process should be simple:
query(with POST data) -> set in-> WebView. i try to integrate a payment gate page which open in web view .i have a post url link and some param .i am use this code
postData = "hash="+hash+"&key="+key+"&txnid="+txnid+"&amount="+amount+"&productinfo="+productinfo+"&firstname="+firstname+"&email="+email+"&phone="+phone+"&salt="+salt+"&surl="+surl+"&furl="+ furl+"&service_provider="+ service_provider;
// Javascript inabled on webview
webView.getSettings().setJavaScriptEnabled(true);
// Other webview options
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(false);
webView.getSettings().setBuiltInZoomControls(true);
//webView.getSettings().setPluginState(PluginState.ON);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient(){
//If you will not use this method url links are open in new browser not in webview
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.postUrl("https://test.payu.in/_payment", EncodingUtils.getBytes(postData, "base64"));
return false;
}
});
//webView.postUrl("https://test.payu.in/_payment", EncodingUtils.getBytes(postData, "base64"));
please help me when i open by using external browser payment page open .but when i try to open in side webview its not work.
Upvotes: 0
Views: 2933
Reputation: 3334
I have same problem, i am able to post url in webview successfully but next page not opening in web view
i try below code pg page show in webview
add below setting in webview
webView.getSettings().setUserAgentString("Mozilla/5.0 (Linux; U; Android 2.0; en-us; Droid Build/ESD20) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17");
webView.getSettings().setDomStorageEnabled(true);
override onReceivedSslError() method.
webView.setWebViewClient(new WebViewClient() {
public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) {
handler.proceed() ;
}
public boolean shouldOverrideUrlLoading(WebView view, String url) {
webView.loadUrl(url);
return false;
}
});
Hope helpful for other.
Upvotes: 0
Reputation: 1459
String url = "https://test.payu.in/_payment";
Map<String, String> mapParams = new HashMap<String, String>();
mapParams.put("amount", "100");
mapParams.put("productinfo", "ipad");
webview_ClientPost(webView, url, mapParams.entrySet());
public void webview_ClientPost(WebView webView, String url, Collection< Map.Entry<String, String>> postData){
StringBuilder sb = new StringBuilder();
sb.append("<html><head></head>");
sb.append("<body onload='form1.submit()'>");
sb.append(String.format("<form id='form1' action='%s' method='%s'>", url, "post"));
for (Map.Entry<String, String> item : postData) {
sb.append(String.format("<input name='%s' type='hidden' value='%s' />", item.getKey(), item.getValue()));
}
sb.append("</form></body></html>");
webView.loadData(sb.toString(), "text/html", "UTF-8");
}
Upvotes: 2