Передача дополнительных сведений об оплатах для их учёта на стороне веб-сервиса
Введение
В некоторых случаях при проведении платежей может быть актуально передавать не только обязательные и рекомендуемые со стороны провайдера параметры, но и те сведения, которые могут быть полезны в дальнейшем на стороне мерчанта (с привязкой к конкретным платежам и их статусам). Для таких ситуаций в структуре Gate API предусмотрены параметры, позволяющие передавать различные сведения в запросах и получать эти сведения вместе с другой информацией в составе итоговых оповещений.
Передача сведений о бронировании товаров и услуг
Общая информация
С помощью объекта booking_info
можно фиксировать в запросах сведения о бронированиях, связанных с оплатами, и получать эти сведения в оповещениях от платёжной платформы. В отличие от используемых в отдельных индустриях «длинных записей» (подробнее) эта возможность может применяться более широко (например, для указания сведений о бронировании билетов на концерты) и гибко — без ограничений на категорию мерчанта (согласно коду Merchant Category Code, MCC) и требований к обязательности указания параметров. Вместе с тем, использование объекта booking_info
не обеспечивает тех преимуществ, которые могут быть доступны при работе с «длинными записями», и при наличии вопросов о работе с этими возможностями можно обращаться к курирующему менеджеру ecommpay.
Объект booking_info
может использоваться практически для всех типов платежей с прямым использованием платёжных карт и с использованием методов Apple Pay и Google Pay: в частности, для разовых оплат (одностадийных и двухстадийных), нерегулярных повторяемых оплат (экспресс-оплат и автооплат) и для проверки платёжных инструментов.
С помощью объекта booking_info
можно фиксировать в запросах сведения о бронировании товаров и услуг. Эта возможность доступна при проведении платежей с прямым использованием платёжных карт и с использованием методов Apple Pay и Google Pay.
Пример использования
В качестве примера можно рассмотреть ситуацию, когда мерчанту, ведущему бизнес в сфере музыкальных фестивалей, актуально обеспечить:
- сбор и обработку информации о бронировании билетов на фестивали;
- оперативный доступ своих сотрудников к актуальной информации такого рода по каждому пользователю.
Для этого настраивается следующая схема работы:
- В каждом запросе к Gate API, подходящем для передачи сведений о бронировании, со стороны веб-сервиса передаются такие сведения — в параметрах объекта
booking_info
.В числе этих параметров могут использоваться:
firstname
— имя получателя услуги, указанное при бронировании;surname
— фамилия получателя услуги, указанная при бронировании;email
— адрес электронной почты, указанный при бронировании;start_date
— дата начала действия забронированной услуги;end_date
— дата окончания действия забронированной услуги;description
— произвольное описание бронирования;total
— итоговая стоимость бронирования;pax
— количество лиц, для которых бронируется услуга;reference
— указатель забронированной услуги, в качестве которого могут выступать URL, название или код услуги в сервисе мерчанта;id
— идентификатор бронирования, уникальный в рамках сервиса мерчанта.
- По результатам выполнения соответствующей операции информация из объекта
booking_info
передаётся к веб-сервису в итоговом оповещении. - На стороне веб-сервиса обеспечивается необходимая обработка получаемой информации вместе с другой информацией о выполняемых операциях.
Подключение
Указывать объект booking_info
в запросах и получать передаваемые в нём сведения в оповещениях (при использовании типовой структуры оповещений) можно без согласований и каких-либо дополнительных действий. Эти возможности доступны по умолчанию.
Возможности использования объекта booking_info доступны по умолчанию и не требуют отдельного подключения.
Формат данных
Объект booking_info
может включаться в запросы к различным конечным точкам и в оповещения о результатах операций, при этом его структура определяется моделью, а его расположение в структуре запросов — спецификацией этих конечных точек.
- Для разовых одностадийных оплат:
- /v2/payment/card/sale — с прямым указанием платёжных данных;
- /v2/payment/card/sale/saved — с указанием платёжных данных через идентификаторы;
- /v2/payment/card/sale/token — с указанием платёжных данных через токены.
- Для разовых двухстадийных оплат:
- /v2/payment/card/auth — с прямым указанием платёжных данных;
- /v2/payment/card/auth/saved — с указанием платёжных данных через идентификаторы;
- /v2/payment/card/auth/token — с указанием платёжных данных через токены;
- /v2/payment/card/incremental — для увеличения суммы заблокированных в рамках разовых двухстадийных оплат средств пользователя.
- Для оплат по платёжным ссылкам:
- /v2/payment/invoice/create — без указания платёжных данных в запросе;
- /v2/payment/invoice/card/token/create — с указанием платёжных данных через токены.
- Для повторяемых оплат:
- Для проверки платёжных инструментов:
- /v2/payment/card/account_verification — с прямым указанием платёжных данных;
- /v2/payment/card/account_verification/token — с указанием данных через токены.
- Для возвратов средств после оплат:
- /v2/payment/applepay/sale — для разовых одностадийных оплат;
- /v2/payment/applepay/auth — для разовых двухстадийных оплат;
- /v2/payment/applepay/recurring — для повторяемых оплат;
- /v2/payment/applepay/account_verification — для проверки платёжных инструментов;
- /v2/payment/applepay/refund — для возвратов средств после оплат.
- /v2/payment/googlepay/sale — для разовых одностадийных оплат;
- /v2/payment/googlepay/auth — для разовых двухстадийных оплат;
- /v2/payment/googlepay/recurring — для повторяемых оплат;
- /v2/payment/googlepay/account_verification — для проверки платёжных инструментов;
- /v2/payment/googlepay/refund — для возвратов средств после оплат.
В итоговых оповещениях о результатах операций сведения из объекта booking_info
передаются в таком же виде (как и в запросах) в объекте с названием booking info
.
"booking_info": { "firstname": "William", "surname": "Herschel", "email": "rsfellow@mail.com", "start_date": "12-08-2026", "end_date": "13-08-2026", "description": "Sideris music festival full pass", "total": 200000, "pax": 4, "reference": "musicfestlink", "id": "83" }
{ "payment": { "date": "2024-01-24T06:24:45+0000", "method": "card", "id": "FESTIVAL_PASS_1781", "sum": { "amount": 0, "currency": "EUR" }, "type": "purchase", "status": "refunded", "description": "FESTIVAL_PASS_1781" }, "project_id": 111738, "customer": { "id": "musicaficionado_83" }, "account": { "number": "551115******1822", "token": "7123ba1f24f16a115f3390a9", "type": "mastercard", "card_holder": "WILLIAM HERSCHEL", "expiry_month": "08", "expiry_year": "2030" }, "booking info": { // Объект с информацией о бронировании "firstname": "William", "surname": "Herschel", "email": "rsfellow@mail.com", "start_date": "12-08-2026", "end_date": "13-08-2026", "description": "Sideris music festival full pass", "total": 200000, "pax": 4, "reference": "musicfestlink", "id": "83" }, "operation": { "provider": { "payment_id": "0010000124258736", "auth_code": "", "endpoint_id": 414, "id": 414 }, "sum_converted": { "amount": 200000, "currency": "EUR" }, "code": "0", "message": "Success", "id": 55386010114429, "type": "refund", "status": "success", "date": "2024-01-24T06:24:45+0000", "sum_initial": { "amount": 200000 "currency": "EUR" }, "created_date": "2024-01-24T06:24:43+0000", "request_id": "abcaf52323381a-d988c158cc4b43046-00055387" } }
Передача произвольных сведений
Общая информация
С помощью параметра merchant.data
можно фиксировать расширенные сведения о составе заказа, информацию об использовании промокодов и бонусных баллов и другие актуальные данные. При этом можно комбинировать состав таких сведений со сведениями, передаваемыми в описании платежа (в параметре payment.description
) и в информации для товарного чека (в объекте receipt_data
). Это позволяет получать в оповещениях всю необходимую информацию без её дублирования в различных параметрах.
Пример использования
В качестве примера можно рассмотреть ситуацию, когда мерчанту, ведущему бизнес в сфере видеоигр, актуально обеспечить:
- сбор и обработку информации о дополнительных услугах, приобретаемых пользователями в процессе игр;
- оперативный доступ своих сотрудников к актуальной информации такого рода по каждому пользователю.
Специалисты мерчанта обращаются с такой задачей к курирующему менеджеру ecommpay, после чегоДля этого настраивается следующая схема работы:
- В каждом запросе к Gate со стороны веб-сервиса мерчанта передаётся информация о приобретаемых услугах — в виде JSON-объекта в параметре
data
объектаmerchant
.В состав строки
data
включаются:- массив
items
, в котором каждый элемент содержит артикул (sku
), описание (description
) и количество приобретаемых услуг (count
); - параметр
total_count
с общим количеством приобретаемых услуг или товарных позиций; - параметр
user_id
с внутренним идентификатором пользователя.
- массив
- По результатам проведения каждого платежа информация из строки
data
передаётся к веб-сервису мерчанта в итоговом оповещении и становится доступной для просмотра в карточке платежа интерфейса Dashboard. - На стороне веб-сервиса обеспечивается необходимая обработка получаемой информации вместе с другой информацией о проводимых платежах.
Подключение
Возможности применения параметра merchant.data
для передачи и получения различных сведений следует согласовывать с курирующим менеджером ecommpay. После согласований специалисты ecommpay выполняют необходимые действия в платёжной платформе и уведомляют о готовности к включению расширенных сведений в оповещения и к отображению этих сведений в интерфейсе Dashboard.
Формат данных
В запросах к Gate для проведения платежей сведения в параметре merchant.data
должны передаваться в виде JSON-объекта. При этом, поскольку параметр имеет строковый тип данных (string), для передачи JSON-объекта методом POST требуется экранировать символ "
(двойной штрих, U+0022) путём постановки перед ним символа \
(косой обратной черты, U+005C). Это необходимо, чтобы чётко разграничивать на уровне программного взаимодействия, какие кавычки закрывают строку, а какие относятся к содержанию JSON-объекта внутри строки.
В итоговых оповещениях о результатах платежей сведения из параметра merchant.data
передаются в аналогичном параметре data
объекта merchant
, с применением экранирования.
В следующих примерах содержимое параметра разбито на несколько строк для удобства чтения.
"merchant": { "data": "{\"items\":[{\"sku\":\"GM12-CC\", \"description\":\"10 Copper Coins\",\"count\":1}, {\"sku\":\"GM12-GC\",\"description\":\"Golden Coin\", \"count\":2}],\"total_count\":3,\"user_id\":\"122\"}" }
"merchant": { "data": "{\"items\":[{\"sku\":\"GM12-CC\", \"description\":\"10 Copper Coins\",\"count\":1}, {\"sku\":\"GM12-GC\",\"description\":\"Golden Coin\", \"count\":2}],\"total_count\":3,\"user_id\":\"122\"}" }