Net Banking Integration
This section describes the step-by-step procedure to integrate TPV with non-seamless flow.
Step 1: Post the payment request with PayU
Environment
Test Environment | https://apitest.payu.in/v2/payments |
Production Environment | https://api.payu.in/v2/payments> |
Request header
Request headers
Parameter | Description |
---|---|
date | The current date and time. For example, format of the date is Wed, 28 Jun 2023 11:25:19 GMT. |
authorization | The actual HMAC signature generated using the specified algorithm (sha512) and includes the hashed data. For more information, refer to authorization fields description. |
authorization fields description
Field | Description |
---|---|
username | Represents the username or identifier for the client or merchant, for example smsplus. |
algorithm | Use SHA512 algorithm for hashing and send this as header value. |
headers | Specifies which headers have been used in generating the hash, for example date. |
signature | The HMAC signature generated using the specified algorithm. For more information, refer to hashing algorithm. |
hashing algorithm
You must hash the request parameters using the following hash logic:
Hash logic: sha512(<Body data>
+ '|' + date + '|' + merchant_secret)
Where <Body data>
contains the request body posted with the request.
Sample header code
var merchant_key = 'smsplus';
var merchant_secret = 'izF09TlpX4ZOwmf9MvXijwYsBPUmxYHD';
// date
var date = new Date();
date = date.toUTCString();
// authorization
var authorization = getAuthHeader(date);
function getAuthHeader(date) {
var AUTH_TYPE = 'sha512';
var data = isEmpty(request['data']) ? "" : request['data'];
var hash_string = data + '|' + date + '|' + merchant_secret;
var hash = CryptoJS.SHA512(hash_string).toString(CryptoJS.enc.Hex);
return `hmac username="${merchant_key}", algorithm="${AUTH_TYPE}", headers="date", signature="${hash}"`;
}
Request parameters
Parameter | Description | Example |
---|---|---|
accountIdmandatory |
String Merchant key provided by PayU. Character limit: 50 |
"smsplus" |
txnIdmandatory |
String Unique transaction ID for the transaction. Character limit: 50 |
"REF_123456789" |
orderpaymentMethod |
Object JSON object contains payment method details. Refer to paymentMethod object |
{"name": "NetBanking", "bankCode": "AXNBTPV"} |
ordermandatory |
Object Order details containing product information and pricing. See order object |
{"productInfo": "Product Name", "paymentChargeSpecification": {"price": 1000.00}} |
billingDetailsmandatory |
Object Customer billing information. See billingDetails object |
{"firstName": "John", "email": "[email protected]", "phone": "9876543210"} |
callBackActionsmandatory |
Object Callback URLs for different payment outcomes. See callBackActions object |
{"successAction": "https://merchant.com/success", "failureAction": "https://merchant.com/failure"} |
additionalInfomandatory |
Object Additional transaction parameters including flow type. For more information, refer to additionalInfo object |
{"txnFlow": "non-seamless", "enforcePaymethod": "NB"} |
beneficiaryDetailmandatory |
Object JSON object to include TPV beneficiary details. For more information, refer to beneficiaryDetail object |
For more information, refer to beneficiaryDetail object |
paymentMethod Object
Parameter | Description |
---|---|
name
|
|
bankCode
|
|
beneficiaryDetail Object
beneficiaryDetail Object
Parameter | Description | Example |
---|---|---|
beneficiaryNamemandatory |
String Name of the beneficiary account holder. Character limit: 100 |
"Merchant Account" |
beneficiaryAccountNumbermandatory |
String Bank account number of the beneficiary. Character limit: 50 |
"1234567890" |
beneficiaryAccountTypemandatory |
String Type of beneficiary account (e.g., "SAVINGS" , "CURRENT" ). Character limit: 20 |
"SAVINGS" |
#####order object
order Object
Parameter | Description | Example |
---|---|---|
productInfomandatory |
Product details. | Product details |
orderedItemoptional |
Details about the items ordered. | Array of Objects |
userDefinedFieldsoptional |
Custom fields for additional information. Fields: udf1, udf2, udf3, udf4, udf5, udf6, udf7, udf8, udf9, udf10. For more information, refer to | Object |
paymentChargeSpecificationmandatory |
Includes amount and charges. For more information, refer to paymentChargeSpecification object fields description | Object |
paymentChargeSpecification object fields description
Parameter | Description | Example |
---|---|---|
pricemandatory |
The transaction amount. | 1000 |
netAmountDebitoptional |
Net amount to be debited. | 1000 |
taxSpecificationoptional |
Tax details of the product/order. | Object |
convenienceFeeoptional |
Fees format (e.g., CC:12). | CC:12 |
offersoptional |
Offers applied or available for the payment. | Object |
userDefinedFields object fields description
Field | Description |
---|---|
udf1 | User defined field. |
udf2 | User defined field. |
udf3 | User defined field. |
udf4 | User defined field. |
udf5 | User defined field. |
udf6 | User defined field. |
udf7 | User defined field. |
udf8 | User defined field. |
udf9 | User defined field. |
udf10 | User defined field. |
#####billingDetails object object
billingDetails Object
Parameter | Description | Example |
---|---|---|
firstNamemandatory |
First name of the billing contact. | Ashish |
lastNameoptional |
Last name of the billing contact. | Kumar |
address1mandatory |
Primary billing address. | 123 Main Street |
address2optional |
Secondary billing address. | Apt 4B |
phoneoptional |
Phone number of the billing contact. | 9123456789 |
emailmandatory |
Email address of the billing contact. | [email protected] |
cityoptional |
City of the billing address. | Bharatpur |
stateoptional |
State of the billing address. | Rajasthan |
countryoptional |
Country of the billing address. | India |
zipCodeoptional |
Postal/Zip code of the billing address. | 321028 |
#####callBackActions object
callBackActions Object
Parameter | Description | Example |
---|---|---|
successActionmandatory |
URL to be called on payment success. | https://example.com/success |
failureActionmandatory |
URL to be called on payment failure. | https://example.com/failure |
cancelActionmandatory |
URL to be called if user cancels the payment. | https://example.com/cancel |
codActionoptional |
URL for Cash on Delivery (COD) action. | https://example.com/cod |
#####additionalInfo object
additionalInfo Object
Parameter | Description | Example |
---|---|---|
enforcePaymethodoptional |
Force a transaction with a specified method.. | NB |
createOrderoptional |
A flag to store the order details (true/false). | true |
txnS2sFlowoptional |
For defining seamless/non-seamless flows in handling payments. | seamless |
Sample request
curl -X POST \
https://apitest.payu.in/v2/payments \
-H 'date: Mon, 05 Oct 2024 11:00:00 GMT' \
-H 'authorization: HMAC smsplus:4d1ea4e74243ea5b2b5b8b1d8a7b1a2e3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9' \
-H 'content-type: application/json' \
-d '{
"accountId": "smsplus",
"referenceId": "REF_" + Math.random().toString(36).substring(7),
"paymentMethod": {
"name": "NetBanking",
"bankCode": "AXNBTPV"
},
"order": {
"productInfo": "Net Banking Payment",
"paymentChargeSpecification": {
"price": 10000.00,
"convenienceFee": "NB:15"
},
"userDefinedFields": {
"udf1": "Net Banking Transaction",
"udf2": "Seamless Payment"
}
},
"billingDetails": {
"firstName": "John",
"lastName": "Doe",
"email": "[email protected]",
"phone": "9876543210",
"address": "123 Main Street",
"city": "New Delhi",
"state": "Delhi",
"country": "India",
"zipCode": "110001"
},
"callBackActions": {
"successAction": "https://merchant.com/success",
"failureAction": "https://merchant.com/failure",
"cancelAction": "https://merchant.com/cancel"
},
"additionalInfo": {
"txnFlow": "seamless",
"createOrder": true,
"enforcePaymethod": "NB",
"txnS2sFlow": "2"
},
"beneficiaryDetail": {
"beneficiaryName": "Merchant Account",
"beneficiaryAccountNumber": "1234567890",
"beneficiaryAccountType": "SAVINGS"
}
}'
Step 2: Check the response from PayU
Response parameters
Response parameters
Parameter | Description |
---|---|
txnId | This parameter contains the transaction ID of the transaction. |
paymentId | This parameter contains the payment ID of the transaction. |
message | This parameter contains the status message of the transaction. |
Sample response
Sample response
Array
(
[txnId] => b5f2d8785768087678fm9
[paymentId] => 1999110000001769
[message] => Please call verify api to get the transaction status
)
Verify Payment
ImportantAfter creating a payment, you must call the Verify Payment API to get the final transaction status. Net Banking transactions may require additional verification steps.
Updated 5 days ago