Отмена заказа через API


Обычно отмена платежа производится в системе eCom. В случае если коммерсанту нужно автоматизировать этот процесс, то можно воспользоваться специальным вызовом API.

Запрос на отмену платежа должен быть отправлен в eCom методом POST на адрес https://jpay.jysanbank.kz/ecom/api.

Параметры запроса коммерсанта на отмену заказа:
Наименование Обязательность Формат Описание
ORDER Да N(6 - 10) Номер заказа, должен быть тот-же что и в операции заказа
MERCHANT Да C(6 - 15) Идентификатор коммерсанта
REV_AMOUNT Да N(1 - 13) Сумма отмены (в валюте заказа), должна быть не более суммы заказа! Разделитель - точка
REV_DESC Да C(1 – 400) Описание причины отмены заказа
LANGUAGE Нет С(2) Предпочтительный язык клиента, поддерживаются значения «ru» и «en»
P_SIGN Да C(80 - 250) Подпись заказа

Алгоритм формирования подписи в поле P_SIGN следующий: нужно собрать в одну строку значения полей заказа (без LANGUAGE!) через разделитель «;», затем добавить эту строку к значению секретного ключа SHARED_SECRET (этот ключ индивидуальный для каждого коммерсанта), и вычислить из полученной строки значение хэш SHA512. В строке REV_DESC перед обработкой нужно убрать все переносы строк. Например, на PHP это будет выглядеть так:

vSign=hash("sha512",C_SHARED_KEY.$_POST["ORDER"].";".$_POST["MERCHANT"].";".$_POST["REV_AMOUNT"].";".preg_replace("/\n|\r/g","",$_POST["REV_DESC"]).";"););

Обратите внимание! В продуктовой системе хэш должен вычисляться не в браузере на стороне клиента, а в процедуре на стороне web-сервера коммерсанта!

Пример на странице test.html – только для тестирования.

Секретный ключ SHARED_SECRET ни в коем случае не должен быть доступен кому-либо вне Вашего сервера!

Пример вычисления есть на странице примера https://ecom.jysanbank.kz:8462/ecom/static/e/test_rev.html.

В ответe вернется результат регистрации операции заказа в виде XML:
<?xml version="1.0" encoding="utf-8"?>
    <result>
        <code>0</code>
        <description>Зарегистрирована заявка на отмену заказа '0000000034' на сумму '0.99'
        </description>
    </result>


Возможные коды результата регистрации отмены заказа:
Код Описание (ru) Описание (en)
0 Зарегистрирована заявка на отмену заказа '%s' на сумму '%s' Request of cancellation/refund of order '%s' is registered, amount '%s'
41 Сервис временно недоступен, попробуйте позже. %s. Service temporary unavailable, try again later. %s.
42 Неправильная сумма: %s Amount is invalid: %s
43 Сервис Db временно недоступен, попробуйте позже Db service temporary unavailable, try again later
44 Неправильное значение в поле MERCHANT: '%s' Merchant is invalid: '%s'
45 Заявка ORDER=%s не найдена Order '%s' is not found
46 Неправильная подпись! Signature is invalid!
47 Сумма возврта '%s' больше чем сумма заказа '%s' Refund amount '%s' is greater than the order amount '%s'
48 Текущий татус заказа не позволяет делать возврат/отмену Сurrent status of order does not allow to make it refund / cancel
50 Неправильное значение в поле '%s' : '%s' Value of param '%s' is invalid: '%s'
51 Текущий статус терминала '%s' не позволяет производить операции Current status of terminal '%s' does not allow operations
52 Операция отмены/возврата через API для терминала '%s' запрещена API refunding operation for terminal '% s' is forbidden

Отмена заказа производится в фоновом режиме. Результат выполнения операции отмены заказа точно так-же как и при отмене через систему eCom, отправляется на адрес BACKREF заданный в параметре BACKREF основной операции или в настройках коммерсанта по умолчанию.