Встроенные платежи
Это старая версия API. Переходите на новую версию API.
Встроенные платежи - это платежи, которые проводятся без отправки пользователя на сайт PayMaster, путем использования REST HTTP запросов к PayMaster.
Схема работы
- Запуск платежа через отправку запроса на
https://paymaster.ru/builtinpayment/init
. Параметры запроса остаются те же, что и в обычной форме запроса платежа, со следующими отличиями:
- добавляется обязательный параметр authhash, содержащий подпись запроса. Необходимо использовать тип подписи (sha1\sha256\md5) указанный в настройках сайта в ЛК. При запуске платежа в подписи участвуют параметры LMI_MERCHANT_ID, LMI_PAYMENT_AMOUNT (с отделением дробной части через точку и обязательными двумя знаками после точки), LMI_CURRENCY, SecretKey (значение настраивается в личном кабинете). Во всех последующих запросах участвуют PaymentUrl, записанный в нижнем регистре, и SecretKey. Значения этих полей записываются в одну строчку через точку с запятой (;), затем от полученной UTF8-строки считается SHA1(\sha256\md5, в зависимости от настройки "Тип подписи" сайта)-хеш, который затем кодируется base64. PHP код формирования хеша в случае использования SHA1: $authhash = base64_encode(sha1($str, true)), где $str - строка параметров. Обратите внимание, что base64 вычисяется от байт-массива результата хеша, а не его hex представления.
- LMI_PAYMENT_METHOD - обязательный параметр, значение должно быть указано;
- добавляется необязательный параметр json. Если он равен 1, то ответ возвращается в виде JSON, иначе ответ возвращается в виде Xml.
- добавляется необязательный параметр currencyID, означающий в какой валюте будет платить пользователь (не путать с LMI_CURRENCY, которая означает, в какой валюте продавец получит оплату);
- добавляется необязательный параметр culture, в который можно передать значение LCID языка, на котором нужно выдавать информационные сообщения.
- добавляются параметры вида values[name], означающие заполненные пользователем параметры платежа (аналогично автопараметрам). На первом шаге заполнение параметров возможно только если продавец заранее знает, какие параметры попросит ввести платежная система.
- Получение ответа в виде JSON или Xml.
- В зависимости от кода возврата возможны следующие действия:
- успешное завершение платежа, показ пользователю сообщения об этом и, если указано, дополнительной информации о совершенном платеже;
- неуспешное завершение платежа, показ пользователю сообщения об ошибке;
- показ пользователю сообщения. В этом случае нужно через некоторое время повторить пустой запрос на Url, указанную в ответе, и снова перейти к шагу 2;
- ввод пользовательских параметров. В этом случае продавец должен будет отправить значения введенных пользователем реквизитов на PaymentUrl, указанную в ответе. Параметры отправляются согласно описанию на шаге 1.После отправки параметров действовать согласно шагу 2 и т.д.;
- ожидание статуса платежа. В этом случае нужно через некоторое время повторить пустой запрос на Url, указанную в ответе, и снова перейти к шагу 2.
- перенаправление пользователя на внешнюю страницу оплаты. Некоторые платежные системы требуют перенаправления пользователя на свои платежные страницы. В этом случае продавцу сообщается Url для перенаправления;
- сообщение о невозможности прочитать запрос.
Типы параметров
Параметр | Описание |
textinput | текстовое значение |
textinput/title | название поля для показа пользователю |
textinput/eg | пример заполнения |
textinput/regex | регулярное выражение, которому должно удовлетворять значение |
textinput/required | является ли поле обязательным к заполнению |
check | Значение передается в виде "true" или "false" |
check/title | название поля для показа пользователю |
check/required | обязан ли пользователь выставить галочку для продолжения платежа |
check/checked | стоит ли галочка по умолчанию |
enum | выбор из списка. Значение передается в формате values[Choose]=option2. |
enum/title | название поля для показа пользователю |
enum/options | список опций в списке |
enum/option/value | значение опции |
enum/option/title | название опции для показа пользователю |
label | просто текст для показа. На paymaster можно не передавать этот параметр назад |
label/title | заголовок текста |
label/html | тело |
proceed | авто-параметр. Его надо передать в значении "true", если пользователь готов продолжить платеж |
Примеры ответов
<?xml version="1.0" encoding="utf-8"?>
<pm.response>
<result>0</result>
<id>123</id>
<lastupdate>2017-10-04T12:28:45</lastupdate>
<paymentUrl>https://paymaster.ru/builtinpayment/process/d011b332-72d5-4626-8237-309ce90f718e</paymentUrl>
<messages>
<message>
<title>Дополнительно</title>
<body>Вам был выдан ваучер сдачи,<br/>его реквизиты: <b>1231, 213</b>.</body>
</message>
</messages>
</pm.response>
Успешное завершение платежа
Поле | Описание |
pm.response/result | код возврата. 0 - платеж успешно завершен; |
pm.response/id | номер платежа в PayMaster; |
pm.response/lastupdate | дата проведения транзакции; |
pm.response/paymentUrl | Url платежа; |
pm.response/messages | список сообщений с дополнительной информацией, которые надо показать пользователю. |
<?xml version="1.0" encoding="utf-8"?>
<pm.response>
<result>1</result>
<id>123</id>
<paymentUrl>https://paymaster.ru/builtinpayment/process/d011b332-72d5-4626-8237-309ce90f718e</paymentUrl>
<suberrorcode>-17</suberrorcode>
<messages>
<message>
<title>Ошибка</title>
<body>Истек срок ожидания оплаты</body>
</message>
</messages>
</pm.response>
Завершение платежа с ошибкой
Поле | Описание |
pm.response/result | код возврата. 1-99 - не удалось провести платеж; |
pm.response/id | номер платежа в PayMaster; |
pm.response/suberrorcode | код ошибки, см. раздел "Коды ошибок"; |
pm.response/paymentUrl | Url платежа; |
pm.response/messages | список сообщений с описанием ошибки |
<?xml version="1.0" encoding="utf-8"?>
<pm.response>
<result>100</result>
<id>123</id>
<paymentUrl>https://paymaster.ru/builtinpayment/process/d011b332-72d5-4626-8237-309ce90f718e</paymentUrl>
<messages>
<message>
<title>Завершение оплаты</title>
<body>Вам был выписан счет.<br/>Пожалуйста, оплатите его</body>
</message>
</messages>
</pm.response>
Сообщение для плательщика
Поле | Описание |
pm.response/result | код возврата. 1-99 - не удалось провести платеж; |
pm.response/id | номер платежа в PayMaster; |
pm.response/paymentUrl | Url, по которой надо отправить следующий запрос. Запрос должен быть пустой; |
pm.response/messages | список сообщений, которые надо показать |
<?xml version="1.0" encoding="utf-8"?>
<pm.response>
<result>101</result>
<id>123</id>
<paymentUrl>https://paymaster.ru/builtinpayment/process/d011b332-72d5-4626-8237-309ce90f718e</paymentUrl>
<requisites>
<items>
<textinput required="false">
<name>EMail</name>
<title>E-mail</title>
<eg>abc@abc.ru</eg>
<regex>[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}</regex>
</textinput>
<textinput required="false">
<name>Phone</name>
<title>Телефон</title>
<eg>79161231231</eg>
<regex>[1-9]\d{10,13}</regex>
</textinput>
</items>
<requirementgroups>
<group>
<description>Пожалуйста, укажите E-mail и/или телефон</description>
<names>
<name>EMail</name>
<name>Phone</name>
</names>
</group>
</requirementgroups>
</requisites>
</pm.response>
Ввод данных
Поле | Описание |
pm.response/result | код возврата. 101 - необходимо прислать параметры, введенные пользователем; |
pm.response/id | номер платежа в PayMaster; |
pm.response/paymentUrl | Url платежа, на который надо отправлять следующий запрос, содержащий параметры вида values[name]; |
pm.response/requisites/items | пользовательские параметры, которые необходимо ввести. У каждого параметра есть аттрибут name, который надо передавать в качестве name в параметрах values[name], о которых говорилось выше. |
pm.response/requisites/requirementgroup | список групп параметров, для которых требуется заполнение одного из них. Для вышеприведенного примера это означает, что пользователю нужно заполнить либо параметр EMail, либо параметр Phone. description - описание требования для показа пользователю. |
<?xml version="1.0" encoding="utf-8"?>
<pm.response>
<result>200</result>
<id>123</id>
<paymentUrl>https://paymaster.ru/builtinpayment/process/d011b332-72d5-4626-8237-309ce90f718e</paymentUrl>
</pm.response>
Ожидание статуса платежа
Поле | Описание |
pm.response/result | код возврата. 200 - необходимо повторить запрос через некоторое время (без пользовательских параметров). Если поле CustomTrackPaymentText не пустое, то надо транслировать его; |
pm.response/id | номер платежа в PayMaster; |
pm.response/paymentUrl | Url платежа, на который надо отправлять следующий запрос. Запрос должен быть пустым; |
<?xml version="1.0" encoding="utf-8"?>
<pm.response>
<result>2</result>
<id>123</id>
<paymentUrl>http://redirectsite.ru/redirectpath</paymentUrl>
<redirectdata method="post">
<param name="key1">value1</param>
<param name="key2">value2</param>
</redirectdata>
</pm.response>
Перенаправление пользователя на внешнюю страницу
Поле | Описание |
pm.response/result | код возврата. 2 - необходимо перенаправить пользователя на внешнюю страницу оплаты; |
pm.response/id | номер платежа в PayMaster; |
pm.response/paymentUrl | Url, куда надо перенаправить пользователя; |
pm.response/redirectdata/@method | HTTP метод перенаправления; |
pm.response/redirectdata/param | параметры, с которыми надо выполнить перенаправление; |
<?xml version="1.0" encoding="utf-8"?>
<pm.response>
<result>-101</result>
<paymentUrl>https://paymaster.ru/bultinpayment/error/-101</paymentUrl>
</pm.response>
Сообщение о невозможности прочитать запрос
Поле | Описание |
pm.response/result | код возврата. -101 - не удалось прочитать запрос; |
pm.response/paymentUrl | страница с пояснением причин, по которым запрос не был прочитан; |
Значения результатов (result)
Значение | Описание |
-1 | неверная подпись запроса; |
-2 | неподдерживаемая валюта; |
-3 | дублированный номер счета; |
-4 | неподдерживаемая кодировка; |
-5 | неподдерживаемая платежная система; |
-6 | некорректная сумма платежа; |
-7 | нет разрешения выставлять счета на открытые суммы; |
-8 | некорректный номер счета; |
-9 | нет доступа к интерфейсу; |
-10 | пустое примечание к платежу; |
-11 | неверный PaymentUrl; |
-100 | невозможно прочитать поле запроса; |
-101 | невозможно прочитать весь запрос; |
-500 | неизвестная ошибка, следует обратиться в техподдержку, если она воспроизводится регулярно; |
1 | платеж сорвался (причины см. в поле suberrorcode, значения которого определяются из таблицы Коды ошибок); |
2 | необходимо перенаправить пользователя на указанную страницу; |
100 | необходимо показать пользователю указанное сообщение; |
101 | необходимо запросить у пользователя указанные реквизиты; |
200 | платеж обрабатывается, необходимо повторить запрос без пользовательских параметров (не забудьте включить AuthHash) на PaymentUrl через некоторое время; если поле CustomTrackPaymentText не пустое, то надо транслировать его. Если поле пустое, то это просто ожидание платежа; |
0 | платеж успешно проведен; |
Коды ошибок
ErrorID | Описание |
-1 | Неизвестная ошибка |
-2 | Неизвестная сетевая ошибка |
-5 | Сетевая ошибка платежной системы |
-6 | Доступ запрещен |
-7 | Неверная подпись запроса |
-8 | Продавец отказался от счета |
-9 | Счет просрочен |
-10 | Отказ платежной системы |
-11 | Возврат невозможен |
-12 | Превышена сумма возврата |
-13 | Идентификатор платежа не найден |
-14 | Идентификатор платежа уже существует |
-15 | Истек период ожидания платежа |
-16 | Симуляция ошибки по запросу продавца |
-17 | Вы отказались от платежа |
-18 | Недопустимая сумма платежа |
-19 | Недостаточно средств для проведения операции |
-20 | Внутренняя ошибка, обновите страницу |
-21 | Предыдущий платеж не завершен |
-22 | Отказ авторизации в платежной системе |
-23 | Действие не соответствует статусу платежа |
-24 | Платежная система временно отключена |
-25 | Ошибка при авторизации 3Dsec |