Использование «длинной записи»
Payment Page поддерживает так называемую длинную запись (addendum), которая используется в туристической отрасли и подразумевает передачу в платежных запросах платежной платформы расширенной информации о бронировании, например номера брони, имен гостей отелей или путешественников, дат проживания или путешествия. Информация о бронировании передается в запросе в дополнение к обычным данным о платеже. Использование длинной записи позволяет повысить безопасность операций и снизить стоимость платежей.
В целом, платежи с длинной записью обрабатываются в обычном порядке, но в процессе их обработки есть ряд особенностей:
- Ограничение на MCC-код — длинная запись используется только в туристической отрасли, поэтому платежи с этой записью доступны только для мерчантов с MCC-кодами 3501–3999 и 7011.
- Обязательное наличие длинной записи в начальном запросе на оплату — длинная запись должна обязательно передаваться в начальном запросе. В последующих запросах ее использовать не обязательно. Если в начальном запросе длинная запись не передавалась, то при попытке передать длинную запись в любом из последующих запросов платежная платформа вернет ошибку.
Кроме того, использование длинной записи поддерживается только при проведении операций с использованием карт платёжных систем Visa и Mastercard.
Вся информация о бронировании упаковывается по определенным правилам в одно значение и передается в Payment Page в параметре addendum_data в дополнение к обычно передаваемым параметрам платежа. Далее рассказывается, как на основании информации о бронировании сформировать значение параметра addendum_data.
Создание значения параметра addendum_data
Перед размещением в параметре addendum_data информацию о бронировании нужно определенным образом преобразовать, чтобы получить одно значение, содержащее всю эту информацию. Далее рассказывается, как это сделать.
-
Информация о бронировании размещается в JSON-объекте
lodging
. Подробно о параметрах и объектах, вложенных вlodging
, см. Параметры длинной записи в Gate API.Вот пример JSON-объекта
lodging
с информацией о бронировании отеля:{ "lodging": { "customer_service_toll_free_number": "88005553535", // Телефон поддержки клиентов отеля "guest_name": "John Smith", // Ф.И.О. гостя "check_in_date": "10-12-2019", // Дата въезда в отель "check_out_date": "22-12-2019", // Дата выезда из отеля "folio_number": "56265655ABC", // Номер бронирования "fire_safety_act_indicator": true, // Класс пожарной безопасности отеля "room": { // Объект с параметрами номера "rate": 12, // Стоимость суток проживания "number_of_nights": "12" // Количество ночей }, "charges": { // Объект с суммами сборов "transportation": 1200, // Сбор за услуги трансфера "internet_access": 4500 // Сбор за доступ к Интернету } } }
-
JSON-объект с информацией о бронировании кодируется с применением алгоритма Base64.
Вот строка, полученная в результате кодирования примера JSON-объектаlodging
, приведенного в п. 1 (перед кодированием комментарии были удалены):ewogImxvZGdpbmciOiB7CiAgImN1c3RvbWVyX3NlcnZpY2VfdG9sbF9mcmVlX251bWJlciI6ICI4ODAwNTU1Mz UzNSIsCiAgImd1ZXN0X25hbWUiOiAiSm9obiBTbWl0aCIsCiAgImNoZWNrX2luX2RhdGUiOiAiMTAtMTItMjAx OSIsCiAgImNoZWNrX291dF9kYXRlIjogIjIyLTEyLTIwMTkiLAogICJmb2xpb19udW1iZXIiOiAiNTYyNjU2NT VBQkMiLAogICJmaXJlX3NhZmV0eV9hY3RfaW5kaWNhdG9yIjogdHJ1ZSwKICAicm9vbSI6IHsKICAicmF0ZSI6 IDEyLAogICJudW1iZXJfb2ZfbmlnaHRzIjogIjEyIgogIH0sCiAgImNoYXJnZXMiOiB7CiAgInRyYW5zcG9ydG F0aW9uIjogMTIwMCwKICAiaW50ZXJuZXRfYWNjZXNzIjogNDUwMAogIH0KIH0KfQ==
EPayWidget.run( { payment_id: 'X01254', // Идентификатор платежа payment_amount: 20000, // Сумма платежа payment_currency: 'USD', // Валюта платежа project_id: 258, // Идентификатор мерчанта customer_id: '123', // Идентификатор пользователя addendum_data: "ewogImxvZGdpbmciOiB7CiAgImN1c3Rv...==" // Длинная запись signature: "kUi2x9dKHAVNU0FYlSCQ9vySO\/RLCvhtT...==" // Подпись } )