Выплата (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 | object | Параметр, в котором могут содержаться любые поля и значения, необходимые мерчанту для приема и обработки платежа на своей стороне при получении callback'a. Без изменений будет отправлено в callback после завершения обработки платежа в системе Kassa24 Business | Нет |
demo | boolean | Если true, то платеж будет произведен в демо-режиме, при котором средства не списываются со счета пользователя и не перечисляются на счет коммерсанта. По умолчанию false | Нет |
customerData | object | Параметр, в котором могут содержаться элементы email (необязательно), phone (необязательно), которые будут автоматически подставлены в форму оплаты | Нет |
type | 1 | Тип транзакции. 1 указывает на то что это выплата | Да |
Пример JSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
{ "type":1, "orderId":"1234567890", "merchantId":"1", "account":"[email protected]", "amount":10000, "returnUrl":"https://yoursite.kz/payment/complete", "callbackUrl":"https://yoursite.kz/callback?order=1234567890", "description":"Test payment for [email protected]", "customerData":{ "email":"[email protected]", "phone":"7773724757" }, “metadata”:{ “session”:” 3135c7fe-272f-46d0-a5f8-1ab2a59ac17c” } }
В ответ на создание выплаты будет возвращен номер выплаты в системе Kassa24 Business и url для перенаправления:
1 2 3 4
{ "url":"ecommerce.pult24.kz/payment/view?id=9876543210", "id":"9876543210" }
После того как клиент введет номер карты, приходит ответ (Callback).
Пример Callback
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
{ "orderId":"123", "id":"123", "account":"[email protected]", "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” } }
Пример кода для создания выплаты
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
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; }