رزرو
اتاق، نوع پذیرایی و نرخی که مهمان انتخاب کرده است در ساختار BookingPushRQ به HMS ارسال میشود. همین اندپوینت با ارسال type برابر Cancel یا Modify لغو و ویرایش رزرو را هم انجام میدهد. برای روند کامل، راهنمای جریان رزرو را ببینید.
ارسال رزرو (BookingPushRQ)#
/external/online/channel/bookingاحراز هویت: Authorization: Bearer · بدنه: application/json
یک یا چند رزرو را در HMS ثبت میکند. ID کد یکتای رزرو است که در سمت شما تولید میشود؛ ارسال Modify با همان ID رکورد را بهروز میکند و Cancel آن را لغو میکند. وقتی چند اتاق از یک نوع اتاق و نوع پذیرایی فروخته میشود، هر اتاق یک آیتم جداگانه در RoomStays است و NumberOfUnits بهترتیب 1، 2، 3… میشود.
برای روش پرداخت کارت اعتباری (9) اطلاعات کارت زیر PaymentCard ارسال میشود؛ برای روشهای دیگر این فیلد را نفرستید. کار با داده کارت، شما را مشمول الزامات PCI DSS میکند.
بدنه درخواست
BookingPushRQ.Bookings[]object[]الزامیhotelIDstringالزامیIDstringالزامیtypestringالزامیBookModifyCancelcreateDateTimedatetimecheckinDate / checkoutDatedateالزامیYYYY-MM-DD.RoomStays[]object[]الزامیroomTypeIDstringالزامیitems[].id از فهرست اتاقها.roomNamestringratePlanIDstringالزامیaccommodationTypes[].id از فهرست اتاقها.ratePlanNamestringtypestringBookModifyCancelNumberOfUnitsstringالزامیcheckinDate / checkoutDatedateالزامیGuestCountobjectالزامیadult و child.PerDayRatesobjectcurrency و PerDayRate[]: stayDate، baseRate، hotelServiceFees.TotalobjectالزامیamountAfterTaxes، amountOfTaxes، currency.PaymentCardobjectCardHolder{fullname, address, country, city}، cardNumber، expireDate (MMYY)، cardCode، seriesCode (CVV).PrimaryGuests[]object[]الزامیname، surname، PhoneNumber، email، CountryCode.ChildGuests[]object[]age الزامی است؛ name، surname، year، date، detail اختیاریاند.SpecialRequest[]object[]text. به توضیحات رزرو الحاق میشود.extras[]object[]name، note، person، piece، price، priceMode، priceTotal، stockID (id از فهرست پکیجها).TotalobjectالزامیamountAfterTaxes، amountOfTaxes، extraTotal، currency.پاسخ
200 شیء BookingPushRS. در صورت موفقیت Success: true و شناسه رزرو در HMS (HMS_ID)؛ در صورت خطا پیام Error و BookingConfirmNumbers[].Error[].
پاسخهای خطا
- 200
Error: No available data could be found. (01، بدنه خالی یا غیرقابل تجزیه) · Hotel registration not found on HMS. (02، هتل به کانال آنلاین متصل نیست) · 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": "اتاق استاندارد",
"ratePlanID": "2",
"ratePlanName": "با صبحانه",
"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": "ورود دیرهنگام، حدود ساعت 23:00."
}
],
"extras": [
{
"name": "شام",
"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": "اتاق استاندارد",
"ratePlanID": "2",
"ratePlanName": "با صبحانه",
"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": "ورود دیرهنگام، حدود ساعت 23:00."
}
],
"extras": [
{
"name": "شام",
"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' => 'اتاق استاندارد',
'ratePlanID' => '2',
'ratePlanName' => 'با صبحانه',
'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' => 'ورود دیرهنگام، حدود ساعت 23:00.',
],
],
'extras' => [
[
'name' => 'شام',
'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."
}
]
}
]
}
}