Rezervasiya
Qonağın seçdiyi otaq, qidalanma tipi və qiymət BookingPushRQ strukturu ilə HMS-ə ötürülür. Eyni son nöqtə type sahəsində Cancel və ya Modify göndərməklə ləğv və dəyişikliklər üçün də istifadə olunur. Başdan-sona proses üçün Rezervasiya axını bələdçisinə baxın.
Rezervasiyanın ötürülməsi (BookingPushRQ)#
/external/online/channel/bookingAutentifikasiya: Authorization: Bearer · Gövdə: application/json
Bir və ya bir neçə rezervasiyanı HMS-də qeydə alır. ID sizin tərəfinizdə yaradılan unikal rezervasiya kodudur; eyni ID ilə Modify göndərmək qeydi yeniləyir, Cancel isə onu ləğv edir. Eyni otaq tipi və qidalanma tipindən bir neçə otaq satıldıqda hər otaq NumberOfUnits dəyəri 1, 2, 3… olan ayrıca RoomStays elementidir.
Kredit kartı (9) ödəniş növündə kart məlumatları PaymentCard altında göndərilir; digər ödəniş növlərində bu sahəni göndərməyin. Kart məlumatlarını emal etdiyiniz üçün PCI DSS tələblərinə tabe olursunuz.
Sorğu gövdəsi
BookingPushRQ.Bookings[]object[]məcburihotelIDstringməcburiIDstringməcburitypestringməcburiBookModifyCancelcreateDateTimedatetimecheckinDate / checkoutDatedateməcburiYYYY-MM-DD.RoomStays[]object[]məcburiroomTypeIDstringməcburiitems[].id.roomNamestringratePlanIDstringməcburiaccommodationTypes[].id.ratePlanNamestringtypestringBookModifyCancelNumberOfUnitsstringməcburicheckinDate / checkoutDatedateməcburiGuestCountobjectməcburiadult və child sayları.PerDayRatesobjectcurrency və PerDayRate[]: stayDate, baseRate, hotelServiceFees.TotalobjectməcburiamountAfterTaxes, amountOfTaxes, currency.PaymentCardobjectCardHolder{fullname, address, country, city}, cardNumber, expireDate (MMYY), cardCode, seriesCode (CVV).PrimaryGuests[]object[]məcburiname, surname, PhoneNumber, email, CountryCode.ChildGuests[]object[]age məcburidir; name, surname, year, date, detail ixtiyaridir.SpecialRequest[]object[]text. Rezervasiyanın qeydlərinə birləşdirilir.extras[]object[]name, note, person, piece, price, priceMode, priceTotal, stockID (paket siyahısındakı id).TotalobjectməcburiamountAfterTaxes, amountOfTaxes, extraTotal, currency.Cavab
200 BookingPushRS obyekti. Uğurlu olduqda Success: true və HMS rezervasiya ID-si (HMS_ID); xəta olduqda Error mesajı və BookingConfirmNumbers[].Error[].
Xəta cavabları
- 200
Error: No available data could be found. (01, gövdə boşdur və ya təhlil edilə bilmir) · Hotel registration not found on HMS. (02, otel onlayn kanala qoşulmayıb) · Could not register. · Failed to parse information.
curl -X POST "https://test.hms.gen.tr/external/online/channel/booking" \
-H "Authorization: Bearer $HMS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"BookingPushRQ": {
"Bookings": [
{
"hotelID": "1000",
"ID": "4811174883",
"type": "Book",
"createDateTime": "2026-08-01T08:32:11:293Z",
"checkinDate": "2026-08-18",
"checkoutDate": "2026-08-20",
"RoomStays": [
{
"roomTypeID": "2",
"roomName": "Standart otaq",
"ratePlanID": "2",
"ratePlanName": "Səhər yeməyi daxil",
"type": "Book",
"NumberOfUnits": "1",
"checkinDate": "2026-08-18",
"checkoutDate": "2026-08-20",
"GuestCount": {
"adult": 2,
"child": 1
},
"PerDayRates": {
"currency": "TRY",
"PerDayRate": [
{
"stayDate": "2026-08-18",
"baseRate": "965.00",
"hotelServiceFees": "0"
},
{
"stayDate": "2026-08-19",
"baseRate": "965.00",
"hotelServiceFees": "0"
}
]
},
"Total": {
"amountAfterTaxes": "1930.00",
"amountOfTaxes": "175.45",
"currency": "TRY"
}
}
],
"PrimaryGuests": [
{
"name": "Ayşe",
"surname": "Demir",
"PhoneNumber": "+905551112233",
"email": "[email protected]",
"CountryCode": "TR"
}
],
"ChildGuests": [
{
"age": 7
}
],
"SpecialRequest": [
{
"text": "Gec gəliş, təxminən saat 23:00."
}
],
"extras": [
{
"name": "Şam yeməyi",
"note": "",
"person": 2,
"piece": 1,
"price": "400.00",
"priceMode": null,
"priceTotal": "400.00",
"stockID": 12
}
],
"Total": {
"amountAfterTaxes": "2330.00",
"amountOfTaxes": "211.82",
"extraTotal": "400.00",
"currency": "TRY"
}
}
]
}
}'const res = await fetch("https://test.hms.gen.tr/external/online/channel/booking", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.HMS_TOKEN}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"BookingPushRQ": {
"Bookings": [
{
"hotelID": "1000",
"ID": "4811174883",
"type": "Book",
"createDateTime": "2026-08-01T08:32:11:293Z",
"checkinDate": "2026-08-18",
"checkoutDate": "2026-08-20",
"RoomStays": [
{
"roomTypeID": "2",
"roomName": "Standart otaq",
"ratePlanID": "2",
"ratePlanName": "Səhər yeməyi daxil",
"type": "Book",
"NumberOfUnits": "1",
"checkinDate": "2026-08-18",
"checkoutDate": "2026-08-20",
"GuestCount": {
"adult": 2,
"child": 1
},
"PerDayRates": {
"currency": "TRY",
"PerDayRate": [
{
"stayDate": "2026-08-18",
"baseRate": "965.00",
"hotelServiceFees": "0"
},
{
"stayDate": "2026-08-19",
"baseRate": "965.00",
"hotelServiceFees": "0"
}
]
},
"Total": {
"amountAfterTaxes": "1930.00",
"amountOfTaxes": "175.45",
"currency": "TRY"
}
}
],
"PrimaryGuests": [
{
"name": "Ayşe",
"surname": "Demir",
"PhoneNumber": "+905551112233",
"email": "[email protected]",
"CountryCode": "TR"
}
],
"ChildGuests": [
{
"age": 7
}
],
"SpecialRequest": [
{
"text": "Gec gəliş, təxminən saat 23:00."
}
],
"extras": [
{
"name": "Şam yeməyi",
"note": "",
"person": 2,
"piece": 1,
"price": "400.00",
"priceMode": null,
"priceTotal": "400.00",
"stockID": 12
}
],
"Total": {
"amountAfterTaxes": "2330.00",
"amountOfTaxes": "211.82",
"extraTotal": "400.00",
"currency": "TRY"
}
}
]
}
})
});
const data = await res.json();$ch = curl_init('https://test.hms.gen.tr/external/online/channel/booking');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('HMS_TOKEN'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'BookingPushRQ' => [
'Bookings' => [
[
'hotelID' => '1000',
'ID' => '4811174883',
'type' => 'Book',
'createDateTime' => '2026-08-01T08:32:11:293Z',
'checkinDate' => '2026-08-18',
'checkoutDate' => '2026-08-20',
'RoomStays' => [
[
'roomTypeID' => '2',
'roomName' => 'Standart otaq',
'ratePlanID' => '2',
'ratePlanName' => 'Səhər yeməyi daxil',
'type' => 'Book',
'NumberOfUnits' => '1',
'checkinDate' => '2026-08-18',
'checkoutDate' => '2026-08-20',
'GuestCount' => [
'adult' => 2,
'child' => 1,
],
'PerDayRates' => [
'currency' => 'TRY',
'PerDayRate' => [
[
'stayDate' => '2026-08-18',
'baseRate' => '965.00',
'hotelServiceFees' => '0',
],
[
'stayDate' => '2026-08-19',
'baseRate' => '965.00',
'hotelServiceFees' => '0',
],
],
],
'Total' => [
'amountAfterTaxes' => '1930.00',
'amountOfTaxes' => '175.45',
'currency' => 'TRY',
],
],
],
'PrimaryGuests' => [
[
'name' => 'Ayşe',
'surname' => 'Demir',
'PhoneNumber' => '+905551112233',
'email' => '[email protected]',
'CountryCode' => 'TR',
],
],
'ChildGuests' => [
[
'age' => 7,
],
],
'SpecialRequest' => [
[
'text' => 'Gec gəliş, təxminən saat 23:00.',
],
],
'extras' => [
[
'name' => 'Şam yeməyi',
'note' => '',
'person' => 2,
'piece' => 1,
'price' => '400.00',
'priceMode' => null,
'priceTotal' => '400.00',
'stockID' => 12,
],
],
'Total' => [
'amountAfterTaxes' => '2330.00',
'amountOfTaxes' => '211.82',
'extraTotal' => '400.00',
'currency' => 'TRY',
],
],
],
],
]),
]);
$data = json_decode(curl_exec($ch), true);{
"BookingPushRS": {
"Success": true,
"BookingConfirmNumbers": [
{
"confirmTime": 1755500000,
"bookingID": 48213,
"bookingType": "Book",
"HMS_ID": 48213
}
]
}
}{
"BookingPushRS": {
"Error": "Hotel registration not found on HMS.",
"BookingConfirmNumbers": [
{
"bookingID": null,
"bookingType": null,
"confirmTime": 1755500000,
"Error": [
{
"code": "02",
"text": "Hotel registration not found on HMS."
}
]
}
]
}
}