Payu payement error “Some error occurred, Try again!”

北战南征 提交于 2019-12-31 03:54:28

问题


I have integrated payu into my android app through official docs at https://www.payumoney.com/dev-guide/mobilecheckout/android.html#prereq .

The problem i'm facing is that my code works perfectly with test credentials, and fails when i use credentials of my live account that i want to integrate in the app.

   public void makePayment(View view) {
    String phone = "8882434664";
    String productName = "product_name";
    String firstName = "piyush";
    String txnId = "0nf7" + System.currentTimeMillis();
    String email = "piyush.jain@payu.in";
    String sUrl = "https://test.payumoney.com/mobileapp/payumoney/success.php";
    String fUrl = "https://test.payumoney.com/mobileapp/payumoney/failure.php";
    String udf1 = "";
    String udf2 = "";
    String udf3 = "";
    String udf4 = "";
    String udf5 = "";
    boolean isDebug = true;

    String key = "2fcU3pmI";
    String merchantId = "4947182";// These credentials are from https://test.payumoney.com/ 
    String salt = "BxA24L2F7Z";   //  THIS WORKS

  /*  String key = "yX8OvWy1";     //These credentials are from https://www.payumoney.com/ 
    String merchantId = "5826688"; //THIS DOESN'T WORK
    String salt = "0vciMJBbaa";    //ERROR: "some error occurred, Try again"
  */

    PayUmoneySdkInitilizer.PaymentParam.Builder builder = new PayUmoneySdkInitilizer.PaymentParam.Builder();


    builder.setAmount(getAmount())
            .setTnxId(txnId)
            .setPhone(phone)
            .setProductName(productName)
            .setFirstName(firstName)
            .setEmail(email)
            .setsUrl(sUrl)
            .setfUrl(fUrl)
            .setUdf1(udf1)
            .setUdf2(udf2)
            .setUdf3(udf3)
            .setUdf4(udf4)
            .setUdf5(udf5)
            .setIsDebug(isDebug) //Also can someone clarify if this should be true/false for live mode
            .setKey(key)
            .setMerchantId(merchantId);

    PayUmoneySdkInitilizer.PaymentParam paymentParam = builder.build();


    String hash = hashCal(key + "|" + txnId + "|" + getAmount() + "|" + productName + "|"
            + firstName + "|" + email + "|" + udf1 + "|" + udf2 + "|" + udf3 + "|" + udf4 + "|" + udf5 + "|" + salt);
    Log.d("app_activity123", hash);
    paymentParam.setMerchantHash(hash);

    PayUmoneySdkInitilizer.startPaymentActivityForResult(MyActivity.this, paymentParam);

}

Extra Info: Test credentials weren't working initially. I had to contact the payu support team to activate the account after which the code was working fine. My employer said he has activated the live account so i don't know what is the issue here.

There are no other issues like mine here, the closest one is here PayuMoney Integration in Android : Some error occured! Try again and it is unanswered.


回答1:


setIsDebug(boolean) you need to pass false as parameter in this method to use live payment and true when testing in live mode. I've set it to false and used Real Merchant id,salt and key and it worked, no errors. Hope this helps someone.




回答2:


Debug into PayUmoneyActivity ErrorResponse contains the actual error. It may be hash mismatch or wrong key.

@override
public void onFailureResponse(ErrorResponse response, String tag) {
mProgressDialog.dismiss();
Toast.makeText(context, "Some error occured", 
Toast.LENGTH_SHORT).show();
finish();
}

this method in PayUmoneyActivity does not show error from errorresponse. just the general error. which is very problematic to debug.




回答3:


I think your problem is in the line

'PayUmoneySdkInitilizer.startPaymentActivityForResult(MyActivity.this, paymentParam);'.

The official document states that you have to start transaction by using

'PayUmoneyFlowManager.startPayUMoneyFlow(paymentParam,this, R.style.AppTheme_default, false);'


来源:https://stackoverflow.com/questions/44861651/payu-payement-error-some-error-occurred-try-again

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!