Overview
The document provides an overview and guidelines for integrating Pay-out
functionalities into your application. It covers the necessary steps,
APIs, and considerations required to enable seamless processing of payments
within your system. From initiating transactions to handling various payment
methods, this document aims to provide a comprehensive understanding of
integrating Pay-out features effectively.
Payout
Payouts are modern disbursement solutions provided by payment aggregators and gateways.
They enable businesses to send money to vendors, employees, partners, or customers quickly and securely through various payment methods such as bank transfers, UPI, wallets, and more.
Parameters:-
- "account" => "090701504594",
- "ifsc" => "ICIC0000907",
- "orderid" => "180000000000027",
- "name" => "vikas rai",
- "mode" => "IMPS",
- "method" => 1,
- "amount" => 100
Encrypt this all Parameters using your Secret key.
Request:-
{
"token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
"encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
}
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://Payoutapi.wavexpay.in/api/Payout',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{"token":"R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X","encrypt_data":"WnZlpdo8SLM\\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Response:-
Success
{
"Status":"INITIATE",
"Message":"Transaction Initiate Successfull",
"TxnID" :"187500010031007",
"OrderID":"187500010031007",
"Amount":300,
"RRN":"5768908909",
"Account":1800010031890,
"IFSC":"ICICI0044602",
"Name":"Test Test",
"Mode":"IMPS"
}
ERROR / FAILED
{
"Status":"ERROR",
"Message":"Duplicate Transaction",
"Errorcode":"103"
}
{
"token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
"encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"token\":\"R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X\",\"encrypt_data\":\"WnZlpdo8SLM\\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0=\"}");
Request request = new Request.Builder()
.url("http://Payoutapi.wavexpay.in/api/Payout")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
Response:-
Success
{
"Status":"INITIATE",
"Message":"Transaction Initiate Successfull",
"TxnID" :"187500010031007",
"OrderID":"187500010031007",
"Amount":300,
"RRN":"5768908909",
"Account":1800010031890,
"IFSC":"ICICI0044602",
"Name":"Test Test",
"Mode":"IMPS"
}
ERROR / FAILED
{
"Status":"ERROR",
"Message":"Duplicate Transaction",
"Errorcode":"103"
}
{
"token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
"encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
}
const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
const raw = JSON.stringify({
"token": "R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X",
"encrypt_data": "WnZlpdo8SLM/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
});
const requestOptions = {
method: "POST",
headers: myHeaders,
body: raw,
redirect: "follow"
};
fetch("http://Payoutapi.wavexpay.in/api/Payout", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));
Response:-
Success
{
"Status":"INITIATE",
"Message":"Transaction Initiate Successfull",
"TxnID" :"187500010031007",
"OrderID":"187500010031007",
"Amount":300,
"RRN":"5768908909",
"Account":1800010031890,
"IFSC":"ICICI0044602",
"Name":"Test Test",
"Mode":"IMPS"
}
ERROR / FAILED
{
"Status":"ERROR",
"Message":"Duplicate Transaction",
"Errorcode":"103"
}
{
"token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
"encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
}
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "http://Payoutapi.wavexpay.in/api/Payout");
var content = new StringContent("{\"token\":\"R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X\",\"encrypt_data\":\"WnZlpdo8SLM\\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0=\"}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
Response:-
Success
{
"Status":"INITIATE",
"Message":"Transaction Initiate Successfull",
"TxnID" :"187500010031007",
"OrderID":"187500010031007",
"Amount":300,
"RRN":"5768908909",
"Account":1800010031890,
"IFSC":"ICICI0044602",
"Name":"Test Test",
"Mode":"IMPS"
}
ERROR / FAILED
{
"Status":"ERROR",
"Message":"Duplicate Transaction",
"Errorcode":"103"
}
{
"token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
"encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
}
const axios = require('axios');
let data = JSON.stringify({
"token": "R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X",
"encrypt_data": "WnZlpdo8SLM/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'http://Payoutapi.wavexpay.in/api/Payout',
headers: {
'Content-Type': 'application/json'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response:-
Success
{
"Status":"INITIATE",
"Message":"Transaction Initiate Successfull",
"TxnID" :"187500010031007",
"OrderID":"187500010031007",
"Amount":300,
"RRN":"5768908909",
"Account":1800010031890,
"IFSC":"ICICI0044602",
"Name":"Test Test",
"Mode":"IMPS"
}
ERROR / FAILED
{
"Status":"ERROR",
"Message":"Duplicate Transaction",
"Errorcode":"103"
}
{
"token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
"encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
}
import http.client
import json
conn = http.client.HTTPConnection("http://payoutapi.wavexpay.in/api/payout", 8005)
payload = json.dumps({
"token": "R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X",
"encrypt_data": "WnZlpdo8SLM/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
})
headers = {
'Content-Type': 'application/json'
}
conn.request("POST", "/api/Payout", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Response:-
Success
{
"Status":"INITIATE",
"Message":"Transaction Initiate Successfull",
"TxnID" :"187500010031007",
"OrderID":"187500010031007",
"Amount":300,
"RRN":"5768908909",
"Account":1800010031890,
"IFSC":"ICICI0044602",
"Name":"Test Test",
"Mode":"IMPS"
}
ERROR / FAILED
{
"Status":"ERROR",
"Message":"Duplicate Transaction",
"Errorcode":"103"
}
Payout Webhook Response:-
A webhook system needs implementation to receive updates on payment statuses from the Payout API. Data in JSON format will be delivered through the webhook, facilitating efficient tracking and management of payment statuses in real-time.
Webhook Status:-
- SUCCESS
- FAILED
- REVERSAL
- PENDING
Response
{
"Status": "SUCCESS",
"Txnid": "187500010031002",
"OrderID" => "187500010031002",
"Amount": "200",
"RRN": "53253646467",
"Message": "NA",
'Account': "1800010031890",
'IFSC': "ICICI0044602",
'Name': "Test Test",
'Mode': "IMPS",
}
Payout Check Response:-
Status:-
- PROCESSING
- PENDING
- SUCCESS
- FAILED
- REVERSAL
- CANCELLED
Request:-
{
"token":"Uzh5WHNuZllrd0R6WEZxaFZJV2VDDDGGBMSlFwMGhZMGxGK2FHM2Np",
"txnid":"WXP9047953036032"
}
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://Payoutapi.wavexpay.in/api/PayoutCheckStatus',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"token":"Uzh5WHNuZllrd0R6WEZxaFZJV2VDDDGGBMSlFwMGhZMGxGK2FHM2Np",
"txnid":"WXP9047953036032"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Response:-
Success
{
"Status":"SUCCESS",
"TxnID":"187500010031007",
"OrderID" :"187500010031007",
"Amount":200,
"RRN":"1234567890"
}
ERROR / FAILED
{
"Status":"ERROR",
"Message":"Invalid Token",
"Errorcode":"103"
}
Encrypt Formate:-
$clientSecretKey = 'eXpKUWlrSWJLdjhPTUJ5UmdJcUJJZmdt';
$encrydata = [
"account" => "090701504594",
"ifsc" => "ICIC0000907",
"orderid" => "180000000000027",
"name" => "vikas rai",
"mode" => "IMPS",
"method" => 1,
"amount" => 100
];
$encryptedData = $this->encryptData($encrydata, $clientSecretKey);
$request = [
"token" => "R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X",
"encrypt_data" => $encryptedData
];
echo json_encode($request);
function encryptData($data, $secretKey)
{
$iv = random_bytes(16); // 16 bytes for AES-256
$cipher = 'AES-256-CBC';
$encrypted = openssl_encrypt(
json_encode($data), // Convert data to JSON
$cipher,
$secretKey,
0,
$iv
);
return base64_encode($iv . $encrypted); // Combine IV and encrypted data
}