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

required

نام کاربری

Password

string

required

رمز عبور به صورت MD5 شده

DepartureSegment

Complex type

required

اطلاعات مربوط به پرواز رفت که می خواهید قفل روی آن انجام شود.

FlightNumber

string

شماره پرواز

FlightDate

string

زمان پرواز با فرمت yyyy-MM-dd HH:mm به صورت میلادی.

در صورتی که ساعت پروازی ارسالی از سمت شما با ساعت پروازی سیستم یکی نباشد، درخواست شما reject خواهد شد. این موضوع در مواردی که ساعت پرواز سیستم توسط تامین کننده تغییر کرده است ولی cache شما هنوز ساعت پرواز جدید را نگرفته است کمک خواهد که اشتباها با ساعت اشتباه برای مسافر رزرو را انجام ندهید.

OriginIataCode

string

کد یاتا فرودگاه مبدا

DestinationIataCode

string

کد یاتا فرودگاه مقصد

FareName

string

نام Fare یا در واقع همان کلاس پروازی که می خواهید رزرو روی آن انجام شود.

ReturningSegment

Complex type

required

اطلاعات مربوط به پرواز برگشت که می خواهید قفل روی آن انجام شود.

ساختار آن کاملا شبیه DepartureSegment می باشد.

AdultCount

number

required

تعداد مسافر بزرگسالی که می خواهید برای آنها ظرفیت و قیمت را قفل نمایید.

ChildCount

number

required

تعداد مسافر کودک که می خواهید برای آنها ظرفیت و قیمت را قفل نمایید.

InfantCount

number

required

تعداد مسافر نوزاد که می خواهید برای آنها ظرفیت و قیمت را قفل نمایید.

TotalPayable

decimal

required

مبلغ خالص کل رزرو.

برای جلوگیری از خطاهای احتمالی ما در هنگام رزرو با دریافت این فیلد check price انجام می دهیم، بدین شکل که اگر مبلغ ارسالی از سمت شما با مبلغ سیستم یکی نباشد، درخواست شما reject خواهد شد.

این فیلد مجموع فیلد Payable که در مراحل availability دریافت نموده اید می باشد.

Sample Request
{
  "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 دقیقه را به ازای هر مسافر در نظر بگیرد.

Sample Response
{
  "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 برگشتی مراجعه نمود.