Оплата

Повертає типи оплати, які готель приймає для онлайн-бронювань, і запускає крок оплати для вибраного типу. Що робити для кожного типу, описано в посібнику Процес оплати.

Список типів оплати#

GET/external/online/payment/type

Автентифікація: Authorization: Bearer

Повертає типи оплати, які готель увімкнув для онлайн-продажу. Фіксовані ідентифікатори типів: 1 — оплата в готелі, 3 — банківський переказ, 9 — кредитна картка (дані картки надсилаються разом із бронюванням), 10 — онлайн-оплата (віртуальний POS-термінал).

Параметри запиту

hotelIDintegerобов’язковий
Ідентифікатор готелю.

Відповідь

200 Успішно.

Запит
curl "https://test.hms.gen.tr/external/online/payment/type?hotelID=1000" \
  -H "Authorization: Bearer $HMS_TOKEN"
Відповідь · 200
{
    "success": true,
    "count": 3,
    "items": [
        {
            "title": "Оплата в готелі",
            "title_translate": "odeme.otelde_odeme",
            "typeID": 1
        },
        {
            "title": "Банківський переказ",
            "title_translate": "odeme.havale",
            "typeID": 3
        },
        {
            "title": "Онлайн-оплата карткою",
            "title_translate": "odeme.online_odeme",
            "typeID": 10
        }
    ]
}

Дані віртуального POS-термінала#

GET/external/payment/company

Автентифікація: Authorization: Bearer

Повертає провайдера віртуального POS-термінала готелю та дані мерчанта. Потрібно, лише якщо ви підключаєте провайдера напряму на своєму боці; у стандартному процесі використовується POST …/payment/type/10. Відповідь містить секретні дані, тож зберігайте її лише на сервері.

Параметри запиту

hotelIDintegerобов’язковий
Ідентифікатор готелю.

Відповідь

200 Успішно.

Відповіді з помилками

  • 200 hotel_company_info_could_not_found — для готелю не налаштовано віртуальний POS-термінал.
Запит
curl "https://test.hms.gen.tr/external/payment/company?hotelID=1000" \
  -H "Authorization: Bearer $HMS_TOKEN"
Відповідь · 200
{
    "success": true,
    "paymentCompany": {
        "merchant_id": "4000****",
        "store_key": "********",
        "terminal_no": "VP00****",
        "user": "demo_api",
        "password": "********",
        "max_installment": 6,
        "company_id": 3,
        "company_code": "iyzico",
        "company_name": "iyzico"
    }
}

Почати крок оплати#

POST/external/online/payment/type/{paymentType}

Автентифікація: Authorization: Bearer · Тіло: application/json

Повертає, що потрібно зробити для вибраного типу оплати. Для типів 1 і 9 достатньо hotelID; тип 3 повертає список банківських рахунків; для типу 10 оплата запускається з даними гостя й кошика, а повернений code (HTML) виводиться на сторінці гостя, щоб перейти на платіжну сторінку провайдера.

Параметри шляху

paymentTypeintegerобов’язковий
Ідентифікатор типу оплати.
13910

Тіло запиту

hotelIDintegerобов’язковий
Ідентифікатор готелю.
totalPricedecimal
Обов’язково для типу 10. Загальна сума до списання.
orderIDstring
Обов’язково для типу 10. Номер вашого замовлення/бронювання.
returnUrlstring
Обов’язково для типу 10. URL-адреса, на яку гість повертається після оплати.
name / surname / email / phonestring
Обов’язково для типу 10. Дані платника.
city / addressstring
Обов’язково для типу 10. Платіжна адреса.
countryIDinteger
Обов’язково для типу 10. id зі списку країн.
baskets[]object[]
Обов’язково для типу 10, щонайменше один елемент. Кожен елемент: id, name, piece, price.

Відповідь

200 Тип 10: code містить HTML-фрагмент, що передає гостя платіжному провайдерові (залежно від провайдера це форма з автоматичним надсиланням, скрипт window.location або вбудована платіжна форма). Виведіть його без змін у браузері гостя. Для інших типів поле message вказує, що робити.

Відповіді з помилками

  • 200 required_input_info_not_submitted (+ errors[]) — для типу 10 бракує поля; country_info_sent_incorrectly — неприпустимий countryID; there_is_missing_info_in_the_shopping_cart — в елементі кошика бракує поля; bank_info_is_not_found — для типу 3 не налаштовано банківський рахунок.
  • 404 Невідомий paymentType.
Запит
curl -X POST "https://test.hms.gen.tr/external/online/payment/type/10" \
  -H "Authorization: Bearer $HMS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "hotelID": 1000,
    "totalPrice": 2330,
    "orderID": "4811174883",
    "returnUrl": "https://booking.example.com/payment/result",
    "name": "Ayşe",
    "surname": "Demir",
    "email": "[email protected]",
    "phone": "05551112233",
    "city": "Denizli",
    "address": "Kumsal Cad. No: 12",
    "countryID": 1,
    "baskets": [
        {
            "id": 2,
            "name": "Стандартний номер · Сніданок включено",
            "piece": 1,
            "price": 1930
        },
        {
            "id": 12,
            "name": "Вечеря",
            "piece": 1,
            "price": 400
        }
    ]
}'
Відповідь · 200
{
    "success": true,
    "message": "payment_order_code",
    "code": "<form method=\"post\" action=\"https://vpos.provider.example/3d\"><input type=\"hidden\" name=\"orderId\" value=\"4811174883\"> … </form><script>document.forms[0].submit()</script>"
}
Відповідь · 200 (тип 3, банківський переказ)
{
    "success": true,
    "message": "payment_by_bank_transfer",
    "banks": [
        {
            "companyName": "Ziraat Bank",
            "holder": "Demo Turizm A.Ş.",
            "branchName": "Denizli",
            "branchNumber": "0123",
            "bankAccountNumber": "12345678-5001",
            "iban": "TR00 0001 0001 2345 6789 5001 01"
        }
    ]
}
Відповідь · 200 (тип 1 / тип 9)
{
    "success": true,
    "message": "credit_card_info_should_be_requested"
}
Останнє оновлення: 21 вересня 2026 р.Знайшли помилку? Повідомте нам