Our Web Drop-in renders Paytm in your payment form, and redirects the shopper to Paytm to complete the payment.
When making a Paytm payment, you additionally need to:
- Handle the redirect result after the shopper returns to your website.
Before you begin
This page explains how to add Paytm to your existing Web Drop-in integration. The Web Drop-in integration works the same way for all payment methods. If you haven't done this integration yet, refer to our Drop-in integration guide.
Before starting your Paytm integration:
- Make sure that you have set up your back end implementation, and added Drop-in to your payments form.
- Add Paytm in your test Customer Area.
Show Paytm in your payment form
Drop-in uses the countryCode
and the amount.currency
from your /paymentMethods request to show the available payment methods to your shopper.
To show Paytm in your payment form, specify in your /paymentMethods request:
- countryCode: IN
- amount.currency: INR
Make a payment
When the shopper selects the Pay button, Drop-in calls the onSubmit
event, which contains a state.data
.
-
Pass the
state.data
to your server. -
From your server, make a /payments request, specifying:
paymentMethod
: Thestate.data.paymentMethod
from theonSubmit
event from your front end.shopperReference
(optional) : Your unique identifier for the shopper (minimum length three characters).For improved conversion rates, we recommend that you pass the
shopperReference
.
curl https://checkout-test.adyen.com/v66/payments \ -H "x-API-key: YOUR_X-API-KEY" \ -H "content-type: application/json" \ -d '{ "merchantAccount":"YOUR_MERCHANT_ACCOUNT", "reference":"YOUR_ORDER_NUMBER", "amount":{ "currency":"INR", "value":1000 }, "{hint:state.data.paymentMethod from onSubmit}paymentMethod{/hint}":{ "type":"paytm" }, "returnUrl":"https://your-company.com/checkout?shopperOrder=12xy.." }'
# Set your X-API-KEY with the API key from the Customer Area. adyen = Adyen::Client.new adyen.api_key = "YOUR_X-API-KEY" response = adyen.checkout.payments({ :amount => { :currency => "INR", :value => 1000 }, :reference => "YOUR_ORDER_NUMBER", :paymentMethod => { :type => "paytm" }, :returnUrl => "https://your-company.com/checkout?shopperOrder=12xy..", :merchantAccount => "YOUR_MERCHANT_ACCOUNT" })
// Set YOUR_X-API-KEY with the API key from the Customer Area. // Change to Environment.LIVE and add the Live URL prefix when you're ready to accept live payments. Client client = new Client("YOUR_X-API-KEY", Environment.TEST); Checkout checkout = new Checkout(client); PaymentsRequest paymentsRequest = new PaymentsRequest(); String merchantAccount = "YOUR_MERCHANT_ACCOUNT"; paymentsRequest.setMerchantAccount(merchantAccount); Amount amount = new Amount(); amount.setCurrency("INR"); amount.setValue(15000L); paymentsRequest.setAmount(amount); DefaultPaymentMethodDetails paymentMethodDetails = new DefaultPaymentMethodDetails(); paymentMethodDetails.setType("paytm"); paymentsRequest.setPaymentMethod(paymentMethodDetails); paymentsRequest.setReference("YOUR_ORDER_NUMBER"); paymentsRequest.setReturnUrl("https://your-company.com/checkout?shopperOrder=12xy.."); PaymentsResponse paymentsResponse = checkout.payments(paymentsRequest);
// Set your X-API-KEY with the API key from the Customer Area. $client = new \Adyen\Client(); $client->setXApiKey("YOUR_X-API-KEY"); $service = new \Adyen\Service\Checkout($client); $params = array( "amount" => array( "currency" => "INR", "value" => 1000 ), "reference" => "YOUR_ORDER_NUMBER", "paymentMethod" => array( "type" => "paytm" ), "returnUrl" => "https://your-company.com/checkout?shopperOrder=12xy..", "merchantAccount" => "YOUR_MERCHANT_ACCOUNT" ); $result = $service->payments($params);
#Set your X-API-KEY with the API key from the Customer Area. adyen = Adyen.Adyen() adyen.client.xapikey = 'YOUR_X-API-KEY' result = adyen.checkout.payments({ 'amount': { 'value': 1000, 'currency': 'INR' }, 'reference': 'YOUR_ORDER_NUMBER', 'paymentMethod': { 'type': 'paytm' }, 'returnUrl': 'https://your-company.com/checkout?shopperOrder=12xy..', 'merchantAccount': 'YOUR_MERCHANT_ACCOUNT' })
// Set your X-API-KEY with the API key from the Customer Area. var client = new Client ("YOUR_X-API-KEY", Environment.Test); var checkout = new Checkout(client); var amount = new Model.Checkout.Amount("INR", 1000); var details = new Model.Checkout.DefaultPaymentMethodDetails{ Type = "paytm" }; var paymentRequest = new Adyen.Model.Checkout.PaymentRequest { Reference = "YOUR_ORDER_NUMBER", Amount = amount, ReturnUrl = @"https://your-company.com/checkout?shopperOrder=12xy..", MerchantAccount = "YOUR_MERCHANT_ACCOUNT", PaymentMethod = details }; var paymentResponse = checkout.Payments(paymentsRequest);
// Set your X-API-KEY with the API key from the Customer Area. const {Client, Config, CheckoutAPI} = require('@adyen/api-library'); const config = new Config(); // Set your X-API-KEY with the API key from the Customer Area. config.apiKey = '[API_KEY]'; config.merchantAccount = '[YOUR_MERCHANT_ACCOUNT]'; const client = new Client({ config }); client.setEnvironment("TEST"); const checkout = new CheckoutAPI(client); checkout.payments({ amount: { currency: "INR", value: 1000 }, paymentMethod: { type: 'paytm' }, reference: "YOUR_ORDER_NUMBER", merchantAccount: config.merchantAccount, returnUrl: "https://your-company.com/checkout?shopperOrder=12xy.." }).then(res => res);
The /payments response contains:
-
action.method
: GET. The HTTP request method that you should use. After the shopper completes the payment, they will be redirected back to yourreturnURL
using the same method.
{ "resultCode":"RedirectShopper", "action":{ "method":"GET", "paymentData":"Ab02b4c0!BQABAgCSZT7t...", "paymentMethodType":"paytm", "type":"redirect", "url":"https://test.adyen.com/hpp/skipDetails.shtml?brandCode=paytm..." }, "details":[ { "key":"redirectResult", "type":"text" } ], ... }
- Pass the
action
object to your front end.
Handle the redirect result
Drop-in usesdropin.handleAction(action)
to redirect the shopper to Paytm. Handling the redirect works the same way for all redirect payment methods.
Drop-in uses dropin.handleAction(action)
to redirect the shopper to Paytm. After the shopper is redirected back to your website, check the payment result by making a POST /payments/details request, specifying:
-
paymentData
: The value your received in the /payments response. -
details
: Object that contains the URL-decoded values of the parameters that were returned when the shopper was redirected back to your site.
The /payments/details response contains:
-
resultCode
: Use this to present the payment result to your shopper. -
pspReference
: Our unique identifier for the transaction.
Present the payment result
Use the resultCode that you received the /payments/details response to present the payment result to your shopper.
The resultCode
values you can receive for Paytm are:
resultCode | Description | Action to take |
---|---|---|
Authorised | The payment was successful. | Inform the shopper that the payment has been successful. |
Cancelled | The shopper cancelled the payment while on their bank's website. | Ask the shopper whether they want to continue with the order, or ask them to select a different payment method. |
Refused | The payment was refused by the shopper's bank. | Ask the shopper to try the payment again using a different payment method. |
Pending or Received |
The shopper has completed the payment but the final result is not yet known. | Inform the shopper that you've received their order, and are waiting for the payment to be completed. You will receive the final result of the payment in an AUTHORISATION notification. |
If the shopper failed to return to your website or app, wait for notification webhooks to know the outcome of the payment:
eventCode | success field | Description | Action to take |
---|---|---|---|
AUTHORISATION | false | The transaction failed. | Cancel the order and inform the shopper that the payment failed. |
AUTHORISATION | true | The shopper successfully completed the payment. | Inform the shopper that the payment has been successful and proceed with the order. |
Test and go live
Before you go live, test your integration using the following credentials:
Mobile number | OTP | Password |
---|---|---|
7777777777 | 489871 | Paytm12345 |
Check the status of Paytm test payments in your Customer Area > Transactions > Payments.
Before you can accept live Paytm payments, you need to submit a request for Paytm in your live Customer Area.