Booking
متد Lock
این متد برای قفل کردن ظرفیت و نرخ می باشد.
کاربرد این متد برای زمانی است که مسافر یک پرواز را انتخاب کرده و می خواد وارد صفحه ی ورود اسامی گردد. بعد از انتخاب پرواز و قبل از ورود به صفحه ورود اسامی، شما می توانید این متد را فراخوانی نمایید.
استفاده از این متد اختیاری می باشد.
پیشنهاد می شود قبل از استفاده از متد قفل، با تامین کننده در مورد استفاده از آن هماهنگ نمایید. زیرا تامین کنندگان زیادی استفاده از متد قفل را مجاز نمی دانند مگر اینکه شما دارای حجم فروش زیادی باشید و از قبل با تامین کننده در مورد آن هماهنگ کرده باشید.
قفل کردن فقط برای پروازهای چارتری کاربرد دارد و روی پروازهای وب سرویسی اعمال نمی گردد. بنابراین اگر شما روی یک پرواز وب سرویسی، متد قفل را فراخوانی نمایید، هیچ قفلی ایجاد نمی گردد.
به دلایل امنیتی، قفل کردن بیش از 9 عدد صندلی روی یک پرواز مجاز نمی باشد. در صورتی که حجم درخواست های شما زیاد بوده و احتمال میدهید روی یک پرواز بیش از 9 صندلی قفل نمایید، پیشهاد می گردد در زمان فراخوانی متد Lock در صورتی که با خطا مواجه شدید و ExceptionType خطا شامل Error1013-FlightLockCountLimit بود، عملیات رزرو را بدون قفل کردن ادامه دهید.
مدیران فروش یک تامین کننده امکان آزاد سازی و حذف قفل های ایجاد شده را دارا می باشند، بنابراین اگر در زمان رزرو پیام خطایی مبنی بر آزاد شدن قفل دریافت نمودید و آن قفل زودتر از زمان اشاره شده آزاد شده بود، به احتمال زیاد آن قفل توسط مدیر فروش آن تامین کننده حذف شده است. در این شرایط پیشنهاد می گردد جهت هماهنگی بیشتر، با مدیر فروش تامین کننده تماس حاصل نمایید.
API Endpoint
https://{SupplierWebsiteUrl}/api/Partners/Flight/Booking/V12/Lock post
Request Parameters
نمونه کلاس Request به زبان سی شارپ در پروژه Partners.Contracts (دانلود) در پوشه زیر موجود است:
\Flight\Booking\V12\Lock\RequestModel
Username
string
نام کاربری
Password
string
رمز عبور به صورت MD5 شده
DepartureSegment
Complex type
اطلاعات مربوط به پرواز رفت که می خواهید قفل روی آن انجام شود.
FlightNumber
string
شماره پرواز
FlightDate
string
زمان پرواز با فرمت yyyy-MM-dd HH:mm به صورت میلادی.
در صورتی که ساعت پروازی ارسالی از سمت شما با ساعت پروازی سیستم یکی نباشد، درخواست شما reject خواهد شد. این موضوع در مواردی که ساعت پرواز سیستم توسط تامین کننده تغییر کرده است ولی cache شما هنوز ساعت پرواز جدید را نگرفته است کمک خواهد که اشتباها با ساعت اشتباه برای مسافر رزرو را انجام ندهید.
OriginIataCode
string
کد یاتا فرودگاه مبدا
DestinationIataCode
string
کد یاتا فرودگاه مقصد
FareName
string
نام Fare یا در واقع همان کلاس پروازی که می خواهید رزرو روی آن انجام شود.
ReturningSegment
Complex type
اطلاعات مربوط به پرواز برگشت که می خواهید قفل روی آن انجام شود.
ساختار آن کاملا شبیه DepartureSegment می باشد.
AdultCount
number
تعداد مسافر بزرگسالی که می خواهید برای آنها ظرفیت و قیمت را قفل نمایید.
ChildCount
number
تعداد مسافر کودک که می خواهید برای آنها ظرفیت و قیمت را قفل نمایید.
InfantCount
number
تعداد مسافر نوزاد که می خواهید برای آنها ظرفیت و قیمت را قفل نمایید.
TotalPayable
decimal
مبلغ خالص کل رزرو.
برای جلوگیری از خطاهای احتمالی ما در هنگام رزرو با دریافت این فیلد check price انجام می دهیم، بدین شکل که اگر مبلغ ارسالی از سمت شما با مبلغ سیستم یکی نباشد، درخواست شما reject خواهد شد.
این فیلد مجموع فیلد Payable که در مراحل availability دریافت نموده اید می باشد.
{
"Username": "testdev1",
"Password": "25f9e794323b453885f5181f1b624d0b",
"DepartureSegment": {
"FlightNumber": "2201",
"FlightDate": "2024-04-14 11:00",
"OriginIataCode": "AWZ",
"DestinationIataCode": "IFN",
"FareName": "AB13"
},
"ReturningSegment": null,
"AdultCount": 1,
"ChildCount": 0,
"InfantCount": 0,
"TotalPayable": 3450000
}
Response Data
نمونه کلاس Response به زبان سی شارپ در پروژه Partners.Contracts (دانلود) در پوشه زیر موجود است:
\Flight\Booking\V12\Lock\ResponseModel
DepartureSegmentLockId
nullable number
در صورتی که عملیات قفلگذاری با موفقیت انجام شده باشد، این فیلد حاوی Id قفل می باشد.
در زمان فراخوانی متد Book، این Id باید به همراه سایر اطلاعات مسافران و پرواز به متد Book ارسال شود.
در صورتی که متد Lock را روی یک پرواز وب سرویسی فراخوانی کرده باشید – به دلیل اینکه در سیستم سپهر پروازهای وب سرویسی امکان قفلگذاری ندارند – مقدار null و تهی برگشت خواهد داد.
ReturningSegmentLockId
nullable number
Id قفل مربوط به پرواز برگشت.
کلیه موارد توضیح داده شده برای DepartureSegmentLockId در مورد این فیلد نیز صدق می کند.
ExpiryInMinute
number
زمان آزاد شدن قفل به دقیقه
مدت زمانی که ظرفیت و نرخ توسط قفل برای شما نگه داشته می شود از فرمول زیر بدست می آید:
مدت زمان نگهداری قفل = 10 دقیقه + 2 دقیقه به ازای هر مسافر
به عنوان مثال برای یک رزرو 3 نفره، 16 دقیقه زمان نگه داری قفل خواهد بود.
نکته: مدت زمانی که سیستم به ازای هر مسافر در نظر میگیرد توسط تامین کننده قابل تغییر می باشد. مثلا یک تامین کننده ممکن است عدد 2 دقیقه و یک تامین کننده دیگر عدد 4 دقیقه را به ازای هر مسافر در نظر بگیرد.
{
"DepartureSegmentLockId": 232011,
"ReturningSegmentLockId": null,
"ExpiryInMinute": 12
}
Response common exceptions
در جدول زیر لیستی از خطاهایی که ممکن است بعد از فراخوانی متد Lock برگشت داده شود، فهرست شده است.
| ExceptionType | توضیح خطا |
|---|---|
|
Error1001-FlightNotFound |
پروازی با اطلاعات درخواستی پیدا نشد. |
|
Error1003-NoEnoughSeatAvailable |
تعداد صندلی درخواستی در پرواز موجود نمی باشد. |
|
Error1004-NoEnoughCredit |
باقی مانده اعتبار حساب برای انجام این رزرو کافی نیست. |
|
Error1005-CreditDueDateReached |
مهلت پرداخت بدهی به اتمام رسیده است و انجام رزرو امکان پذیر نمی باشد |
|
Error1006-FareNotFound |
کلاس پروازی با اسم fare درخواستی پیدا نشد. این خطا معمولا زمانی اتفاق می افتد که نسبت به آخرین availability که دریافت کرده اید نرخ پرواز تغییر کرده باشد و شما هنوز تغییرات نرخی جدید را دریافت نکرده و با نرخ قبلی درخواست خود را ارسال کرده باشید. |
|
Error1011-FlightTimeMismatch |
ساعت پرواز درخواستی شما با ساعت پروازی سیستم مطابقت ندارد |
|
Error1013-FlightLockCountLimit |
زمانی که روی یک پرواز اقدام به قفل کردن بیش از 9 عدد صندلی نمایید، این خطا برگشت داده خواهد شد. |
|
Error1021-PriceMismatch |
نرخ درخواستی شما با نرخ سیستم مطابقت ندارد. این خطا معمولا زمانی اتفاق می افتد که کمیسیون داده شده به کاربر شما توسط تامین کننده تغییر کرده باشد و شما آخرین تغییرات در بخش availability دریافت نکرده باشید و همچنان با نرخ قبلی درخواست خود را ارسال نمایید. |
|
Error1022-IpIsNotTrusted |
آی پی شما در سایت تامین کننده تراست نشده است. جهت تراست کردن آی پی با پشتیبانی سپهر تماس حاصل نمایید. |
|
Error1023-InvalidCredential |
نام کاربری یا رمز عبور اشتباه می باشد. |
|
Error1024-ForbiddenIp |
آی پی شما توسط تامین کننده مسدود شده است. جهت پیگیری موضوع با تامین کننده تماس بگیرید. |
|
Error1025-FlightIsClosed |
زمانی که یک پرواز وضعیت Ontime نداشته باشد (مثلا Close شده باشد) و شما اقدام به رزرو روی آن نمایید، این خطا را دریافت خواهید کرد. |
|
Exception |
خطای نامشخص. جهت دریافت اطلاعات بیشتر باید به ErrorMessage داخل json برگشتی مراجعه نمود. |