2014-04-02 13 views
7

से पोस्ट डेटा प्राप्त करें मैं अपने एंड्रॉइड ऐप में भुगतान गेटवे का उपयोग कर रहा हूं। मैं भुगतान पृष्ठ लोड करने के लिए वेबव्यू का उपयोग कर रहा हूं। मैंने भुगतान गेटवे पर एक रीडायरेक्ट यूआरएल प्रदान किया है, जिसमें भुगतान की पुष्टि के बाद वेबव्यू को रीडायरेक्ट किया जाएगा। बैंक (सफलता/विफलता) से पुष्टि इस यूआरएल पर वापस पोस्ट की जाएगी। लेनदेन सफल होने पर ग्राहक को दिखाने के लिए मैं अपने यूआरएल को इस यूआरएल पर रीडायरेक्ट कर सकता हूं कि लेनदेन सफल हो गया है। मुझे पोस्ट डेटा लाने की जरूरत है जो रीडायरेक्ट यूआरएल को भेजा गया है। लेनदेन सफल होने पर मुझे अपने ऐप में ऑर्डर देने की जरूरत है। मैं वर्तमान में क्या कर रहा हूं, मैं रीडायरेक्ट यूआरएल की जांच कर रहा हूं, चाहे वह सफल लेनदेन के लिए है। मैं जानना चाहता हूं कि मेरे लेनदेन की स्थिति की जांच करने के लिए कोई और तरीका है जिसका उपयोग मैं कर सकता हूं? यहाँ मेरी कोड है,एंड्रॉइड वेबव्यू

mWebview = (WebView)findViewById(R.id.webView1); 

       mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript 
       mWebview.getSettings().setAppCacheEnabled(false); 
       mWebview.getSettings().setLoadWithOverviewMode(true); 
       mWebview.getSettings().setUseWideViewPort(true); 
       mWebview.getSettings().setBuiltInZoomControls(true); 


       mWebview.setWebViewClient(new WebViewClient() { 
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
         Toast.makeText(activity, description, Toast.LENGTH_SHORT).show(); 
        } 

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


        @Override 
        public void onPageFinished(WebView view, String url) { 
         pd.dismiss(); 


         String webUrl = mWebview.getUrl(); 


         Log.i("RETURN URL", "RETURN URL IS "+webUrl); 


          if(url.equals("http://www.mydomain.in/trxn_complete")) //This is my method.But I think its ugly one 
         { 
           AlertDialog alertDialog = new AlertDialog.Builder(OnlinePaymentActivity.this).create();    

           alertDialog.setMessage("Transaction successful.Press OK to continue"); 
           alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
             public void onClick(DialogInterface dialog, int which) { 
              // TODO Add your code for the button here. 


               //Transaction success, So place order 
               new Orderitems(OnlinePaymentActivity.this).execute(); 




             } 
            }); 
           alertDialog.show(); 
         } 




} 

}); 


     mWebview .loadUrl("http://263.134.260.173/gateway/epi/fts?ttype="+type+"&tempTxnId="+tempTxnId+"&token="+token+"&txnStage="+txnStage); 




     } 
+0

आप अपनी समस्या हल है? –

उत्तर

0

इस के साथ प्रयास करें:

private static final String paymentReturnUrl="http:/yourUrl"; 

private class FormDataInterface { 

     @JavascriptInterface 
     public void processFormData(String url,String formData) { 
      Log.d(DEBUG_TAG,"Url:"+url+" form data "+formData); 
      if(url.equals(paymentReturnUrl)){ 
       HashMap<String,String> map=new HashMap<>(); 
       String[] values = formData.split("&"); 
       for(String pair :values){ 
        String[] nameValue=pair.split("="); 
        if(nameValue.length==2){ 
         Log.d(DEBUG_TAG,"Name:"+nameValue[0]+" value:"+nameValue[1]); 
         map.put(nameValue[0],nameValue[1]); 
        } 
       } 

       return; 
      } 
     } 
    } 

    private class CustomWebViewClient extends WebViewClient{ 
     private final String jsCode ="" + "function parseForm(form){"+ 
      "var values='';"+ 
      "for(var i=0 ; i< form.elements.length; i++){"+ 
      " values+=form.elements[i].name+'='+form.elements[i].value+'&'"+ 
      "}"+ 
      "var url=form.action;"+ 
       "console.log('parse form fired');"+ 
       "window.FORMOUT.processFormData(url,values);"+ 
    " }"+ 
     "for(var i=0 ; i< document.forms.length ; i++){"+ 
     " parseForm(document.forms[i]);"+ 
       "};"; 



     private static final String DEBUG_TAG = "CustomWebClient"; 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      if(url.equals(paymentReturnUrl)){ 
       Log.d(DEBUG_TAG,"return url cancelling"); 
       view.stopLoading(); 
       return; 
      } 
      super.onPageStarted(view, url, favicon); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      Log.d(DEBUG_TAG, "Url: "+url); 
      if(url.equals(paymentReturnUrl)){ 
       return; 
      } 
      view.loadUrl("javascript:(function() { " + jsCode + "})()"); 

      super.onPageFinished(view, url); 
     } 

    } 

और साथ वेबव्यू init:

webView.getSettings().setJavaScriptEnabled(true); 
webView.getSettings().setDomStorageEnabled(true); 
webView.addJavascriptInterface(new FormDataInterface(), "FORMOUT"); 
webView.setWebViewClient(new CustomWebViewClient()); 
संबंधित मुद्दे