UPI Intent Integration
Overview of the Paytm UPI Intent flow
- You can integrate the UPI Intent solution in your business app or mobile website (m-web). Here, a user will build his cart / shopping bag by adding products and will proceed for payment.
- Your backend server calls Initiate Transaction API to get the Transaction Token.
- You show the different payment modes available to the user e.g. Debit card, credit card, EMI, netbanking, UPI etc.
- User selects the payment mode as UPI. You will call the Process Transaction API with transaction token as received in response of Initiate Transaction API and paymentMode sent as UPI_INTENT. You will receive the deeplink provided by the paytm in the response.
- You will call the deeplink provided which will invoke all the UPI PSP Apps on the device and shown to the user.
- User selects the PSP App he wants to pay with and is redirected to it with details like amount, Payee VPA already filled.
- User enters the UPI PIN to complete the transaction.
- Post the debit and credit at payer and payee bank A/Cs, Paytm system will send a S2S notification to the merchant on specified URL.
- You can also call the Transaction Status API to confirm the payment status.
- User is shown the order confirmation screen after you receive the final payment status.
Demo of the UPI Intent
Flow diagram for UPI Intent Integration
Steps in processing payments through Paytm UPI Intent
STEP 1: Following are the pre-requisites for integrating the UPI Intent solution.
- MID: A unique merchant identifier issued by Paytm for your account.
- Merchant Key: This is a unique secret key used to secure encryption of every request. This needs to be kept on server side and should not be shared with anyone.
- Merchant website’s S2S notification URL: Paytm will send the transaction details/status on the callback URL provided by you.
STEP 2: Customize your payment page and Initiate the transaction
The user adds the product into the cart and goes to the payment page. You can show different payment options to the user like Credit/Debit card, Netbanking, UPI etc. on this page. Your backend server creates the order and calls Paytm's Initiate Transaction API. Paytm will provide a transaction token in the response to this request.
STEP 3: Call the Process Transaction API
The user selects the payment mode as UPI. You call the Process Transaction API with the transaction token received earlier. Paytm server on receiving Process transaction request, calls UPI Switch’s UPI Intent API. Once UPI Switch acknowledges the request, Paytm server sends the deeplink in response to Process Transaction API request.
STEP 4: Open the available PSP Apps on the user's phone
Your App receives the deeplink from your server which gives control to the android in order to open the available PSP Apps on the user’s device. The user can then select the PSP App of his choice from the different PSP Apps opened in order to proceed for the payment.
STEP 5: User selects the PSP App and proceeds for the payment
The user selects one of PSP App e.g. google pay to proceed for the payment for the order. User enters the UPI PIN on the NPCI main page opened by the PSP App with the order details like order amount and Payee VPA address are already filled.
STEP 6: Processing of payment transaction at PSP App and NPCI
After the user enters the UPI PIN and presses the submit button, PSP App sends the money request to NPCI which in turn will request UPI switch to resolve the merchant VPA (with user account number and ESN). UPI switch will validate the same and send the account details to NPCI. NPCI confirms the payment to both PSP App and the UPI Switch.
STEP 7 : PSP App gives the control back to Merchant App
After receiving the payment confirmation status, PSP App gives the control back to the merchant App. UPI Switch also forwards the payment status to the Paytm server.
STEP 8: Paytm server sends the payment status on merchant’s S2S URL
Paytm server sends the payment status on the S2S URL configured by the merchant. You should also validate the response via server-side request using Transaction Status API. This API requires checksumhash in request and response. You must verify the Order Id and Amount with your DB entries. The status should be treated as the final status of the transaction in all cases.