Rezervasiya axını

Rezervasiya mühərriki üçün tipik axın: token alın, qonağın axtardığı tarixlər və qonaq sayı üçün otaqları siyahıya alın, seçilmiş qiyməti və varsa kuponu tətbiq edin, ödəniş addımını tamamlayın və rezervasiyanı BookingPushRQ ilə HMS-ə yazın. Bu bələdçi hər addımı real sorğu və cavablarla izah edir.

1Giriş/external/public/login
2Otaq siyahısı/external/online/roomType
3Kupon · Paketlərcoupon/search · stock/packages
4Ödənişpayment/type/{type}
5Ötürməchannel/booking

1. Token alın#

Serveriniz işə düşəndə və ya tokenin müddəti bitəndə bir dəfə daxil olun və tokeni otel ID-si ilə birlikdə saxlayın. Ətraflı: Autentifikasiya.

2. Otaqları siyahıya alın#

Otaq siyahısını qonağın axtarış formasındakı dəyərlərlə sorğulayın. Uşaqlar varsa, onların yaşlarını göndərin; uşaq qiyməti yaşa görə hesablanır.

Terminal
curl "https://test.hms.gen.tr/external/online/roomType" \
  -H "Authorization: Bearer $HMS_TOKEN" \
  -d "hotelID=1000" -d "startDate=2026-08-18" -d "endDate=2026-08-20" \
  -d "adultCount=2" -d "childCount=1" -d "childAges[]=7" -d "language=en"

Cavabdakı hər otaq tipi üçün nəyi göstərmək lazımdır:

SahəEkranda
name, images[], detail, roomFeatures[]Otaq kartı
roomCountQalan otaqlar. 0 “satışda deyil” deməkdir — səbəbi roomRestrictionMessage sahəsindədir.
accommodationTypes[].titleQidalanma variantı (Səhər yeməyi daxil, Yarım pansion…)
accommodationTypes[].prices{}Qiymət variantları: standart və geri qaytarılmayan

prices obyektinin açarları "<persons>-<1|0>" formasındadır. 1 sonluğu standart (geri qaytarıla bilən), 0 isə geri qaytarılmayan qiymətdir; geri qaytarılmayan variant nonRefundable: "[NR]" daşıyır. Otaq üzrə qiymətləndirmədə (priceType: 1) qonaq sayından asılı olmayaraq açar 1-1 / 1-0 olur.

accommodationTypes[0].prices
{
    "2-1": {
        "total": 2,
        "title": 2,
        "nonRefundable": "",
        "price": "1930.00",
        "currency": "TRY",
        "id": "2/2",
        "prices": [
            {
                "price": "965.00",
                "tarih": "18.08.2026"
            },
            {
                "price": "965.00",
                "tarih": "19.08.2026"
            }
        ]
    },
    "2-0": {
        "total": 2,
        "title": 2,
        "nonRefundable": "[NR]",
        "price": "1737.00",
        "currency": "TRY",
        "id": "2-0/2",
        "prices": [
            {
                "price": "868.50",
                "tarih": "18.08.2026"
            },
            {
                "price": "868.50",
                "tarih": "19.08.2026"
            }
        ]
    }
}

3. Kuponlar və paketlər#

Qonaq kupon daxil edərsə, onu yoxlayın və endirimi öz tərəfinizdə tətbiq edin:

Terminal
curl "https://test.hms.gen.tr/external/online/coupon/search" \
  -H "Authorization: Bearer $HMS_TOKEN" \
  -d "hotelID=1000" -d "coupon=SUMMER2026"
Cavab · 200
{
    "success": true,
    "cupon": {
        "id": 12,
        "change": 0,
        "rate": "10.00"
    }
}

change 0 olduqda rate faizlə endirimdir (10%); 1 olduqda sabit məbləğdir (otelin valyutasında 10.00). Endirimi otaq məbləğinə tətbiq edin və endirimli yekunları rezervasiyada göndərin.

Əlavə xidmətlər satmaq üçün paket siyahısını göstərin. Seçilmiş paketlər rezervasiyaya extras[] kimi daxil edilir, paketin id dəyəri isə stockID sahəsinə yazılır. Kupon və paketlərdən sonrakı yekun məbləğlər rezervasiyanın Total sahəsinə yazılır.

4. Ödəniş addımı#

Otelin qəbul etdiyi ödəniş növlərini siyahıya alın və qonağın seçiminə uyğun davam edin. 10-cu növdə (onlayn ödəniş) ödəniş sessiyası başladılır və qonaq provayderə ötürülür; ödənişdən sonra o, sizin returnUrl ünvanınıza qayıdır. Bütün növlər Ödəniş axını bələdçisində izah olunub.

5. Rezervasiyanı ötürün#

Ödənişin nəticəsi məlum olduqdan sonra rezervasiyanı HMS-ə yazın. ID sizin yaratdığınız unikal koddur; eyni kodu qonağa da verin. Otaq və qidalanma tipi ID-ləri otaq siyahısından götürülür.

Sorğu
curl -X POST "https://test.hms.gen.tr/external/online/channel/booking" \
  -H "Authorization: Bearer $HMS_TOKEN" \
  -H "Content-Type: application/json" \
  -d @booking.json
Cavab · 200
{
    "BookingPushRS": {
        "Success": true,
        "BookingConfirmNumbers": [
            {
                "confirmTime": 1755500000,
                "bookingID": 48213,
                "bookingType": "Book",
                "HMS_ID": 48213
            }
        ]
    }
}

HMS_ID rezervasiyanın HMS-dəki ID-sidir; onu öz qeydinizlə birlikdə saxlayın. Rezervasiya paneldə “Online” kanalı altında görünür və HMS otelin ayarlarına uyğun olaraq qonağa təsdiq e-poçtu göndərir.

Bir neçə otaq#

Eyni otaq tipi və qidalanma tipindən bir neçə otaq satıldıqda hər otaq ayrıca RoomStays elementidir; NumberOfUnits birinci otaq üçün "1", ikinci üçün "2" və s. olur. Fərqli otaq tipləri də ayrıca elementlərdir. Rezervasiyanın Total dəyəri bütün otaqların və əlavələrin cəmidir.

Dəyişikliklər və ləğvetmələr#

Rezervasiyanı eyni ID ilə eyni son nöqtəyə yenidən göndərin:

  • type: "Modify" — tarixlər, otaqlar və ya qonaq məlumatları dəyişib. Rezervasiyanı cari vəziyyətində tam göndərin; HMS mövcud qeydi onunla əvəz edir.
  • type: "Cancel" — rezervasiya ləğv edilib. Otaqlar da type: "Cancel" daşıyır.

Tez-tez yol verilən səhvlər#

  • Otaq siyahısını uzun müddət keşləmək. Mövcudluq və qiymətlər daim dəyişir; qonaq ödəniş addımına keçməzdən əvvəl siyahını yeniləyin.
  • childAges[] uzunluğundan fərqli childCount göndərmək: server yaş siyahısına etibar edir və uşaqların sayını xəbərdarlıqsız dəyişir.
  • Otaq siyahısındakı ID-lər əvəzinə roomTypeID / ratePlanID kimi öz ID-lərinizi göndərmək: Could not register. qaytarılır.
  • 9-dan fərqli ödəniş növləri üçün PaymentCard göndərmək: kart məlumatları HMS-ə lüzumsuz yerə ötürülür.
  • Şəbəkə xətasından sonra fərqli ID ilə təkrar cəhd etmək: bu, dublikat rezervasiya yaradır. Eyni ID ilə təkrarlayın.
Son yenilənmə: 21 sentyabr 2026Səhv tapdınız? Bizə bildirin