Sam
Sam

Reputation: 109

How to integrate BHIM app payment gateway in an Android App?

How to integrate BHIM app payment gateway in an android app, through upi id?
I have no idea about payment gateway,I have not implemented payment gateway before.

Please help me how to integrate payment gateway in an android app?(I want to integrate payment through BHIM app)

Upvotes: 9

Views: 29086

Answers (5)

Sumit Jain
Sumit Jain

Reputation: 1150

If you need payment integration based on UPI then the simplest way is to use Intent

Refer following UPI payment intent

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)
    }
}

Now in onActivityResult get transaction details

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")
        }
    }
}

Note: You need to have merchant account to integrate this

IMP Reference: Google Pay Example, Easy UPI Payment, Merchant Account Creation

Upvotes: 1

Hemil
Hemil

Reputation: 1036

Not an answer to the question. But important enough to be mentioned.

If you choose to take payment from, please note that UPI AFAIK has no mechanism to check if the payment has actually been deposited to your account. That means the server can't check if the transaction ever happened or the authenticity of information. You will have to check with your bank if they provide an API to do so.

AFAIK ICIC Bank and Yes Bank have an API.

What to do then? Register yourself with PayTM and get your app verified. PayTM allows you to restrict payment modes, so you can specify only UPI. Also at the time of writing, UPI is free of cost with no limit

Upvotes: 0

Pratig
Pratig

Reputation: 148

You can try DeepLinking UPI to start BHIM from your app.

Code for deeplinking is as follow:

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);

You can open any specific application using its packageName and ClassName.

Now you can collect payment using only BHIM. You can get proper response using BHIM.

Upvotes: 3

Malav Shah
Malav Shah

Reputation: 494

You can try DeepLinking UPI supported application. This way you can make a payment via any UPI supported application (BHIM, Phonepe, Paytm and all bank UPI apps)

Code for deeplinking is as follow:

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);

Almost all UPI application are successfully able to make the payment. The problem with this is, not all application are returning whether the transaction was a success or not.

I am finding a solution where i can force to open Only BHIM and not any other app, as BHIM is giving proper response back.

If you want to see the full implementation: https://github.com/ShahMalavS/UPI-DeepLinked

Upvotes: 8

Lalit Jadav
Lalit Jadav

Reputation: 1427

You need to implement UPI SDK in your application. Some UPI enabled banks are allowed to act PSP(Payment service Provider) like Yes Bank, RBL, ICICI Bank, Axis Bank.

You have to partner with that bank and they will provide you SDK. Once you get SDK, it is easy like plug n play.

You can also readout about upi from

https://digidhan.mygov.in/pages/pdf/sbi/NPCI%20Unified%20Payment%20Interface.pdf

Upvotes: 4

Related Questions