Интеграция с TripPay
В этой статье представлен пример полного цикла интеграции с TripPay.
Рекомендуется, чтобы вы уже прочитали:
- Оплата > Сопоставление.
- Оплата > Интеграция.
- Веб-компонент оплаты.
- API оплаты. Прочитайте раздел о
Создании платёжных контрактов
Вот шаги для успешного использования TripPay для оплаты бронирования:
- Убедитесь, что бенефициары, указанные в контракте бронирования, сопоставлены.
- Позвольте путешественнику выбрать инвентарь для бронирования и подготовиться к оплате.
- Создайте
платёжный контрактс TripPay, содержащий бронируемые позиции. - Позвольте путешественнику оплатить через веб-компонент TripPay.
Предполагается, что вы уже выполнили Шаг 1 и Шаг 2 и готовы сообщить TripPay о бронировании.
Создание платёжного контракта
Заголовок раздела «Создание платёжного контракта»Ниже приведён пример JSON-запроса, включающий всё необходимое для создания вашего первого платёжного контракта.
{ "user": { "userIdentifier": "191d5729-0b90-4000-85df-1bea7a6e9a01", "firstName": "John", "lastName": "Smith", }, "affiliateAccountIdentifier": "291d5729-0b91-4001-95df-2bec7a6e9a01", "affiliateAccountIdentifierType": "INTERNAL", "displayCurrency": "USD", "traceId": "trace-1", "redirectUrl": "/thank-you", "sourceUrl": "https://www.travel.com", "contractList": [ { "identifier": "191d5729-0b90-4000-8298-72431beb1701", "supplierIdentifier": "191d5729-0b90-4000-8b72-58186a642401", "supplierIdentifierType": "EXTERNAL", "contractItemList": [ { "user": { "userIdentifier": "191d5729-0b90-4000-8596-ed18f9876801", "firstName": "John", "lastName": "Smith", "telephone": "+1 212 555 1212", }, "nameInEnglish": "Deluxe King", "descriptionInEnglish": "This is the best deluxe king that money can buy.", "price": { "amount": 100, "currency": "USD" }, "itinerary": { "startDate": "2024-12-24T00:00:00.000Z", "endDate": "2024-12-25T00:00:00.000Z", "adults": 2 }, "pricingType": "PER_STAY", "type": "LODGING", "payable": "PREPAY", "policy": { "refundable": true }, "externalIdentifier": "room-type-1", "dailyRateList": [ { "date": "2024-12-24", "price": { "amount": 100, "currency": "USD" } } ], "beneficiaryList": [ { "identifier": "account-0", "identifierType": "INTERNAL", "amountDue": { "type": "PERCENTAGE", "percent": 0.015 }, "type": "PLATFORM_FEE" }, { "identifier": "account-1", "identifierType": "INTERNAL", "amountDue": { "type": "PERCENTAGE", "percent": 0.0985 }, "type": "COMMISSION" }, { "identifier": "account-2", "identifierType": "INTERNAL", "amountDue": { "type": "PERCENTAGE", "percent": 0.8865 }, "type": "SALE" } ] } ] } ]}Объяснение:
Мы не будем подробно объяснять каждое поле, так как они уже описаны в документации API.
- Строки: 2 - 7 — пользователь, ответственный за бронирование. Существуют два типа бронирующих:
- Путешественник.
- Туристический агент.
- Строки: 8 - 9 — аккаунт TripPay, через который осуществляется бронирование. Это может быть:
- Ваш интеграторский аккаунт TripPay.
- Если вы управляете партнёрской сетью, это может быть ваш партнёр.
- Используйте
traceIdдля группировки нескольких бронирований у разных поставщиков. Так вы сможете отменить групповое бронирование. redirectUrlсообщает TripPay, на какую страницу перенаправлять после завершения оплаты.sourceUrl— сайт или приложение, на котором произошло бронирование.
Массив contractList содержит позицию(ии), которые путешественник хочет приобрести у разных поставщиков. Каждая позиция содержит:
identifier— валидный UUID, который вы генерируете.- Поставщика, у которого вы хотите забронировать инвентарь.
- Инвентарь, который вы хотите забронировать у этого поставщика. Все они указаны во вложенном массиве
contractItemList. - Каждая запись в
contractItemListсодержит:- Пользователь-гость — это пользователь, который будет проживать на объекте.
- Название на английском — название инвентаря на английском языке.
- Описание на английском — более подробное описание инвентаря на английском языке.
- Цена — стоимость позиции.
- Маршрут — когда должна быть забронирована эта позиция.
- Тип ценообразования — как была рассчитана цена.
- Тип инвентаря — какой тип инвентаря это.
- Платёж — когда путешественник должен быть списан. В настоящее время поддерживаются только варианты немедленной оплаты.
- Политика — включите правила политики отмены.
- Список дневных тарифов — если бронируется номер, можно указать стоимость номера за каждую ночь пребывания гостя.
- Бенефициары — укажите, каким аккаунтам TripPay и в каком размере должна быть распределена цена позиции. Поддерживаются фиксированные и процентные суммы.
Когда TripPay ответит на ваш запрос, он будет выглядеть примерно так:
[ { "id": "contract-1", "traceId": "trace-1", "supplierContractIdentifier": "191d5729-0b90-4000-8298-72431beb1701", "supplierIdentifier": "191d5729-0b90-4000-8b72-58186a642401", "supplierName": "Hilton", "totalPrice": { "amount": 100, "currency": "USD" }, "totalDisplayPrice": { "amount": 100, "currency": "USD" }, "totalSupplierPrice": { "amount": 100, "currency": "USD" }, "totalInternalPrice": { "amount": 100, "currency": "USD" }, "totalCapturePrice": { "amount": 100, "currency": "USD" } }]Сохраните id на строке 3. Он понадобится для передачи в веб-компонент TripPay.
Встраивание TripPay
Заголовок раздела «Встраивание TripPay»Теперь вы готовы встроить Payment Web Component на ваш сайт и показать его пользователю.
<trip-pay id="contract-1"></trip-pay>Что касается интеграции, это всё, что нужно сделать. Вся основная работа с этого момента выполняется TripPay.