You can split during a transaction made using _payment API by percentage, where you must ensure that the sum of percentage of all splits is equal to 100.
Note:
You must specify two decimal places for each split, but ensure the sum of percentage of all splits is equal to 100.
HTTP Method: POST
<PaymentAPIEnvironment />
Request parameters
Parameter | Description |
---|---|
key
|
|
txnid |
|
amount |
|
productinfo |
|
firstname |
|
email |
|
phone |
|
pg |
|
bankcode |
|
ccnum |
|
ccname |
|
ccvv |
|
ccexpmon |
|
ccexpyr |
|
furl |
|
surl |
|
splitRequest | JSON This parameter must include the split payment details in a JSON format. For more information, refer to splitRequest JSON fields description sub-section. |
hash |
|
address1 |
|
address2 |
|
city |
|
state |
|
country |
|
zipcode |
|
udf1 |
|
udf2 |
|
udf3 |
|
udf4 |
|
udf5 |
|
splitRequest JSON fields description
The following fields are included in the splitRequest parameter in a JSON format to specify the split by percentage details. The fields in the JSON format are described in the following table:
Field | Description | Example |
---|---|---|
type mandatory |
| percentage |
splitInfo |
| Refer the JSON request structure of splitInfo subsection. |
Sample JSON for splitRequest
Notes:
- Description of fields: Refer to splitRequest JSON fields description field.
- Before peruse the following sample code, remove the white spaces as some editors may introduce junk characters.
{
"type": "percentage",
"splitInfo": {
"merchantKey1": {
"aggregatorSubTxnId": "30nknyhkhib",
"aggregatorSubAmt": "53.33", // %age wrt to total payable amount
"aggregatorCharges": "13.33" // parent merchant commission (Optional) | %age wrt to total payable amount
},
"merchantKey2": {
"aggregatorSubTxnId": "13u0nknou0", //%age wrt to total payable amount
"aggregatorSubAmt": "13.33" // %age wrt to total payable amount
},
"merchantKey3": {
"aggregatorSubTxnId": "13u0nknou0",
"aggregatorSubAmt": "13.33", // %age wrt to total payable amount
"aggregatorCharges": "6.68" // parent merchant commission (Optional) | %age wrt to total payable amount
}
}
}
JSON request structure of splitInfo
The sample JSON structure for the splitInfo field:
Note:
Before peruse the following sample code, remove the white spaces as some editors may introduce junk characters.
{
"type":"absolute",
"splitInfo":{
"P****Y":{
"aggregatorSubTxnId":"9a70ea0155268**1001ba",
"aggregatorSubAmt":"50",
"aggregatorCharges":"20"
},
"P***K":{
"aggregatorSubTxnId":"9a70ea0155268**1001bb",
"aggregatorSubAmt":"30"
}
}
}
Hashing request
Added as extra parameter in the calculation of hash in case of providing Split Request at time of payment. This parameter will be at the end of the hash pattern. and required while sending Split Request at time of payment.
You need to generate a string using certain parameters and apply the SHA-512 algorithm to this string. For more information on hashing, refer to Generate Hash.
Note:
Ensure that you use pipe (|) character between these parameters as mentioned in the following code block.
The parameter order is in the following code block:
sha512(key|txnid|amount|productinfo|firstname|email|udf1|udf2|udf3|udf4|udf5||||||SALT|splitRequest)
Where, splitRequest
will be at the end of the hash pattern string.
Example:
hash('sha512', 'Ax4j7J|payment-txnid-1|10|Product Info|Payu-Admin|[email protected]|||||||||||t5atu4TyCvrJDPxAYrmfJfzd90kbXMfL|{"type":"absolute","splitInfo":{"P41sCY":{"aggregatorSubTxnId":"0e7411799c9f0e96620c11","aggregatorSubAmt":"3","aggregatorCharges":"2"},"P41sCK":{"aggregatorSubTxnId":"0e7411799c9f0e96620c22","aggregatorSubAmt":"5"}}}'));
Check the response from PayU
Hash validation logic for payment response (Reverse hashing)
Use the following algorithm for reverse hashing the response from PayU:
sha512(SALT|status|splitInfo||||||udf5|udf4|udf3|udf2|udf1|email|firstname|productinfo|amount|txnid|key)
Sample response
TDR model
The formatted response for the above sample request is similar to the following:
Array
(
[mihpayid] => 41**45678912383977
[mode] => CC
[status] => success
[unmappedstatus] => captured
[key] => Ax4j7J
[txnid] => 9a70ea0155268101001b
[amount] => 100.00
[cardCategory] => domestic
[discount] => 0.00
[net_amount_debit] => 100
[addedon] => 2021-12-22 19:02:15
[productinfo] => Product Info
[firstname] => Payu-Admin
[lastname] =>
[address1] =>
[address2] =>
[city] =>
[state] =>
[country] =>
[zipcode] =>
[email] => [email protected]
[phone] => 1234567890
[udf1] =>
[udf2] =>
[udf3] =>
[udf4] =>
[udf5] =>
[udf6] =>
[udf7] =>
[udf8] =>
[udf9] =>
[udf10] =>
[hash] => 6e700275583072c0361bac771a4166a4be5334112d59e40181c5668895c477a047c7be250068186fd26ca72928d7e168f92bb96003a7fffbf4933bb818f4c48a
[field1] => 5582299554914671900181
[field2] => 113476
[field3] => 100.00
[field4] => 41**45678912383977
[field5] => 100
[field6] => 02
[field7] => AUTHPOSITIVE
[field8] =>
[field9] => Transaction is Successful
[payment_source] => payu
[PG_TYPE] => AxisCYBER
[bank_ref_num] => 5582299554914671900181
[bankcode] => CC
[error] => E000
[error_Message] => No Error
[name_on_card] => Test User
[cardnum] => 512345XXXXXX2346
[cardhash] => This field is no longer supported in postback params.
[splitInfo] => {"splitStatus":"success","splitSegments":[{"merchantKey":"P41sCY","amount":50,"subvention_amount":0,"txnId":"9a70ea0155268101001ba"},{"merchantKey":"P41sCK","amount":30,"subvention_amount":0,"txnId":"9a70ea0155268101001bb"},{"merchantKey":"sd3fsmr","amount":20,"subvention_amount":0,"txnId":"9a70ea0155268101001b"}]}
)
Convenience fee model
The formatted response for the above sample request is similar to the following:
Array
(
[mihpayid] => 41**45678912383977
[mode] => CC
[status] => success
[unmappedstatus] => captured
[key] => Ax4j7J
[txnid] => 9a70ea0155268101001b
[amount] => 110.00
[cardCategory] => domestic
[discount] => 0.00
[net_amount_debit] => 110
[addedon] => 2021-12-22 19:02:15
[productinfo] => Product Info
[firstname] => Payu-Admin
[lastname] =>
[address1] =>
[address2] =>
[city] =>
[state] =>
[country] =>
[zipcode] =>
[email] => [email protected]
[phone] => 1234567890
[udf1] =>
[udf2] =>
[udf3] =>
[udf4] =>
[udf5] =>
[udf6] =>
[udf7] =>
[udf8] =>
[udf9] =>
[udf10] =>
[hash] => 6e700275583072c0361bac771a4166a4be5334112d59e40181c5668895c477a047c7be250068186fd26ca72928d7e168f92bb96003a7fffbf4933bb818f4c48a
[field1] => 5582299554914671900181
[field2] => 113476
[field3] => 110.00
[field4] => 41**45678912383977
[field5] => 100
[field6] => 02
[field7] => AUTHPOSITIVE
[field8] =>
[field9] => Transaction is Successful
[payment_source] => payu
[PG_TYPE] => AxisCYBER
[bank_ref_num] => 5582299554914671900181
[bankcode] => CC
[error] => E000
[error_Message] => No Error
[name_on_card] => Test User
[cardnum] => 512345XXXXXX2346
[cardhash] => This field is no longer supported in postback params.
[splitInfo] => {"splitStatus":"success","splitSegments":[
{"merchantKey":"P41sCY","amount":50,"subvention_amount":0,"txnId":"9a70ea0155268101001ba, “discount":0,"additionalCharges":0,”transaction_fee":0”},
{"merchantKey":"P41sCK","amount":30,"subvention_amount":0,"txnId":"9a70ea0155268101001bb, “discount”:0,"additionalCharges":0,"transaction_fee":0"}
,{"merchantKey":"sd3fsmr","amount":20,"subvention_amount":0,"txnId":"9a70ea0155268101001b, “discount”:0,"additionalCharges":10,"transaction_fee":0"}
]
}
)