Implement UPI on Adyen Integration v2.0
Learn how to implement the UPI payment method on Adyen Integration v2.0, including setup, configuration, and enabling features like zero-amount validation and Real-Time Reconciliation.
Support for the UPI payment method on Adyen can be requested through the Specialized Payment Connections service at an additional cost.
Step 1. Prepare for the integration
Before implementing the UPI payment method on Adyen, ensure that all prerequisites outlined in the following sections are fulfilled.
UPI enablement and configuration
-
Ensure you have requested support for UPI on Adyen Integration v2.0 through the Specialized Payment Connections service.
-
Complete the following steps to activate the UPI payment method type on your tenant:
-
Click your username in the upper right and navigate to Settings > Payments > Payment Method .
-
Click Edit at the bottom of the page.
-
Select UPI and click Save .
-
Enablement of zero-amount validation
Contact Zuora to enable zero-amount validation by submitting a support ticket at Zuora Global Support . Include your tenant ID in your request.
Real-Time Reconciliation setup
To process UPI transactions, you must enable Real-Time Reconciliation. Follow the instructions in Enable and configure Real-Time Reconciliation for Adyen Integration v2.0 .
Step 3. Request a signature for the Payment Page
Follow the instructions in Request a signature for the Payment Page from Zuora . Because the Client-side HPM Parameter Validation feature is enabled, Zuora will validate the additional fields in the request by comparing them with the values specified in the digital signature.
Here are two request examples for the Generate RSA signature REST API operation.
{
"uri":"https://sandbox.na.zuora.com/apps/Pu...tedPageLite.do",
"method":"POST",
"pageId":"test808145b3bf9d0145b3c6812b0008",
"paymentGateway":"Adyen",
"authroizationAmount":"100",
"currency":"INR",
"accountId":"test808145b3bf9d0145b3c6812b0008"
}
{
"uri":"https://sandbox.na.zuora.com/apps/Pu...tedPageLite.do",
"method":"POST",
"pageId":"test808145b3bf9d0145b3c6812b0008",
"paymentGateway":"Adyen",
"accountId":"test808145b3bf9d0145b3c6812b0008"
}
Step 4. Set up your client code
Follow the instructions in Integrate Payment Pages 2.0 . When rendering the Payment Page form, specify the following required parameters in the Z.render or Z.renderWithErrorHandler function. For other optional parameters, see Client Parameters for Payment Pages 2.0 .
shopperEmail
If you want to include the shopper's email address in the request to the gateway, submit a ticket at Zuora Global Support
to enable this feature. You can then use the
param_gwOptions_shopperEmail
Gateway Options field to pass in the shopper's email address. If
param_gwOptions_shopperEmail
is not provided, the
shopperEmail
field in the payment request is populated with the email information of the account specified through
field_
accountId
, according to the following priority order, from highest to lowest:
-
BillTo work email
-
BillTo personal email
-
SoldTo work email
-
SoldTo personal email
In recurring payments and ad-hoc payments triggered from the Zuora UI or API operations, the
shopperEmail
field in the payment request is also populated in the preceding priority order.
shopperReference
The
shopperReference
field in the request to the gateway is populated with a UUID by default. If you want to use the Gateway Options field to override it, submit a ticket at Zuora Global Support
. You can then use the
param_gwOptions_shopperReference
Gateway Options field to pass in a value. If
param_gwOptions_shopperReference
is not provided,
shopperReference
is populated in the following priority order, from highest to lowest:
-
Zuora account number associated with the account ID specified through
field_accountId -
UUID
In recurring payments and ad-hoc payments triggered from the Zuora UI or API operations, the
shopperReference
field in the payment request is populated with the account number of the account specified in
field_accountId
.
Example
Here is an example of the parameters for the payment flow for processing the first one-time and subsequent recurring payments:
var params = {
field_upiTimerWindow:20,
doPayment:"true",
storePaymentMethod:"true",
field_accountId:"testc0f87596f2f301759c29443622fa",
documents:"[{"type":"invoice","ref":"INV00026338"}, {"type":"invoice","ref":"INV00026339"}]",
param_gwOptions_UpiMandateEnabled:"true",
param_gwOptions_UpiMandateAmount:100000,
param_gwOptions_UpiMandateAmountRule:"max",
param_gwOptions_UpiMandateFrequency:"adhoc",
param_gwOptions_UpiMandateStartsAt:"2024-05-06",
param_gwOptions_UpiMandateEndsAt:"2024-09-28",
param_gwOptions_UpiMandateRemarks:"sample message",
param_gwOptions_UpiMandateBillingAttemptsRule:"after",
param_gwOptions_UpiMandateBillingDay:"1"
};
Step 5. Implement the callback response
See Advanced Integration of Payment Pages 2.0 for more information.
Related information
-
Overview of Adyen Integration v2.0
-
Set up and configure an Adyen Integration v2.0 instance