例外当我将payu支付getway与Android应用程序集成时

时间:2016-01-12 04:35:12

标签: android

    public class MainActivity extends Activity {
        String merchant_key = "JBZaLc";
        String salt = "GQs7yium";
        String action1 = "";
        String base_url = "https://test.payu.in";
        String txnid = "TXN8367286482920";
        String amount = "1000";
        String productInfo = "This good Product";
        String firstName = "Rajesh";
        String emailId = "rajeshmcashc10@gmail.com";
        private String SUCCESS_URL = "https://www.payumoney.com/contactus.html";
        private String FAILED_URL = "https://www.payumoney.com/contactus.html";
        private String phone = "9999389917";
        private String serviceProvider = "payu_paisa";
        private String hash = "";
        Handler mHandler = new Handler();
        WebView webView;
        @SuppressLint("SetJavaScriptEnabled")


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            webView=(WebView)findViewById(R.id.webView);
            JSONObject productInfoObj = new JSONObject();
            JSONArray productPartsArr = new JSONArray();
            JSONObject productPartsObj1 = new JSONObject();
            JSONObject paymentIdenfierParent = new JSONObject();
            JSONArray paymentIdentifiersArr = new JSONArray();
            JSONObject paymentPartsObj1 = new JSONObject();
            JSONObject paymentPartsObj2 = new JSONObject();
            try {
                // Payment Parts
                productPartsObj1.put("name", "abc");
                productPartsObj1.put("description", "abcd");
                productPartsObj1.put("value", "1000");
                productPartsObj1.put("isRequired", "true");
                productPartsObj1.put("settlementEvent", "EmailConfirmation");
                productPartsArr.put(productPartsObj1);
                productInfoObj.put("paymentParts", productPartsArr);
                // Payment Identifiers
                paymentPartsObj1.put("field", "CompletionDate");
                paymentPartsObj1.put("value", "31/10/2012");
                paymentIdentifiersArr.put(paymentPartsObj1);
                paymentPartsObj2.put("field", "TxnId");
                paymentPartsObj2.put("value", txnid);
                paymentIdentifiersArr.put(paymentPartsObj2);
                paymentIdenfierParent.put("paymentIdentifiers",
                        paymentIdentifiersArr);
                productInfoObj.put("", paymentIdenfierParent);
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            productInfo = productInfoObj.toString();

            Log.e("TAG", productInfoObj.toString());

            Random rand = new Random();
            String rndm = Integer.toString(rand.nextInt())
                    + (System.currentTimeMillis() / 1000L);
            txnid = hashCal("SHA-256", rndm).substring(0, 20);

            hash = hashCal("SHA-512", merchant_key + "|" + txnid + "|" + amount
                    + "|" + productInfo + "|" + firstName + "|" + emailId
                    + "|||||||||||" + salt);

            action1 = base_url.concat("/_payment");

            webView.setWebViewClient(new WebViewClient() {

                @Override
                public void onReceivedError(WebView view, int errorCode,
                                            String description, String failingUrl) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, "Oh no! " + description,
                            Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onReceivedSslError(WebView view,
                                               SslErrorHandler handler, SslError error) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, "SslError! " + error,
                            Toast.LENGTH_SHORT).show();
                    handler.proceed();
                }

                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    Toast.makeText(MainActivity.this, "Page Started! " + url,
                            Toast.LENGTH_SHORT).show();
                    if (url.equals(SUCCESS_URL)) {
                        Toast.makeText(MainActivity.this, "Success! " + url,
                                Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(MainActivity.this, "Failure! " + url,
                                Toast.LENGTH_SHORT).show();
                    }
                    return super.shouldOverrideUrlLoading(view, url);
                }
                //
                // @Override
                // public void onPageFinished(WebView view, String url) {
                // super.onPageFinished(view, url);
                //
                // Toast.makeText(PayMentGateWay.this, "" + url,
                // Toast.LENGTH_SHORT).show();
                // }
            });

            webView.setVisibility(View.VISIBLE);
            webView.getSettings().setBuiltInZoomControls(true);
            webView.getSettings().setCacheMode(2);
            webView.getSettings().setDomStorageEnabled(true);
            webView.clearHistory();
            webView.clearCache(true);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.getSettings().setSupportZoom(true);
            webView.getSettings().setUseWideViewPort(false);
            webView.getSettings().setLoadWithOverviewMode(false);
            webView.addJavascriptInterface(new PayUJavaScriptInterface(MainActivity.this),
                    "PayUMoney");
            Map<String, String> mapParams = new HashMap<String, String>();
            mapParams.put("key", merchant_key);
            mapParams.put("hash", hash);
            mapParams.put("txnid", txnid);
            mapParams.put("service_provider", "payu_paisa");
            mapParams.put("amount", amount);
            mapParams.put("firstname", firstName);
            mapParams.put("email", emailId);
            mapParams.put("phone", phone);
            mapParams.put("productinfo", productInfo);
            mapParams.put("surl", SUCCESS_URL);
            mapParams.put("furl", FAILED_URL);
            mapParams.put("lastname", "Vijayakumar");
            mapParams.put("address1", "sdas");
            mapParams.put("address2", "dasd");
            mapParams.put("city", "adsa");
            mapParams.put("state", "asdas");
            mapParams.put("country", "adsas");
            mapParams.put("zipcode", "45465");
            mapParams.put("udf1", "sdaa");
            mapParams.put("udf2", "adsasd");
            mapParams.put("udf3", "adsad");
            mapParams.put("udf4", "adsd");
            mapParams.put("udf5", "dasdas");
            // mapParams.put("pg", (empty(PayMentGateWay.this.params.get("pg"))) ?
            // ""
            // : PayMentGateWay.this.params.get("pg"));
            webview_ClientPost(webView, action1, mapParams.entrySet());

        }

        public class PayUJavaScriptInterface {
            Context mContext;

            /**
             * Instantiate the interface and set the context
             */
            PayUJavaScriptInterface(Context c) {
                mContext = c;
            }

            public void success(long id, final String paymentId) {

                mHandler.post(new Runnable() {

                    public void run() {
                        mHandler = null;
                        Toast.makeText(MainActivity.this, "Success",
                                Toast.LENGTH_SHORT).show();
                    }
                });
            }
        }

        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>");
            Log.d("Tag", "webview_ClientPost called");
        //    webView.loadData(sb.toString(), "text/html", "utf-8");
            webView.postUrl("https://secure.payu.in/_payment", EncodingUtils.getBytes(sb.toString(), "base64"));

        }

        public boolean empty(String s) {
            if (s == null || s.trim().equals(""))
                return true;
            else
                return false;
        }

        public String hashCal(String type, String str) {
            byte[] hashseq = str.getBytes();
            StringBuffer hexString = new StringBuffer();
            try {
                MessageDigest algorithm = MessageDigest.getInstance(type);
                algorithm.reset();
                algorithm.update(hashseq);
                byte messageDigest[] = algorithm.digest();

                for (int i = 0; i < messageDigest.length; i++) {
                    String hex = Integer.toHexString(0xFF & messageDigest[i]);
                    if (hex.length() == 1)
                        hexString.append("0");
                       hexString.append(hex);
                }
            } catch (NoSuchAlgorithmException nsae) {
            }
            return hexString.toString();

        }
}

这是我的代码,我已经应用在与Android应用程序的payu支付度假集成但是当我在测试模式下运行此应用程序然后有异常到来

例外情况如下:

primary error: 3 certificate: Issued to: CN=*.payubiz.in,O=Payu Payments pvt. ltd.,L=Gurgaon,ST=Haryana,C=IN;
Issued by: CN=GeoTrust SSL CA - G3,O=GeoTrust Inc.,C=US;

这个异常来自onReceivedSslError方法请告诉我哪里出错了请帮忙: enter image description here 运行app后屏幕就像这样:

1 个答案:

答案 0 :(得分:0)

尝试使用以下商家和盐密钥进行payyou测试

 private String mMerchantKey = "gtKFFx";
    private String mSalt = "eCwWELxi";