Booking
متد Book
این متد جهت رزرو هتل مورد استفاده قرار میگیرد.
API Endpoint
https://{SupplierWebsiteUrl}/api/Partners/Hotel/Booking/V4/Book post
Request Parameters
نمونه کلاس Request به زبان سی شارپ در پروژه Partners.Contracts (دانلود) در پوشه زیر موجود است:
\Hotel\Booking\V4\Book\RequestModel
Username
string
نام کاربری
Password
string
رمز عبور به صورت MD5 شده
LockId
number
شناسه قفل که در مرحله قبلی و با فراخوانی متد Lock دریافت نموده اید.
RoomList
complex type
لیست اتاق ها و اطلاعات مسافران مربوط به هر اتاق
AdultGuestList
complex type
لیست میهمانان بزرگسال
Title
string
عنوان جنسیت میهمان که باید یکی از مقادیر MR یا MS باشد.
FirstName
string
نام میهمان
LastName
string
نام خانوادگی میهمان
BirthDate
string
تاریخ تولد میهمان با فرمت yyyy-MM-dd به صورت میلادی.
ارسال مقدار این فیلد برای میهمان بزرگسال اختیاری بوده ولی برای میهمان کودک باید ارسال شود.
IranianNationalId
string
اطلاعات مربوط به کد ملی میهمان.
در حالتی که میهمان ایرانی باشد و هتل نیز داخلی باشد، باید مقدار این فیلد را پر نمایید. در غیر این صورت باید فیلد Passport را پر نمایید. در غیر این صورت سیستم درخواست شما را reject خواهد کرد.
Passport
complex type
اطلاعات مربوط به گذرنامه میهمان.
زمانی که میهمان ایرانی باشد و هتل خارجی باشد یا در حالتی که مسافر غیر ایرانی باشد، باید این فیلد را پر نمایید. در غیر این صورت سیستم درخواست شما را reject خواهد کرد.
Number
string
شماره گذرنامه میهمان
ExpiryDate
string
تارخ انقضا گذرنامه با فرمت yyyy-MM-dd و به صورت میلادی.
NationalityCountryCode
string
کد ISO دو حرفی یا سه حرفی ملیت میهمان
جهت مشاهده کد ISO کشور ها اینجا کلیک نمایید.
به عنوان مثال برای ایران می توانید یکی از مقدارهای IR یا IRN را وارد نمایید.
PlaceOfIssueCountryCode
string
کد ISO دو حرفی یا سه حرفی محل صدور گذرنامه میهمان
جهت مشاهده کد ISO کشور ها اینجا کلیک نمایید.
به عنوان مثال برای ایران می توانید یکی از مقدارهای IR یا IRN را وارد نمایید.
ChildGuestList
string
لیست میهمانان کودک
ساختار آن شبیه به AdultGuestList می باشد
نکته: با توجه به پذیرش رایگان نوزاد (سن کمتر از 2 سال) در زمان ورود به هتل، اطلاعات نوازد را ارسال نفرمایید.
MobileNumber
string
شماره تلفن همراه میهمان.
شماره تلفن همراه باید به صورت کامل به همراه کد کشور وارد شود. به عنوان مثال 989352283333+ صحیح می باشد.
string
آدرس ایمیل میهمان.
TotalPayable
decimal
مبلغ کل رزرو.
برای جلوگیری از خطاهای احتمالی ما در هنگام رزرو با دریافت این فیلد check price انجام می دهیم، بدین شکل که اگر مبلغ ارسالی از سمت شما با مبلغ سیستم یکی نباشد، درخواست شما reject خواهد شد.
این فیلد مجموع فیلد Room_NetPrice_TaxIncluded (به علاوه مجموع Extrabed_NetPrice_TaxIncluded در صورت نیاز به تخت اضافه) که در مراحل availability دریافت نموده اید می باشد.
YourLocalInventoryPnr
string
رفرنس سیستم داخلی شما.
حداکثر سایز مورد قبول برای این فیلد 38 کاراکتر می باشد. در صورتی که مقداری بیش از 38 کاراکتر ارسال نمایید سیستم اجازه رزرو به شما نخواهد داد.
ارسال اطلاعات برای این فیلد اجباری نمی باشد. اما در صورتی که مقدار آن را ارسال نمایید:
1. در پیگیری های بعدی با استفاده از رفرنس خود شما، میتوانید پیگیری های مربوط به یک رزرو را انجام دهید.
2. از خطر صدور تکراری رزرو جلوگیری خواهد شد
منحصر به فرد بودن YourLocalInventoryPnr در وب سرویس های پرواز و هتل و تور سپهر به صورت یکپارچه چک می شود. به عنوان مثال اگر شما یک رفرنس را هم به وب سرویس پرواز و هم وب سرویس هتل ارسال نمایید، سیستم تنها اجازه رزرو پرواز را خواهد داد و درخواست دوم خطا برگشت میدهد. بنابراین اگر شما با یک حساب کاربری به صورت همزمان از وب سرویس پرواز یا هتل یا تور استفاده می نمایید باید دقت نموده که YourLocalInventoryPnr که در تمام این وب سرویس ها منحصر به فرد (Unique) باشد را ارسال نمایید.
IncomingTransfer
complex type
اطلاعات مربوط به ترانسفر ورودی میهمان
در صورتی که هتل دارای خدمات ترانسفر رایگان باشد با ارسال کردن اطلاعات ترانسفر میهمان در این فیلد، ترانسفر میهمان شما از فرودگاه یا ایستگاه راه آهن به هتل به صورت رایگان انجام خواهد شد.
FlightTransfer
complex type
در صورتی که میهمان به وسیله پرواز به شهر هتل مسافرت می کند، اطلاعات مربوط به آن را در این فیلد ارسال نمایید.
FlightNumber
string
شماره پرواز
DepartureTime
string
زمان حرکت پرواز از مبدا
OriginCity
string
شهر مبدا پرواز
AirlineName
string
نام ایرلاین
TrainTransfer
complex type
در صورتی که میهمان به وسیله قطار به شهر هتل مسافرت می کند، اطلاعات مربوط به آن را در این فیلد ارسال نمایید.
TrainNumber
string
شماره حرکت قطار
ArrivalTime
string
زمان رسیدن به مقصد
OriginCity
string
شهر مبدا قطار
CarrierName
string
نام شرکت ارائه دهنده قطار
BusTransfer
complex type
در صورتی که میهمان به وسیله اتوبوس به شهر هتل مسافرت می کند، اطلاعات مربوط به آن را در این فیلد ارسال نمایید.
Terminal
string
ترمینالی که اتوبوس در زمان رسیدن به مقصد به آن وارد میشود
ArrivalTime
string
زمان رسیدن به مقصد
OriginCity
string
شهر مبدا
CarrierName
string
نام شرکت ارائه دهنده
OutgoingTransfer
complex type
اطلاعات مربوط به ترانسفر خروج میهمان
در صورتی که هتل دارای خدمات ترانسفر رایگان برای زمان خروج باشد با ارسال کردن اطلاعات ترانسفر میهمان در این فیلد، ترانسفر میهمان شما از هتل به فرودگاه یا ایستگاه راه آهن به صورت رایگان انجام خواهد شد.
FlightTransfer
complex type
در صورتی که میهمان به وسیله پرواز از شهر هتل خارج میشود، اطلاعات مربوط به آن را در این فیلد ارسال نمایید.
FlightNumber
string
شماره پرواز
DepartureTime
string
زمان پرواز
TrainTransfer
complex type
در صورتی که میهمان به وسیله قطار از شهر هتل خارج میشود، اطلاعات مربوط به آن را در این فیلد ارسال نمایید.
TrainNumber
string
شماره حرکت قطار
DepartureTime
string
زمان حرکت قطار
BusTransfer
complex type
در صورتی که میهمان به وسیله اتوبوس از شهر هتل خارج میشود، اطلاعات مربوط به آن را در این فیلد ارسال نمایید.
Terminal
string
ترمینالی که اتوبوس از آن حرکت خود را شروع می کند
DepartureTime
string
زمان حرکت
Remarks
string
ملاحظات
{
"Username": "testdev1",
"Password": "25f9e794323b453885f5181f1b624d0b",
"LockId": 918,
"YourLocalInventoryPnr": "3ecf7689-fe00-4bd9-abed-8a420f4b7303",
"Email": "your-email-address@your-domain.com",
"MobileNumber": "+989352283333",
"Remarks": "",
"RoomList": [
{
"AdultGuestList": [
{
"Title": "MS",
"FirstName": "ROZA",
"LastName": "FETANAT",
"BirthDate": "1993-10-12",
"IranianNationalId": "0010632832",
"Passport": null
},
{
"Title": "MR",
"FirstName": "ZALI",
"LastName": "ESFANDIAR",
"BirthDate": "1993-10-12",
"IranianNationalId": "0010820140",
"Passport": null
}
],
"ChildGuestList": []
},
{
"AdultGuestList": [
{
"Title": "MS",
"FirstName": "PARNIA",
"LastName": "IGHANI",
"BirthDate": "1993-10-12",
"IranianNationalId": "0012293504",
"Passport": null
},
{
"Title": "MR",
"FirstName": "SEYED GHASEM",
"LastName": "AZARKHAHMOGHADAM",
"BirthDate": "1993-10-12",
"IranianNationalId": "0011513578",
"Passport": null
}
],
"ChildGuestList": [
{
"Title": "MS",
"FirstName": "ZHINA",
"LastName": "BAHRAMIKIA",
"BirthDate": "2020-10-12",
"IranianNationalId": "0011972386",
"Passport": null
}
]
}
],
"IncomingTransfer": null,
"OutgoingTransfer": null,
"TotalPayable": 25996500
}
{
"Username": "testdev1",
"Password": "25f9e794323b453885f5181f1b624d0b",
"LockId": 1143,
"YourLocalInventoryPnr": "60a9db22-7b3d-429b-a08b-24afb1b9da20",
"Email": "your-email-address@your-domain.com",
"MobileNumber": "+989352283333",
"Remarks": "",
"RoomList": [
{
"AdultGuestList": [
{
"Title": "MR",
"FirstName": "MAHSHAD",
"LastName": "ARJMANDI",
"BirthDate": "1993-11-29",
"IranianNationalId": "0011333235",
"Passport": null
},
{
"Title": "MR",
"FirstName": "ROJIA",
"LastName": "NIKKHAH ESHGHI",
"BirthDate": "1993-11-29",
"IranianNationalId": "0012081671",
"Passport": null
}
],
"ChildGuestList": []
}
],
"IncomingTransfer": {
"FlightTransfer": {
"FlightNumber": "7057",
"DepartureTime": "18:30",
"OriginCity": "tehran",
"AirlineName": "Kish air"
},
"TrainTransfer": null,
"BusTransfer": null
},
"OutgoingTransfer": {
"FlightTransfer": {
"FlightNumber": "7058",
"DepartureTime": "12:15"
},
"TrainTransfer": null,
"BusTransfer": null
},
"TotalPayable": 9810000
}
Response Data
نمونه کلاس Response به زبان سی شارپ در پروژه Partners.Contracts (دانلود) در پوشه زیر موجود است:
\Hotel\Booking\V4\Book\ResponseModel
Pnr
string
رفرنس رزرو که 6 کاراکتر و ترکیبی از حروف و اعداد می باشد.
اگر در زمان رزرو با خطای Time out مواجه شدید یا هیچ جوابی از سمت سپهر دریافت نکردید، می بایست حتما وضیت رزرو را در سایت تامین کننده بررسی نمایید. زیرا که دریافت نکردن جواب الزاما به معنی صادر نشدن رزرو نیست. و ممکن است سیستم سپهر رزرو را صادر کرده باشد ولی هنگام ارسال پاسخ به شما، اینترنت بین دیتاسنتر سپهر تا دیتاسنتر شما دچار اختلال گردیده و جواب به دست شما نرسیده باشد.
وضعیت رزرو را با یکی از دو روش زیر می توان بررسی نمود:
- وارد پنل سایت تامین کننده شده و با جستجو کردن کد ملی/شماره گذرنامه یا “YourLocalInventoryPnr” وضعیت رزرو را بررسی نمایید.
- با استفاده از وب سرویس و متد RetrieveBooking/GetStatus وضعیت رزرو را بررسی نمایید.
بدیهی است در صورت رعایت نکردن مورد فوق، هیچ گونه مسئولیتی متوجه سپهر نمی باشد.
{
"Pnr": "V48T47"
}
Response common exceptions
در جدول زیر لیستی از خطاهایی که ممکن است بعد از فراخوانی این متد برگشت داده شود، فهرست شده است.
| ExceptionType | توضیح خطا |
|---|---|
|
Error1004-NoEnoughCredit |
باقی مانده اعتبار حساب برای انجام این رزرو کافی نیست. |
|
Error1005-CreditDueDateReached |
مهلت پرداخت بدهی به اتمام رسیده است و انجام رزرو امکان پذیر نمی باشد |
|
Error1007-DuplicateClientPnr |
مقداری که به عنوان YourLocalInventoryPnr ارسال شده است تکراری بوده و قبلا در سیستم ثبت شده است. |
|
Error1010-LockReleased |
قفل رزرو آزاد شده است و رزرو قابل انجام شدن نیست. این اتفاق زمانی به وقوع می پیوندد که یا زمان بین قفل کردن تا فراخوانی متد Book، بیش از اندازه طولانی شده باشد و یا اینکه قفل رزرو توسط مدیر سیستم در سایت تامین کننده آزاد شده باشد. |
|
Error1016-InvalidBirthdate |
تاریخ تولد مسافر غیر معتبر است. زمانی که تاریخ ارسال شده در بازه زمانی امروز تا 120 سال گذشته نباشد این خطا تولید می شود. |
|
Error1021-PriceMismatch |
نرخ درخواستی شما با نرخ سیستم مطابقت ندارد. |
|
Error1022-IpIsNotTrusted |
آی پی شما در سایت تامین کننده تراست نشده است. جهت تراست کردن آی پی با پشتیبانی سپهر تماس حاصل نمایید. |
|
Error1023-InvalidCredential |
نام کاربری یا رمز عبور اشتباه می باشد. |
|
Error1024-ForbiddenIp |
آی پی شما توسط تامین کننده مسدود شده است. جهت پیگیری موضوع با تامین کننده تماس بگیرید. |
|
Error1028-HotelExtrabedExceeded |
تعداد تخت اضافه مورد نیاز برای انجام رزرو، بیش از گنجایش کلی تخت اضافه هتل می باشد. اگر دیتای availability را سمت خود cache می نمایید، برای کاهش احتمال بروز این خطا پیشنهاد می شود availability را در زمان های کوتاه تری دریافت نموده و cache خود را سریعتر بروز رسانی نمایید. |
|
Error1030-PassportExpiryDateMaximumLimit |
تاریخ انقضای گذرنامه بیش از حد مجاز آن است. معمولا اکثر کشورها گذرنامه هایی با حداکثر تاریخ انقضای 10 سال صادر می کنند. البته این عدد بر اساس هر کشور ممکن است متفاوت باشد. به عنوان مثال اگر برای کشوری که گذرنامه های حداکثر 10 ساله دارد، تاریخ انقضای گذرنامه بیش از 10 سال ارسال شود، سیستم این خطا را تولید خواهد کرد. |
|
Exception |
خطای نامشخص. جهت دریافت اطلاعات بیشتر باید به ErrorMessage داخل json برگشتی مراجعه نمود. |