استرداد
متد DoRefund
این متد برای استراد یک رزرو استفاده می شود.
با فراخوانی این متد در جواب دو حالت ممکن است اتفاق بیافتد:
- حالت اول حالتی است که فرایند استرداد نیاز به پیگیری خاصی از سمت تامین کننده ندارد و تامین کننده بلافاصله رزرو را استرداد خواهد کرد. در این حالت مبلغی عودتی همان لحظه در حساب بستانکاری شما منظور شده و سند مالی صادر خواهد شد. همچنین در این حالت بعد از فراخوانی متد DoRefund هیچ کد پیگیری (Tracking Code) برگشت داده نمی شود. که بدین معنی است استرداد انجام شده و نیاز به پیگیری های بعدی وجود ندارد.
تمامی درخواست های استرداد به “دلایل شخصی مسافر” غیر از NoShow که نیاز به پیگیری با سیستم فرودگاهی دارد، باعث استرداد بلافاصله رزرو خواهند شد. - حالت دوم حالتی است که فرایند استرداد نیاز به دخالت انسان و بررسی اطلاعات توسط تامین کننده دارد.
در این حالت بعد از فراخوانی متد DoRefund سیستم یک کد پیگیری (Tracking Code) برگشت می دهد که شما بعدا با فراخوانی متد GetStatus می توانید از وضعیت درخواست خود اطلاع پیدا نمایید.
تمامی درخواست های استرداد به دلیل “تغییر برنامه پروازی توسط ایرلاین” و همچنین زمانی که استرداد بعد از پرواز بوده و باعث جریمه NoShow شود، باعث ایجاد این حالت می شوند.
در این حالت عودت دادن مبلغ به حساب بستانکاری شما بعد از تایید درخواست توسط تامین کننده اتفاق خواهد افتاد.
بنابراین در صورت وجود Tracking Code در جواب متد DoRefund، شما نیاز دارید که این کد را در جایی ذخیره نموده و یک Background Job را شروع نمایید تا در فواصل زمانی (مثلا هر نیم ساعت یکبار) با فراخوانی متد GetStatus وضعیت درخواست را بررسی نماید.
API Endpoint
https://{SupplierWebsiteUrl}/api/Partners/Flight/Refund/V3/DoRefund post
Request Parameters
نمونه کلاس Request به زبان سی شارپ در پروژه Partners.Contracts (دانلود) در پوشه زیر موجود است:
\Flight\Refund\V3\DoRefund\RequestModel
Credential
Complex type
اطلاعات مربوط به نام کاربری و رمز عبور
Username
string
نام کاربری
Password
string
رمز عبور به صورت MD5 شده
Pnr
string
رفرنس رزروی که میخواهید یک یا همه ی مسافران آن را استرداد نمایید
SegmentList
List(Segment)
لیست سگمنت ها جهت استرداد
TicketNumber
string
شماره بلیط سگمنتی که قصد استرداد آن را دارید.
PenaltyAmountThatPassengerShouldPay
number
مقدار مبلغ جریمه بابت این سگمنت.
بعد از انجام شدن استرداد،این مبلغ از مبلغ کل رزرو کم شده و مابقی به حساب بستانکاری شما منظور خواهد شد.
در صورت مغایر بودن مبلغ جریمه ارسالی شما با مبلغ جریمه سیستم، سپهر درخواست را reject خواهد کرد.
یکی از دلایل به وجود آمدن مغایرت در مبلغ جریمه می تواند این باشد که مسافر بعد از مشاهده جریمه ها در سیستم شما، مدت زمان زیادی صبر کرده تا درخواست استرداد را ارسال نماید و در این مدت، مبلغ جریمه بالاتری به رزرو تعلق گرفته باشد.
مقدار این فیلد با فراخوانی متد GetPenalty بدست آمده و پس از نمایش آن به مسافر، شما می بایست مبلغ جریمه را به متد DoRefund ارسال نمایید.
برای استرداد به دلیل “تغییر برنامه پروازی توسط ایرلاین” مقدار صفر را برای این فیلد ارسال نمایید.
Reason
Integer enum
دلیل استرداد. که می تواند یکی از مقادیر زیر را داشته باشد:
| 1 | دلایل شخصی مسافر | در این حالت طبق جدول جریمه های CRCN تعریف شده در سایت تامین کننده، مقدار جریمه محاسبه و استرداد انجام خواهد شد. استرداد به دلیل NoShow هم جزو دلایل شخصی مسافر محسوب می شود. |
| 2 | تغییر برنامه پروازی توسط ایرلاین | در این حالت جریمه صفر برای استرداد محاسبه خواهد شد. استرداد قطعی بعد از تایید کارشناس پرواز در سایت تامین کننده اتفاق خواهد افتاد.
دلایل زیر از مواردی هستند که “تغییر برنامه پروازی توسط ایرلاین” محسوب می شوند: |
Remarks
string
اگر نیاز به ارسال توضیحات برای تامین کننده وجود دارد، می توانید از این فیلد استفاده نمایید. معمولا استفاده از این فیلد بدین صورت می باشد که شما در زمان دریافت درخواست کنسلی از مسافر خود، یه فیلد توضیحات به مسافر نمایش می دهید و متن وارد شده را توسط این فیلد به سایت تامین کننده ارسال می نمایید.
ETicketFileContent
byte array
زمانی که علت استرداد “تغییر برنامه پرواز توسط ایرلاین” یا به عنوان مثال مواردی مانند بدی آب و هوا یا تاخیر بیش از 2 ساعت یا کلا هر علت دیگری که منجر به کنسلی بدون جریمه بشود، این متد برای ارسال تصویر بلیط یا کارت پرواز مهر شده استفاده می شود.
سیستم به گونه ای طراحی شده که در زمان refund، فقط یک فایل را قبول می کند. یعنی حتی اگر شما با استفاده از این متد چندین فایل ارسال کنید، در زمان refund فقط یکی از آنها را می توانید به عنوان فایل ضمیمه ارسال کنید. بنابراین در زمان هایی که تصاویر ارسالی از سمت مسافر شامل چند تا عکس و فایل باشد، این فایل ها باید در یک فایل ادغام شده و به سرور تامین کننده ارسال شوند.
انجام اینکار اختیاری بوده و برخی تامین کنندگان نیازی به بارگذاری فایل ندارند.
ETicketFileName
string
در صورتی که ETicketFileContent را ارسال کرده باشید، نیاز هست که اسم فایل را هم توسط این فیلد ارسال نمایید.
{
"Credential": {
"Username": "TestDev1",
"Password": "25f9e794323b453885f5181f1b624d0b"
},
"Pnr": "X362J6",
"SegmentList": [
{
"TicketNumber": "1526917",
"PenaltyAmountThatPassengerShouldPay": 800000
},
{
"TicketNumber": "1526918",
"PenaltyAmountThatPassengerShouldPay": 800000
},
{
"TicketNumber": "1526919",
"PenaltyAmountThatPassengerShouldPay": 0
}
],
"Remarks": null,
"ETicketFileContent": null,
"ETicketFileName": null,
"Reason": 1
}
{
"Credential": {
"Username": "TestDev1",
"Password": "25f9e794323b453885f5181f1b624d0b"
},
"Pnr": "V4CY87",
"SegmentList": [
{
"TicketNumber": "1526944",
"PenaltyAmountThatPassengerShouldPay": 0
},
{
"TicketNumber": "1526945",
"PenaltyAmountThatPassengerShouldPay": 0
},
{
"TicketNumber": "1526946",
"PenaltyAmountThatPassengerShouldPay": 0
}
],
"Remarks": null,
"ETicketFileContent": null,
"ETicketFileName": null,
"Reason": 2
}
Response Data
نمونه کلاس Response به زبان سی شارپ در پروژه Partners.Contracts (دانلود) در پوشه زیر موجود است:
\Flight\Refund\V3\DoRefund\ResponseModel
TrackingCode
nullable GUID
در استردادهایی که به دلیل “تغییر برنامه پروازی توسط ایرلاین” باشند یا درخواست هایی که بعد از پرواز بوده و منجر به NoShow گردند، این فیلد کد پیگیری که بعدا توسط متد GetStatus می توانید وضعیت درخواست خود را بررسی نمایید را بر میگرداند. در سایر حالت ها – که درخواست شما منجر به استرداد آنی رزرو شده است – مقدر این فیلد خالی خواهد بود.
{
"TrackingCode": null
}
{
"TrackingCode": "F858052A-8850-4B92-B21E-FBFCC6114A00"
}
Response common exceptions
در جدول زیر لیستی از خطاهایی که ممکن است بعد از فراخوانی این متد برگشت داده شود، فهرست شده است.
| ExceptionType | توضیح خطا |
|---|---|
Error1008-PenaltyIsNotDefinedException | جریمه توسط تامین کننده تعریف نشده است و رزرو را فقط به صورت تلفنی می توان کنسل نمود |
Error1009-PenaltyMismatchException | مبلغ جریمه ارسال شده با جریمه تعریف شده در سیستم مطابقت ندارد. |
Exception | خطای نامشخص. جهت دریافت اطلاعات بیشتر باید به ErrorMessage داخل json برگشتی مراجعه نمود. |