Протокол обмена данными ерип

Обновлено: 04.07.2024

Протокол пакетного обмена создан для удобства одновременного проведения большого количества платежей, а также для повышения удобства реализации клиентского ПО, за счет переноса части клиентской логики на сервер.

Процедура обмена включает следующие этапы:

Шаг 1. Опрос баланса

Пример запроса баланса:
Описание:

Параметры запроса помещаются в элемент .
Тег включает в себя следующие теги:

– данный тег содержит номер версии протокола обмена;

– тег описывает данные авторизации: S1 – логин пользователя (кассира), S2 – Хэш-подпись пакета на отправку (см. Приложение А).

Ответ сервера:
Описание:

requestTimeout – рекомендуемый сервером интервал запроса статуса платежей в секундах. Вы можете использовать это число для отсчета времени (в секундах) перед запросом статуса. К указанному времени все платежи, посланные на обработку, должны быть проведены.

extra описывает составные части баланса: balance – баланс агента, overdraft – выставленный кредитный лимит. Общий баланс равен balance+overdraft.

Шаг 2. Онлайн проверка платежа

Пример запроса онлайн проверки:
Описание:

Параметры запроса помещаются в элемент .

Тег включает в себя следующие теги:

– данный тег содержит номер версии протокола обмена;

– тег описывает данные авторизации: S1 – логин пользователя (кассира), S2 – хэш-подпись пакета на отправку (см. Приложение А).

Тег содержит перечень платежей на проверку и включает в себя следующие теги:

– тег, содержащий данные о платеже

описывает конкретные платежи и включает в себя следующие теги:

– номер транзакции на терминале. Пара номер транзакции + номер терминала должны быть всегда уникальны;

- – дата распечатки чека в формате yyyymmddhhnnss;
- – номер чека – число 0..999999 последовательно закольцовано;

Ответ сервера:
Описание:

Шаг 3. Отправка запроса на проведение платежей

Пример запроса баланса:
Описание:

Параметры запроса помещаются в элемент . Тег включает в себя следующие теги:

– данный тег содержит номер версии протокола обмена;

– тег описывает данные авторизации: S1 – логин пользователя (кассира), S2 - хэш-подпись пакета на отправку (см. Приложение А).

– тег, содержащий данные о платеже

описывает конкретные платежи и включает в себя следующие теги:

– номер транзакции на терминале. Пара номер транзакции + номер терминала должны быть всегда уникальны;

- – дополнительное поле 1;
- – дополнительное поле N;

- – дата распечатки чека в формате yyyymmddhhnnss;
- – номер чека – число 0..999999 последовательно закольцовано;

Ответ сервера:

После отправки запроса на сервер, в ответ приходит пакет с результатами добавления транзакций в базу:

Описание:

requestTimeout – рекомендуемый сервером интервал запроса статуса платежей в секундах. Вы можете использовать это число для отсчета времени (в секундах) перед запросом статуса . К указанному времени все платежи, посланные на обработку, должны быть проведены.

status – статус транзакции после добавления в базу. Нормальным результатом добавления транзакции считается статус 25. Все остальные статусы могут возникать в результате исключительных ситуаций и по вопросам их возникновения необходимо обращаться в службу поддержки.

В случае если добавление транзакции завершилось со статусом отличным от 25, то необходимо проверить правильность формирования XML запроса и повторить отправку с другим номером транзакции

Шаг 4. Запрос о состоянии платежей

После добавления транзакции на сервере запускается процедура авторизации и проведения платежа, которая отправляет провайдеру запрос на проверку возможности проведения платежа и в случае положительного ответа провайдера – посылает команду на проведение. Каждый шаг этой операции сопровождается промежуточными статусами и кодами завершения. А также после успешного или ошибочного завершения операции, транзакции присваивается определенный статус и код результата завершения. В любой момент клиентское ПО может обратиться к серверу и опросить текущий статус транзакции и код результата завершения:

Пример запроса баланса:
Описание:

– информация о платеже. Тег содержит дочерний тег: - – номер транзакции, по которой необходимо узнать текущее состояние.

Ответ сервера:

После отправки запроса на сервер, в ответ приходит пакет с результатами обработки запрашиваемых транзакций:

Описание:

- false – статус промежуточный и обработка транзакции продолжается, необходим повторный запрос статуса для этой транзакции;
- true – статус является окончательным. Обработка транзакции прекращена сервером.

- false – если значение final-status – true (сервер прекратил обработку платежа), повторная отправка этого платежа на сервер, но с другим номером транзакции, даст другой результат (возможно платеж пройдет);
- true – обработка платежа завершена в результате фатальной ошибки, повторная отправка платежа с другим номером транзакции приведет к повторению той же ошибки.

Для обеспечения большей безопасности, при пересылке платежных пакетов вы можете использовать авторизацию с помощью специальной подписи (элемент sign-md5), которая формируется по следующему алгоритму:

Осуществляется MD5 хеширование результирующей строки. В результате будет получена строка MD5 последовательности из 32 байт: md5(transaction-number+password-md5))

Все полученные MD5 последовательности (для каждого элемента transaction-number) необходимо перевести в битовые массивы, соответствующие шестнадцатеричным кодам, и сложить по модулю 2 (XOR): сумма_транзакций=сумма_ транзакций XOR md5(transaction-number+password-md5))

Преобразовать полученный в результате всех операций битовый массив в строку, содержащую 32 символа шестнадцатеричных.

Полученную строку (длиной 32 символа) необходимо сложить с логином, номером терминала, номером запроса, MD5 от пароля: login+password-md5+terminal-id+request-type +сумма_транзакций

Осуществляется MD5 хеширование результирующей строки: sign-md5=md5(login+password_md5+terminal-id+request-type+сумма_транзакций)

Читайте также: