Разработчикам

Документация по подключению и API

Взаимодействие между магазином и Paybox

Обмен информацией между магазином и Paybox может происходить двумя способами:

1
Напрямую, через вызов определенных URL
2
Через браузер пользователя

При обмене данными действует правило именования параметров: имена всех параметров, которые касаются взаимодействия PayBoxа и магазина, имеют префикс pg_, все прочие параметры его не имеют.

Во всех денежных суммах для отделения дробной части используется точка. Если число целое, то указание дробной части необязательно. Число знаков после точки – не более двух. Тысячи не отделяются никакими знаками.

Любые сообщения (запросы и ответы) между PayBoxом и магазином подписываются. Для формирования подписи необходимо конкатенировать с разделителем ';':

1. Имя вызываемого скрипта (от последнего '/' до конца или '?')

2. Все поля сообщения в алфавитном порядке, включая случайную строку pg_salt, состоящую из произвольного количества цифр и латинских букв, при этом:

  • a. к вложенным тегам это правило применяется рекурсивно (только XML)
  • b. поля с одинаковыми именами берутся в том порядке, в котором они присутствуют в сообщении

3. И платежный пароль secret_key, который задается в настройках магазина и известен только магазину и PayBoxу.

От полученной в результате конкатенации строки необходимо вычислить md5 и добавить в запрос или ответ в качестве дополнительного параметра pg_sig. MD5 хэш записывается в виде шестнадцатеричной строки в нижнем регистре (32 символа).

Пример вызова: http://domain.com/path/to/script.php

<?xml version="1.0" encoding="utf-8"?> <request> <pg_salt>9imM909TH820jwk387</pg_salt> <pg_t_param>value3</pg_t_param> <pg_a_param>value1</pg_a_param> <pg_z_param> <pg_q_subparam>subvalue2</pg_q_subparam> <pg_m_subparam>subvalue1</pg_m_subparam> </pg_z_param> <pg_b_param>value2</pg_b_param> <pg_sig>74aa41a4f425d124a23c3a53a3140bdc15826</pg_sig> </request>

В приведенном выше примере pg_sig вычисляется по формуле:

pg_sig = md5(‘script.php’ + ‘;’+ pg_a_param + ‘;’ + pg_b_param + ‘;’ + pg_salt + ‘;’+ pg_t_param + ‘;’ + pg_m_subparam + ‘;’+ pg_q_subparam + ‘;’+ secret_key);

Что разворачивается в:

pg_sig = md5('script.php;value1;value2;9imM909TH820jwk387;value3;subvalue1;subvalue2;mypasskey');

если в настройках было указано, что secret_key равен mypasskey

Любая сторона может добавлять в запрос или ответ дополнительные параметры, не указанные в документации. Эти параметры также участвуют в вычислении подписи.

Сообщение не подписывается, и соответственно поля pg_salt и pg_sig отсутствуют только в одном случае – когда PayBox не смог идентифицировать мерчанта и поэтому не знает его secret_key. В таком случае поле pg_error_code (числовой код ошибки) принимает значение 101. Полный список возможных значений поля pg_error_code см. в разделе Справочник кодов ошибок.

Для отладки формирования подписей рекомендуется использовать страницу в личном кабинете https://www.paybox.kz/admin/sig_debug_helper.php

У Вас есть вопросы?

Оставьте заявку и наши менеджеры свяжутся с Вами в течении 15 минут.