Выплата (Cashout)
Выплата — это платеж в обратную сторону, т. е. по завершении операции деньги получает клиент, а не мерчант.
Для выплат необходимо к стандартному запросу на создание транзакции добавить в JSON элемент type со значением 1 ("type":1)
- Пользователь своими действиями запускает процесс оплаты или выплаты (например, нажимает кнопку Оплатить).
- Сервер должен сгенерировать платежную информацию и отправить еe в Pult24.Ecommerce (см. Отправка данных).
- Если данные переданы корректно, в ответ вернется URL, куда следует перенаправить пользователя для ввода карты и номер выплаты/платежа в системе Kassa24 Business.
- После того как пользователь подтвердит введенную информацию, на указанный endpoint для коллбэков будет выслано сообщение с информацией о выплате/платеже (сообщение высылается для успешных, неуспешных и просроченных выплат).
Пример запроса на создание выплаты
Переменные
Название переменной | Тип переменной | Описание переменной | Обязательность (да/нет) |
merchantId | string | Продублировать логин в это поле | Да |
amount | int | Сумма платежа в тиынах (1 тенге = 100 тиын) | Да |
orderId | string | Номер платежа в системе принимающей стороны | Да |
returnUrl | string | URL-адрес, на который будет перенаправлен пользователь после оплаты | Нет |
callbackUrl | string | URL-адрес, на который будет отправлена информация после изменения платежа | Нет |
description | string | Параметр, являющий собой короткое описания платежа. Если указан, то будет отображен пользователю на форме оплаты | Нет |
metadata | objeсt | Параметр, в котором могут содержаться любые поля и значения, необходимые мерчанту для приема и обработки платежа на своей стороне при получении callback’а, т. е. содержимое metadata без изменений будет отправлено в callback после завершения обработки платежа в системе Kassa24 Business | Нет |
demo | boolean | Если true, то платеж будет произведен в демо-режиме, при котором средства не списываются со счета пользователя и не перечисляются на счет коммерсанта. По умолчанию false | Нет |
customerData | objeсt | Параметр, в котором могут содержаться элементы email (необязательно), phone (необязательно), которые будут автоматически подставлены в форму оплаты | Нет |
type | 1 | Тип транзакции. 1 указывает то что это выплата | Да |
Пример JSON
{
"type":1,
"orderId":"1234567890",
"merchantId":"1",
"account":"youremail@example.com",
"amount":10000,
"returnUrl":"https://yoursite.kz/payment/complete",
"callbackUrl":"https://yoursite.kz/callback?order=1234567890",
"description":"Test payment for youremail@example.com",
"customerData":{
"email":"youremail@example.com",
"phone":"7773724757"
},
“metadata”:{
“session”:” 3135c7fe-272f-46d0-a5f8-1ab2a59ac17c”
}
}
В ответ на создание выплаты будет возвращен номер выплаты в системе Kassa24 Business и url для перенаправления:
{
"url":"ecommerce.pult24.kz/payment/view?id=9876543210",
"id":"9876543210"
}
После того как клиент введет номер карты, приходит ответ (Callback).
Пример Callback
{
"orderId":"123",
"id":"123",
"account":"my@example.com",
"amount":10000,
"commission":100,
"commissionIncluded":true,
"attempt":1,
"returnUrl":"https://my.site.kz/",
"callbackUrl":"https://my.site.kz/",
"date":"2006-01-02T15:04:05",
"dateOut":"2006-01-02T15:04:05",
"status":1,
"errCode":0,
"errMessage":"Ошибок нет",
“metadata”:{
“session”:” 3135c7fe-272f-46d0-a5f8-1ab2a59ac17c”
}
}
Пример кода для создания выплаты
public function createCashout (array $data){
if($data["amount"]<=0){
throw new Exception('цена не указана или меньше 0');
}
$dataArray=array(
"type"=> 1,
"merchantId"=> $data["MerchId"],
"callbackUrl"=> $data["callback"],
"orderId" => $data['orderId'],
"description"=> $data['description'],
"demo" => $data['demo'],
"returnUrl" => $data['returnUrl']
);
if (isset($data['email'])|| isset($data['phone'])){
$dataArray['customerData']=array(
"email" => isset($data['email'])?$data['email']:"",
"phone" => isset($data['phone'])?$data['phone']:""
);
}
if (isset($data['metadata'])){
$dataArray["metadata"]=$data['metadata'];
}
$data_string = json_encode ($dataArray, JSON_UNESCAPED_UNICODE);
$curl = curl_init( "https://ecommerce.pult24.kz/payment/create");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
$headers = array(
"Content-Type: application/json",
"Authorization: Basic " . base64_encode($data["login"].':'.$data["pass"]),
'Content-Length: ' . strlen($data_string)
);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
if(curl_exec($curl) === false)
{
throw new Exception(curl_error($curl));
}
$result = curl_exec($curl);
curl_close($curl);
$result=json_decode($result);
return $result;
}