Payu payement error "Произошла ошибка, попробуйте еще раз!"
Я интегрировал Payu в свое приложение для Android через официальные документы по адресу https://www.payumoney.com/dev-guide/mobilecheckout/android.html.
Проблема, с которой я сталкиваюсь, заключается в том, что мой код отлично работает с тестовыми учетными данными и дает сбой, когда я использую учетные данные моей реальной учетной записи, которую я хочу интегрировать в приложение.
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);
}
Дополнительная информация: Тестовые учетные данные не работали изначально. Мне пришлось связаться со службой поддержки Payu, чтобы активировать учетную запись, после чего код работал нормально. Мой работодатель сказал, что он активировал реальный счет, поэтому я не знаю, в чем здесь проблема.
Здесь нет других проблем, подобных моей, самая близкая здесь - интеграция PayuMoney в Android: произошла ошибка! Попробуйте еще раз, и это без ответа.
3 ответа
setIsDebug(boolean)
в этом методе необходимо передать значение false в качестве параметра для использования реального платежа и значение true при тестировании в режиме реального времени. Я установил его в false и использовал идентификатор Real Merchant, соль и ключ, и это сработало, без ошибок. Надеюсь, это кому-нибудь поможет.
Отладка в PayUmoneyActivity ErrorResponse содержит фактическую ошибку. Это может быть несоответствие хеша или неправильный ключ.
@override
public void onFailureResponse(ErrorResponse response, String tag) {
mProgressDialog.dismiss();
Toast.makeText(context, "Some error occured",
Toast.LENGTH_SHORT).show();
finish();
}
этот метод в PayUmoneyActivity не показывает ошибку из-за ошибки-ответа. просто общая ошибка. что очень проблематично для отладки.
Я думаю, что ваша проблема в линии
'PayUmoneySdkInitilizer.startPaymentActivityForResult(MyActivity.this, paymentParam);'.
Официальный документ гласит, что вы должны начать транзакцию, используя
'PayUmoneyFlowManager.startPayUMoneyFlow(paymentParam,this, R.style.AppTheme_default, false);'