Обмен информацией между магазином и Platron может происходить двумя способами:
1. Напрямую, через вызов определенных URL
2. Через браузер пользователя
Эти два способа подробнее описаны в подразделах ниже.
Используемая кодировка — UTF-8.
При обмене данными действует правило именования параметров: имена всех параметров, которые касаются взаимодействия Platron и магазина, имеют префикс pg_, все прочие параметры его не имеют.
Во всех денежных суммах для отделения дробной части используется точка. Если число целое, то указание дробной части необязательно. Число знаков после точки – не более двух. Тысячи не отделяются никакими знаками.
Любые сообщения (запросы и ответы) между Platron и магазином подписываются. Для формирования подписи необходимо конкатенировать с разделителем ‘;’ :
1. Имя вызываемого скрипта (от последнего ‘/’ до конца или ‘?’)
2. Все поля сообщения в алфавитном порядке, включая случайную строку pg_salt, состоящую из произвольного количества цифр и латинских букв, при этом:
a. к вложенным тегам это правило применяется рекурсивно (только XML)
b. поля с одинаковыми именами берутся в том порядке, в котором они присутствуют в сообщении
3. Платежный пароль secret_key, который задается в настройках магазина и известен только магазину и Platron.
От полученной в результате конкатенации строки необходимо вычислить 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>a8a4d5a9188f24038a14a4d65c387bf7</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);
что разворачивается в
если в настройках было указано, что secret_key равен mypasskey.pg_sig = md5('script.php;value1;value2;9imM909TH820jwk387;value3;subvalue1;subvalue2;mypasskey')
Любая сторона может добавлять в запрос или ответ дополнительные параметры, не указанные в документации. Эти параметры также участвуют в вычислении подписи.
Сообщение не подписывается, и соответственно поля pg_salt и pg_sig отсутствуют только в одном случае – когда Platron не смог идентифицировать мерчанта и поэтому не знает его secret_key. В таком случае поле pg_error_code (числовой код ошибки) принимает значение 101. Полный список возможных значений поля pg_error_code см. в разделе Справочник кодов ошибок. Для отладки формирования подписей рекомендуется использовать страницу в личном кабинете https://www.platron.ru/admin/sig_debug_helper.php