Двухэтапные транзакции (Cashout с предавторизацией)
Алгоритм работы
- Пользователь своими действиями запускает процесс оплаты или выплаты ( например, нажимает кнопку Оплатить).
- Сервер должен сгенерировать платежную информацию и отправить еe в Pult24.Ecommerce (см. Отправка данных).
- Если данные переданы корректно, в ответ вернется URL, куда следует перенаправить пользователя для ввода карты и номер выплаты/платежа в системе Kassa24 Business.
- После того как пользователь подтвердит введенную информацию, на указанный endpoint для коллбэков (пример запроса) будет выслано сообщение с информацией о выплате (успешном холде или ошибка).
- Cервер мерчанта должен отправить запрос на финализацию (пример запроса).
- В случае успешной финализации будет отправлен второй callback с информацией о выплате (успех/ошибка).
Финализация платежа
Данная операция применяется для операции двухэтапная выплата. Адрес отправки подтверждения https://ecommerce.pult24.kz/payment/processing/end
Формат данных:
Название переменной | Тип переменной | Описание переменной |
ID | string | Идентификатор транзакции в системе Kassa24 Business. Может быть получен 2 способами при создании транзакции или при получении Callback из поля id. |
action | string | Тип действия. Может принимать значения “approve” для подтверждения и “reject” для отмены транзакции соответственно. |
Пример тела запроса:
{
"ID":"1234567890123",
"action":"approve"
}
Пример успешного ответа:
{
"status":2
}
Пример неуспешного ответа.
В поле error будет содержаться описание ошибки.
{
"status":3
"error":"Карта клиента заблокирована"
}
Описание поля status
Описание статусов и действия при двухэтапных транзакциях:
Код статуса | Описание статуса | Порядок действий |
2 | Операция успешна | Запросите статус или дождитесь коллбэк. |
3 | Банк отклонил транзакцию | Запросите статус подтверждения (что транзакция неуспешна) или дождитесь коллбэк. |
4 | Транзакция не найдена | Проверьте запрос либо обратитесь в поддержку, так как данная транзакция не найдена в системе. |
5 | Ошибка системы | Возникли некоторые системные неполадки. Обратитесь в поддержку с предоставлением номера транзакции и тела запроса. |
31 | Ошибка | Повторите попытку позже. |
51 | Возможно, транзакция находится в обработке | Дождитесь коллбэк либо запросите статус транзакции. Если транзакция находится в холде, повторите проведение транзакции. |
Если вы получили нестандартный ответ, обратитесь в техподдержку Касса24 с предоставлением тела ответа нашей системы.
Иные возможные ошибки:
Нет соединения с интернетом | Если сайт находится в хостинге, обратитесь в техподдержку хостинга. Если сайт находится на другом сервисе, запросите информацию у данного сервиса. |
Ошибка таймаута запроса | Проверьте, находится ли наш сервис в черном списке вашего сервиса. Если он находится в черном списке, обратитесь в техподдержку вашего сервиса для получения информации о таймауте. Если наш сервис не находится в черном списке, сообщите в техподдержку Касса24. |
Коды статусов и действия при их получении
Название статуса | Значение статуса | Описание статуса | Порядок действий |
CREATED | 0 | Транзакция создана | |
RECREATED | 1 | Транзакция создана заново (повторная попытка) | |
PROCESSING_STARTED | 110 | Пользователь получил форму эквайринга. Отправка Callback не требуется | |
PROCESSING_IN_PROGRESS | 111 | Получен нефинальный статус эквайринга | |
PROCESSING_WAIT_CONFIRM | 112 | Ожидается ввод кода подтверждения | |
FINALIZING_IN_PROGRESS | 113 | Транзакция в процессе финализации | |
CANCELLING_IN_PROGRESS | 114 | Транзакция в процессе отмены | |
ATTEMPT_FAILED | 130 | Попытка провалилась в процессе оплаты | Повторите запрос подтверждения |
PROCESSING_HOLDED | 120 | Пользователь успешно забронировал платеж (холд/блок денег на карте) | Подтвердите либо отклоните транзакцию |
PH_CALLBACK_SUCCESS | 121 | Отправка коллбэка по захолдированному платежу успешна | Система ждет действий с вашей стороны |
PH_CALLBACK_FAILED | 122 | Отправка коллбэка по захолдированному платежу ошибочна | Повторите запрос статуса транзакции. Далее подтвердите либо отклоните платеж. |
PH_FINISHED | 240 | Транзакция успешно финализирована | |
PH_FINISH_ERROR | 242 | Транзакция финализирована с ошибкой. Повторная финализация невозможна / не имеет смысла | |
PROCESSING_SUCCESS | 210 | Транзакция успешно проведена. Отправка Callback не требуется | Пометьте в вашей системе транзакцию как неуспешную |
PS_CALLBACK_SUCCESS | 211 | Транзакция проведена. Callback отправлен и успешно обработан | В вашей системе транзакция должна пометиться как успешно проведенная |
PS_CALLBACK_FAILED | 212 | Транзакция проведена. Callback отправлен, но не обработан со стороны мерчанта | Проверьте интеграцию, так как наша система не получила корректный ответ от вашей системы |
PROCESSING_FAILED | 220 | Транзакция отклонена банком. Callback не отправлялся | Пометьте в вашей системе транзакцию как неуспешную |
PF_CALLBACK_SUCCESS | 221 | Транзакция отклонена банком. Callback отправлен и успешно обработан | Ваша система ответила корректно и пометила транзакцию как неуспешную |
PF_CALLBACK_FAILED | 222 | Транзакция отклонена банком. Callback отправлен, но не обработан со стороны мерчанта | Проверьте интеграцию, так как наша система не получила корректный ответ от вашей системы |
TIMEOUT | 230 | Срок ввода данных в форме оплаты истек. Callback не отправлялся | Пометьте в вашей системе транзакцию как неуспешную |
T_CALLBACK_SUCCESS | 231 | Срок ввода данных в форме оплаты истек. Callback отправлен и успешно обработан | Ваша система ответила корректно и пометила транзакцию как неуспешную |
T_CALLBACK_FAILED | 232 | Срок ввода данных в форме оплаты истек. Callback отправлен, но не обработан со стороны мерчанта | Проверьте интеграцию, так как наша система не получила корректный ответ от вашей системы |
PAYMENT_CANCELLED | 250 | Двухэтапная транзакция отменена. Callback не отправлялся | Пометьте транзакцию как неуспешную или отмененную |
PAYMENT_CANCELLED | 251 | Двухэтапная транзакция отменена. Callback отправлен и успешно обработан | Ваша система пометила транзакцию как неуспешную или отмененную |
PAYMENT_CANCELLED | 252 | Двухэтапная транзакция отменена. Callback отправлен, но не обработан со стороны мерчанта | Проверьте интеграцию, так как наша система не получила корректный ответ от вашей системы |
PAYMENT_REFUNDED | 260 | По транзакции был осуществлен возврат. Callback не отправлялся | Пометьте возврат как неуспешный или отмененный |
PAYMENT_REFUNDED | 261 | По транзакции был осуществлен возврат. Callback отправлен и успешно | Ваша система пометила возврат как успешный |
PAYMENT_REFUNDED | 262 | По транзакции был осуществлен возврат. Callback отправлен, но не обработан со стороны мерчанта | Проверьте интеграцию, так как наша система не получила корректный ответ от вашей системы |
Коды HTTP-ответов
200 | Запрос успешно выполнен | Обработать полученную информацию |
201 | Транзакция успешно создана | Перенаправить пользователя по полученной ссылке |
400 | Ошибочные входные данные, или невозможно обработать запрос с такими данными | Проверьте корректность данных запроса и повторно отправьте запрос позже |
404 | Запрашиваемая сущность не найдена | Проверьте данные запроса и адрес, по которому вы пытаетесь получить или отправить данные |
500/502 | Ошибка сервера | Обратитесь в техподдержку |
Пример кода запроса на подтверждение
$dataArray=array(
"ID"=>"1234567890123",
"action"=>"approve"
);
$data_string = json_encode ($dataArray, JSON_UNESCAPED_UNICODE);
$curl = curl_init( "https://ecommerce.pult24.kz/payment/processing/end");
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);
if($result->status!=1){
throw new Exception($result->error);
}