Как интегрировать платежный шлюз приложения BHIM в приложение для Android через идентификатор upi?
Я понятия не имею о платежном шлюзе, я раньше не реализовывал платежный шлюз.
Пожалуйста, помогите мне, как интегрировать платежный шлюз в приложение для Android? (Я хочу интегрировать оплату через приложение BHIM)
Как интегрировать платежный шлюз приложения BHIM в приложение для Android?
Ответы (5)
Вы можете попробовать приложение, поддерживаемое DeepLinking UPI. Таким образом, вы можете совершить платеж через любое приложение, поддерживаемое UPI (BHIM, Phonepe, Paytm и все банковские приложения UPI).
Код для диплинкинга выглядит следующим образом:
Uri uri = Uri.parse("upi://pay?pa=8866616231@upi&pn=Aayushi%20Shah&tn=Test%20for%20Deeplinking&am=1&cu=INR&url=https://mystar.co"); // missing 'http://' will cause crashed
Log.d(TAG, "onClick: uri: "+uri);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivityForResult(intent,1);
Почти все приложения UPI успешно могут произвести платеж. Проблема в том, что не все приложения возвращаются независимо от того, была транзакция успешной или нет.
Я нахожу решение, в котором я могу принудительно открыть только BHIM, а не какое-либо другое приложение, поскольку BHIM дает правильный ответ.
Если вы хотите увидеть полную реализацию: https://github.com/ShahMalavS/UPI-DeepLinked
Вам необходимо внедрить UPI SDK в свое приложение. Некоторым банкам с поддержкой UPI разрешено действовать как PSP (поставщик платежных услуг), например Yes Bank, RBL, ICICI Bank, Axis Bank.
Вы должны сотрудничать с этим банком, и они предоставят вам SDK. Как только вы получите SDK, это будет легко, как подключи и играй.
Вы также можете прочитать о upi из
https://digidhan.mygov.in/pages/pdf/sbi/NPCI%20Unified%20Payment%20Interface.pdf
Вы можете попробовать DeepLinking UPI, чтобы запустить BHIM из своего приложения.
Код для диплинкинга выглядит следующим образом:
Uri uri = Uri.parse("upi://pay?pa=payee_address&pn=payee_name&tn=transaction_name&am=1&cu=INR&url=url");//url with http or https
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
//Now magic starts here
intent.setClassName("in.org.npci.upiapp","in.org.npci.upiapp.HomeActivity");
startActivityForResult(intent,1);
Вы можете открыть любое конкретное приложение, используя его packageName и ClassName.
Теперь вы можете получать платежи, используя только BHIM. Вы можете получить правильный ответ, используя BHIM.
Не ответ на вопрос. Но достаточно важный, чтобы его упомянуть.
Если вы решите принять платеж, обратите внимание, что UPI AFAIK не имеет механизма для проверки того, действительно ли платеж был зачислен на ваш счет. Это означает, что сервер не может проверить, была ли когда-либо транзакция или подлинность информации. Вам нужно будет уточнить в своем банке, предоставляют ли они для этого API.
AFAIK ICIC Bank и Yes Bank имеют API.
Что делать тогда? Зарегистрируйтесь в PayTM и проверьте свое приложение. PayTM позволяет вам ограничивать способы оплаты, поэтому вы можете указать только UPI. Также на момент написания UPI бесплатен без ограничений.
Если вам нужна интеграция платежей на основе UPI, то проще всего использовать Intent
См. следующее намерение оплаты UPI
private fun onPayClick() {
val uri: Uri = Uri.Builder().scheme("upi").authority("pay")
.appendQueryParameter("pa", "your-merchant-vpa@xxx")
.appendQueryParameter("pn", "your-merchant-name")
.appendQueryParameter("mc", "your-merchant-code")
.appendQueryParameter("tr", "your-transaction-ref-id")
.appendQueryParameter("tn", "your-transaction-note")
.appendQueryParameter("am", "your-order-amount")
.appendQueryParameter("cu", "INR")
.build()
val intent = Intent(Intent.ACTION_VIEW)
intent.data = uri
if (intent.resolveActivity(packageManager) == null) {
showMessage("No any payment app found to handle UPI payment")
} else {
startActivityForResult(intent, PAY_REQUEST_CODE)
}
}
Теперь в onActivityResult
получите детали транзакции
onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
if (requestCode == PAY_REQUEST_CODE) {
if (data != null) {
// Get Response from activity intent
val response = intent.getStringExtra("response")
}
}
}
Примечание. У вас должен быть аккаунт продавца, чтобы интегрировать это
Справочник по IMP: Пример Google Pay, Простой платеж UPI, Создание аккаунта продавца