Ödəniş axını

Onlayn rezervasiyalar üçün hansı ödəniş növlərini qəbul edəcəyinə otel paneldə özü qərar verir. Rezervasiya mühərriki bu siyahını göstərir və hər növ üçün fərqli yol izləyir. Bu bələdçi dörd ödəniş növünü və hər biri üçün nə etmək lazım olduğunu izah edir.

Ödəniş növlərini siyahıya alın#

Terminal
curl "https://test.hms.gen.tr/external/online/payment/type?hotelID=1000" \
  -H "Authorization: Bearer $HMS_TOKEN"
Cavab · 200
{
    "success": true,
    "count": 3,
    "items": [
        {
            "title": "Pay at Hotel",
            "title_translate": "odeme.otelde_odeme",
            "typeID": 1
        },
        {
            "title": "Bank Transfer",
            "title_translate": "odeme.havale",
            "typeID": 3
        },
        {
            "title": "Online Card Payment",
            "title_translate": "odeme.online_odeme",
            "typeID": 10
        }
    ]
}
typeIDNövNə baş verir
1Oteldə ödənişÖdəniş alınmır; rezervasiya birbaşa ötürülür.
3Bank köçürməsiOtelin bank hesabları göstərilir; rezervasiya “ödəniş gözlənilir” kimi ötürülür.
9Kredit kartı (zəmanət)Kart məlumatları rezervasiya ilə birlikdə PaymentCard sahəsində HMS-ə göndərilir; ödənişi kartdan otel çıxarır.
10Onlayn ödəniş (virtual POS)HMS ödəniş sessiyası başladır; qonaq provayderin ödəniş səhifəsinə ötürülür və sizin returnUrl ünvanınıza qayıdır.

1-ci növ · Oteldə ödəniş#

Əlavə addım yoxdur. Təsdiq almaq üçün son nöqtəni çağıra bilərsiniz:

POST …/payment/type/1 → 200
{
    "success": true,
    "message": "payment_at_the_hotel"
}

3-cü növ · Bank köçürməsi#

Otelin onlayn satış üçün aktivləşdirdiyi bank hesablarını alın və qonağa göstərin:

Terminal
curl -X POST "https://test.hms.gen.tr/external/online/payment/type/3" \
  -H "Authorization: Bearer $HMS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"hotelID": 1000}'
Cavab · 200
{
    "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"
        }
    ]
}

Heç bir hesab konfiqurasiya edilməyibsə, bank_info_is_not_found qaytarılır; bu növü siyahıda göstərməyin.

9-cu növ · Kredit kartı#

Son nöqtə yalnız kart məlumatlarının toplanmalı olduğunu bildirir:

POST …/payment/type/9 → 200
{
    "success": true,
    "message": "credit_card_info_should_be_requested"
}

Kart məlumatlarını öz formanızda toplayın və rezervasiya ötürülməsində hər RoomStays elementinin PaymentCard sahəsində göndərin:

RoomStays[].PaymentCard
{
    "PaymentCard": {
        "CardHolder": {
            "fullname": "Ayşe Demir",
            "address": "Kumsal Cad. No: 12",
            "country": "Türkiye",
            "city": "Antalya"
        },
        "cardNumber": "5571135571135575",
        "expireDate": "0329",
        "cardCode": "MasterCard",
        "seriesCode": "000"
    }
}

10-cu növ · Onlayn ödəniş#

Qonaq və səbət məlumatları ilə ödəniş sessiyası başladın. Bütün sahələr məcburidir; çatışmayan sahə required_input_info_not_submittederrors[] ilə bildirilir.

Sorğu
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.00,
    "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": "Standard Room · Bed & Breakfast", "piece": 1, "price": 1930.00 },
      { "id": 12, "name": "Dinner", "piece": 1, "price": 400.00 }
    ]
  }'
Cavab · 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>"
}

Qaytarılan code HTML fraqmentidir: otelin virtual POS provayderindən asılı olaraq bu, avtomatik göndərilən 3D Secure forması, window.location yönləndirmə skripti və ya daxil edilmiş ödəniş formasıdır (məs. iyzico). Fraqmenti ödəniş səhifənizdə olduğu kimi göstərin; onu təhlil etməyə çalışmayın. Qonaq ödənişi provayderdə tamamlayır və sizin returnUrl ünvanınıza qayıdır; nəticə bu ünvana əlavə olunan sorğu parametrləri ilə bildirilir (sonuc=1 uğurlu, sonuc=0 uğursuz). Sifariş nömrəniz (orderID) ödəniş qeydi ilə birlikdə saxlanılır; qayıdışda onu öz qeydinizlə tutuşdurun və rezervasiyanı yalnız ödəniş uğurlu olduqda ötürün.

SahəQeyd
totalPriceSəbətin cəminə bərabər olmalıdır; bu məbləğ provayderə göndərilir.
orderIDUnikal olmalıdır. Rezervasiyanın ID dəyərindən istifadə etmək tutuşdurmanı asanlaşdırır.
countryIDÖlkələr siyahısındakı id.
baskets[]Hər otaq və ya əlavə xidmət üçün bir sətir. id otaq tipinin / paketin ID-si, piece miqdar, price vahidin qiymətidir.

Virtual POS məlumatlarından birbaşa istifadə#

HMS-in ödəniş səhifəsi əvəzinə provayderə öz serverinizdən qoşulmaq istəyirsinizsə, virtual POS məlumatları son nöqtəsi ticarət nöqtəsinin ID-sini, açarları və provayder kodunu qaytarır. Bunlar gizli məlumatlardır: onlardan yalnız server tərəfində istifadə edin və bu yanaşmanı əvvəlcədən HMS ilə razılaşdırın.

Ödənişdən sonra#

  • 10-cu növdə rezervasiyanı ödəniş təsdiqləndikdən sonra ötürün; uğursuz ödənişdə ötürməyin.
  • 3-cü növdə rezervasiyanı dərhal ötürün; köçürmə daxil olduqda otel onu paneldə qeydə alır.
  • Rezervasiya ötürülməsində Total.amountAfterTaxes alınmış və ya alınacaq məbləğə bərabər olmalıdır.
Son yenilənmə: 21 sentyabr 2026Səhv tapdınız? Bizə bildirin