Environment
Test Environment | <https://test.payu.in/info/linkAndPay/get\_emi\_checkout_details> |
Production Environment | <https://info.payu.in/linkAndPay/get\_emi\_checkout_details> |
Request Parameters
Header
The request header contains the following fields:
Field | Description | Example |
---|---|---|
Date |
The date and time should be in the GMT time conversion(not the IST). For example, current time in India is 18:00:00 IST, the time in the date header should be 12:30:00 GMT. |
Thu, 17 Feb 2022 08:17:59 GMT |
Digest |
Base 64 encode of (sha256 hash of the JSON data (post to server). |
|
Authorization |
This field is in the following format:
|
hmac username="smsplus", algorithm="hmac-sha256", headers="date digest", signature="zGmP5Zeqm1pxNa+d68DWfQFXhxoqf3st353SkYvX8HI=" |
platformId |
This field contains the platform ID and include the value as 1. |
1 |
Required parameters for calculating authorization
- Date
- Authorization
The following sample Java code contains the logic used to encrypt as described in the above table:
// 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 + '|' + pm.variables.get("merchantSalt");
console.log("Hash String is ", hash_string);
var hash = CryptoJS.SHA512(hash_string).toString(CryptoJS.enc.Hex);
var authHeader = 'hmac username="' + pm.variables.get("merchantKey") + '", ' + 'algorithm="' + AUTH_TYPE + '", headers="date", signature="' + hash + '"'
return authHeader;
}
pm.environment.set('date', date);
pm.environment.set('authorization', authorization);
function isEmpty(obj) {
for(var key in obj) {
if(obj.hasOwnProperty(key))
return false;
}
return true;
}
Body parameters
Field | Description | Example |
---|---|---|
Key |
|
Your Test Key |
requestId |
|
Test1234 |
amount |
|
{"amount":"10000"} |
pg |
|
BNPL |
Bankcode |
|
LAZYPAY |
phone |
|
“9999999999” |
payuToken |
|
Token12345 |
userCredentials |
|
abc:xyz |
Sample request
curl --location 'https://test.payu.in/info/linkAndPay/get_emi_checkout_details' \
--header 'x-credential-username: smsplus' \
--header 'Content-Type: application/json' \
--header 'authorization: hmac username="x0i6r2", algorithm="sha512", headers="date", signature="0e0ebc518c085d8ff49058b7c232bfe2e8779e9e9cafd34a4cdf1c11114035eea75b0e404a9b9e152757dbcc4926f78b6f18ba7f6643e2bf687a65942d3bde38"' \
--header 'date: Mon, 28 Oct 2024 10:34:49 GMT' \
--data '{
"amount": 2000000,
"userCredentials": "aaa:bbb",
"phone": "9560012582",
"bankCode": null,
"payuToken": null
}'
Authorization calculation logic:For authorization calculation logic, refer to Required parameters for calculating authorization.
Sample response
Success scenario
{
"bnpl":{
"all":[
{
"Lazypay":{
"status":1,
"kfsLink":"https://",
"eligible":true,
"customerLinked":true,
"PayuToken":"Token12345"
},
"Simpl":{
"status":1,
"availableBalance":500,
"kfsLink":"https://",
"eligible":true,
"customerLinked":true,
"PayuToken":"Token78901"
}
}
]
}
}
Failure scenario
- Customer eligible but not linked
{
"bnpl": {
"all": {
"Lazypay": {
"status": 1,
"kfsLink": "https://www.somekfsLink.com",
"eligible": true,
"customerLinked": false
}
}
}
}
- Customer not eligible
{
"Lazypay": {
"status": 1,
"eligible": false, // based on amount and not to return available balance if eligible is false
"customerLinked": false,
"failure_code": "E2408",
"failure_reason": "The transaction or loan amount is greater than the available credit line with the customer"
}
}