The Collect Payment API (v2 Payment API) with the preAuthorize=1 in the additionalInfo object.
Note:You must use the additionalInfo.txnFlow must be set to nonseamless for PayU Hosted Checkout.
Reference:To handle redirect URLs (surl and furl), refer to Handling the Redirect URLs.
Environment
Test Environment | <https://apitest.payu.in/v2/payments |
Production Environment | <https://api.payu.in/v2/payments> |
Request header
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, in this case, it's "smsplus". |
algorithm | Indicates the hashing algorithm used for the HMAC signature. Here, it is set to "sha512". |
headers | Specifies which headers have been used in generating the hash. In this case, only the "date" header is used. |
signature | The actual HMAC signature generated using the specified algorithm (sha512) and includes the hashed data. For more information, refer to hashing algorithm. |
hashing algorithm
You must hash the request parameters using the following 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();
// var date = "Wed, 28 Jun 2023 11:25:19 GMT";
date = date.toUTCString();
// authorization
var authorization = getAuthHeader(date);
console.log(authorization);
function getAuthHeader(date) {
var AUTH_TYPE = 'sha512';
var data = isEmpty(request['data'])?"":request['data'];
var hash_string = data + '|' + date + '|' + merchant_secret;
console.log("Hash String is ", hash_string);
var hash = CryptoJS.SHA512(hash_string).toString(CryptoJS.enc.Hex);
var authHeader = 'hmac username="' + merchant_key + '", ' + 'algorithm="' + AUTH_TYPE + '", headers="date", signature="' + hash + '"'
return authHeader;
}
pm.environment.set('date', date);
pm.environment.set('authorization', authorization);
pm.environment.set('merchant_key',merchant_key);
pm.environment.set('merchant_secret',merchant_secret);
function isEmpty(obj) {
for(var key in obj) {
if(obj.hasOwnProperty(key))
return false;
}
return true;
}
Request body
Parameter | Description |
---|---|
accountId |
|
referenceId |
|
amount |
|
currency |
|
paymentSource |
|
order |
|
additionalInfo |
|
callBackActions |
|
billingDetails |
|
additionalInfo object fields description
Field | Description |
---|---|
enforcePaymethod |
|
txnFlow |
|
preAuthorize |
|
callbackActions object fields description
Field | Description |
---|---|
successAction |
|
failureAction |
|
cancelAction |
|
codAction |
|
termAction |
|
returnAction |
|
Error HandlingIf any error message is displayed with an error code, refer to the Error Codes section to understand the reason for these error codes.
order object fields description
Field | Description |
---|---|
productInfo |
|
userDefinedFields |
|
paymentChargeSpecification |
|
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. |
paymentChargeSpecification object fields description
Field | Description | Example |
---|---|---|
price |
This field must contain the price or transaction amount to be posted. |
10.00 |
billingDetails object field descriptions
Field | Description | Example |
---|---|---|
firstName |
First name of the billing contact |
Ashish |
lastName |
Last name of the billing contact |
Kumar |
phone |
Phone number of the billing contact |
9123456789 |
email |
Email address of the billing contact |
|
city |
City of the billing address |
Bengaluru |
state |
State of the billing address |
Karnatka |
country |
Country of the billing address |
Indiia |
zipCode |
Postal/Zip code of the billing address |
560071 |
Sample request
curl --location 'https://apitest.payu.in/v2/payments' \
--header 'date: Tue, 05 Nov 2024 06:12:57 GMT' \
--header 'authorization: hmac username="smsplus", algorithm="sha512", headers="date", signature="d583ff8069c7dfa8340464a24bdd01cbebf4432b4dfe4de862065cc9c9dc622c24c77cb1ac1142bf581ec07eca8d0ec78a66db93f6cd557d0da552f05c0825e3"' \
--header 'Content-Type: application/json' \
--header 'mid: 8390470' \
--header 'X-CREDENTIAL-USERNAME: UMXDPA' \
{
"accountId": "smsplus",
"referenceId": "b5f2d8785768087678fm9",
"paymentStatus": "SUCCESS",
"amount": 10,
"currency": "INR",
"paymentSource": "WEB",
},
"order": {
"productInfo": "string",
"orderedItem": [
{
"itemId": null,
"description": "AAA",
"quantity": null
}
],
"userDefinedFields": {
"udf1": "",
"udf2": "",
"udf3": "",
"udf4": "",
"udf5": "",
"udf6": "",
"udf7": "",
"udf8": "",
"udf9": "",
"udf10": ""
},
"paymentChargeSpecification": {
"price": 10
},
"additionalInfo": {
"txnFlow": "nonseamless",
"createOrder" : "false",
"preAuthorize": "1"
},
"callBackActions": {
"successAction": "https://pp78admin.payu.in/test_response",
"failureAction": "https://pp78admin.payu.in/test_response",
"cancelAction": "https://testapi.payu.in/admin/testresponsev2?action=cancelAction"
},
"billingDetails": {
"firstName": "sartaj",
"lastName": "",
"address1": "Test Payu Gurgaon",
"address2": "",
"city": "Bharatpur",
"state": "Rajasthan",
"country": "India",
"zipCode": "321028",
"phone": "9876543210",
"email": "[email protected]"
}
}
Response parameters
Parameter | Description |
---|---|
referenceId |
This parameter contains the reference 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
{
"result": {
"checkoutUrl": "https://pp78secure.payu.in/_payment_options?mihpayid=<mihpayuid>&userToken="
},
"status": "PENDING"
}
Reference:To check the transaction status, refer to Verify Payment API.