Bank offers on JS checkout can be integrated with minimal effort at merchant side. Merchant will have to just pass an object in initiate transaction API. Majority of the experience w.r.t payment page and offer validation would be managed at Paytm end. Merchant can show the offer details (discount/cashback) against a payment instrument to its end users (as shown in demo below) before the users clicks on the pay button and the transaction gets processed at our end. Here, merchant and Paytm both will modify the order once offer is successfully applied to any transaction for reconciliation purpose.
Bank offer integration with JS Checkout flow
- User adds a product/service to the cart and proceeds to checkout.
- You call the Initiate transaction API with “simplifiedPaymentOffers” as an object. To apply a specific promo code, you can use the “promoCode” parameter in the object above but to apply the best available offer as per the eligibility on a transaction, send the “applyAvailablePromo” parameter as “True” to get verified by Paytm. If you want to execute a transaction only with promo code successfully applied, then, you need to send the “validatePromo” parameter as “True”.
The default value against the “validatePromo” parameter is false. It is always recommended to keep the value as it is, unless you want to handle a specific use case.
- Paytm validates the availability of “simplifiedPaymentOffers" object and its parameter in Initiate transaction API.
- Paytm creates an order corresponding to your order details shared in the Initiate transaction API.
- Paytm checks for "promocode", "applyavailablepromo" and "validatepromo" params within the object and will return a transaction token accordingly
- Merchant validates the token and invokes JS checkout
- Paytm hits the Apply promo API internally to check for offer validation across payment instruments as per the parameter values within “simplifiedpaymentoffers” object shared in Initiate transaction API by the merchant. Users will see applicable discounts/ cashbacks on the checkout page itself before clicking on Pay button.
- User clicks on Pay button, Paytm hits Process transaction API
- Paytm validates the "promocode" and "applyavailablepromo" param values and accordingly may or may not internally hit our promo engine.
- Paytm checks the applicable offers for the transaction.
- After applying the promo successfully, Paytm modifies the order accordingly and shares the Process Transaction API response. This response though, does not convey any change in order due to offer applicability (eg. change in order value due to discount or amount of cashback applied). Based on the offer applicability, merchants may have to modify the order at their end as well. Hence, they need to integrate Transaction status API and Payment status Webhook, failing which, merchants won't get to know the final order and offer construct details which got processed ultimately. This is a mandatory step for bank offer integration with JS checkout flow.
You may check for more details for the same here.
In case of discount Paytm will only settle the discounted transaction amount.
For example: If the cart value of a customer is Rs 1000, and there is a bank offer which entitles a user a discount of Rs 100 on min cart value/order value of Rs 1000, then the effective order value would be Rs 900 only. Paytm will process the transaction which would be worth Rs 900.
In case of cashbacks, the transaction value would be Rs 1000 only, as cashbacks have to be honoured by banks.
Key scenarios of “simplifiedPaymentOffers” object
You can see below a few key scenarios to understand the “simplifiedPaymentOffers” object:
|1||NOT NULL||TRUE||TRUE||Both promo code and applyavailabelpromo can't be true for the same order. In this scenario, the Promocode param value would be given preference at paytm end.|
|2||NOT NULL||NULL||TRUE||Txn will only execute, if a given promocode is applicable, else the txn will fail.|
|3||NULL||NULL||FALSE||This is invalid, if both the 1st and 2nd params are null. There is no point of having this object at all let alone validatepromo|
|4||NULL||TRUE||FALSE||Txn will be executed even if there is no valid promo applicable|
|5||NULL||TRUE||TRUE||No txn will be executed, if no valid promo is available|
To apply the simplified bank offers on different Paytm instruments, you must comply with the following prerequisite:
- Create your own payment experience using the JS Checkout flow and process payment via Paytm.
- Configure the offers by contacting your Paytm's account manager or client management team.
Steps to process an offer
Step 1: Configure an offer
You can configure a bank offer by providing the offer construct in an email to your Paytm’s account manager, client management team, or you may contact us. Paytm has introduced a solution for select merchants to configure and customize the bank offers campaigns in a DIY mode through Paytm Dashboard. To get more information on this, refer to documentation mentioned on Offer configuration via Paytm Dashboard page.
Step 2: Initiate transaction with Bank Offer
You will pass a object “simplifiedPaymentOffers” with “promocode”,”applyavailablepromo” and ”validatepromo” in the Initiate transaction API parameter. Paytm will provide a transaction token in the response to this request.
Step 3: Process transaction
Call the Process Transaction API to process the transaction.
Step 4: Validating Checksum
Checksumhash received in response to the process transaction needs to be verified on the merchant server using Paytm library with all the parameters in the key-value pairs.
Step 5: Validate Transaction (Implementation: Mandatory)
You must validate the transaction response via server-side request using the Transaction Status API or Payment Status Webhook.
Webhook - Paytm sends a server to server (S2S) response in a key-value pair on the configured URL. Payment Status Webhook is sent only when the transaction has reached a terminal state (success/fail). To configure the URL, please connect with Paytm.
Transaction Status API: You should always validate transaction response via server-side request using the Transaction Status API. This API requires checksumhash in request and response.
The merchant receives “PAYABLE_AMOUNT” parameter and “PAYMENT_PROMO_CHECKOUT_DATA” object via Transaction Status API and Payment Status Webhook response which the merchant must mandatorily implement in their system to record the final payment details whenever a promocode or any bank offer is successfully applied.
- PAYABLE_AMOUNT: Original amount of the transaction which is sent in the Initiate transaction API
- PAYMENT_PROMO_CHECKOUT_DATA: This object contains the following parameters:
PARAMETER DESCRIPTION DATA TYPE SAMPLE VALUE promocode Actual promocode which got applied String HDFC10 promotext Promo message String Payment OK savings Benefit amount Numeric string 100 redemptionType discount/ cashback string Cashback