Интеграция с TripPay
В этой статье приведён пример полного процесса интеграции с TripPay.
Рекомендуется, чтобы вы уже прочитали:
- Payment > Mapping.
- Payment > Integration.
- Payment Web Component.
- Payment API. Прочитайте раздел о
Create payable contracts
Вот шаги для успешного использования TripPay для оплаты бронирования:
- Убедитесь, что бенефициары, указанные в контракте бронирования, были сопоставлены.
- Позвольте путешественнику выбрать инвентарь, который он хочет забронировать, и подготовиться к оплате.
- Создайте
payable contractс TripPay, который содержит элементы для бронирования. - Позвольте путешественнику оплатить с помощью TripPay Web Component.
Предполагается, что вы уже выполнили Шаг 1 и Шаг 2 и готовы сообщить TripPay о бронировании.
Создание payable contract
Заголовок раздела «Создание payable contract»Ниже приведён пример JSON-запроса, который включает всё необходимое для создания вашего первого payable contract.
{ "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 web component.
Встраивание TripPay
Заголовок раздела «Встраивание TripPay»На этом этапе вы готовы встроить Payment Web Component на ваш сайт и показать его пользователю.
<trip-pay id="contract-1"></trip-pay>Что касается интеграции, это всё, что нужно сделать. Вся основная работа с этого момента выполняется TripPay.