استرداد

متد 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

required

اطلاعات مربوط به نام کاربری و رمز عبور

Username

string

required

نام کاربری

Password

string

required

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

Pnr

string

required

رفرنس رزروی که میخواهید یک یا همه ی مسافران آن را استرداد نمایید

SegmentList

List(Segment)

required

لیست سگمنت ها جهت استرداد

TicketNumber

string

required

شماره بلیط سگمنتی که قصد استرداد آن را دارید.

PenaltyAmountThatPassengerShouldPay

number

required

مقدار مبلغ جریمه بابت این سگمنت.

بعد از انجام شدن استرداد،این مبلغ از مبلغ کل رزرو کم شده و مابقی به حساب بستانکاری شما منظور خواهد شد.

 

در صورت مغایر بودن مبلغ جریمه ارسالی شما با مبلغ جریمه سیستم، سپهر درخواست را reject خواهد کرد.

یکی از دلایل به وجود آمدن مغایرت در مبلغ جریمه می تواند این باشد که مسافر بعد از مشاهده جریمه ها در سیستم شما، مدت زمان زیادی صبر کرده تا درخواست استرداد را ارسال نماید و در این مدت، مبلغ جریمه بالاتری به رزرو تعلق گرفته باشد.

 

مقدار این فیلد با فراخوانی متد GetPenalty بدست آمده و پس از نمایش آن به مسافر، شما می بایست مبلغ جریمه را به متد DoRefund ارسال نمایید.

 

برای استرداد به دلیل “تغییر برنامه پروازی توسط ایرلاین” مقدار صفر را برای این فیلد ارسال نمایید.

Reason

Integer enum

required

دلیل استرداد. که می تواند یکی از مقادیر زیر را داشته باشد:

1دلایل شخصی مسافردر این حالت طبق جدول جریمه های CRCN تعریف شده در سایت تامین کننده، مقدار جریمه محاسبه و استرداد انجام خواهد شد.

استرداد به دلیل NoShow هم جزو دلایل شخصی مسافر محسوب می شود.
2تغییر برنامه پروازی توسط ایرلاین

در این حالت جریمه صفر برای استرداد محاسبه خواهد شد.

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

 

دلایل زیر از مواردی هستند که “تغییر برنامه پروازی توسط ایرلاین” محسوب می شوند:
تاخیر بیش از دو ساعت پرواز
تعجیل بیش از 90 دقیقه پرواز
ابطال پرواز از سمت ایرلاین
ابطال پرواز به دلیل بدی آب و هوا
ابطال پرواز رفت. این حالت مربوط به مواردی هست که رزرو دو طرفه بوده و لگ رفت به یکی از دلایل بالا استرداد شده است.

Remarks

string

optional

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

ETicketFileContent

byte array

optional

زمانی که علت استرداد “تغییر برنامه پرواز توسط ایرلاین” یا به عنوان مثال مواردی مانند بدی آب و هوا یا تاخیر بیش از 2 ساعت یا کلا هر علت دیگری که منجر به کنسلی بدون جریمه بشود، این متد برای ارسال تصویر بلیط یا کارت پرواز مهر شده استفاده می شود.

سیستم به گونه ای طراحی شده که در زمان refund، فقط یک فایل را قبول می کند. یعنی حتی اگر شما با استفاده از این متد چندین فایل ارسال کنید، در زمان refund فقط یکی از آنها را می توانید به عنوان فایل ضمیمه ارسال کنید. بنابراین در زمان هایی که تصاویر ارسالی از سمت مسافر شامل چند تا عکس و فایل باشد، این فایل ها باید در یک فایل ادغام شده و به سرور تامین کننده ارسال شوند.

انجام اینکار اختیاری بوده و برخی تامین کنندگان نیازی به بارگذاری فایل ندارند.

ETicketFileName

string

optional

در صورتی که ETicketFileContent را ارسال کرده باشید، نیاز هست که اسم فایل را هم توسط این فیلد ارسال نمایید.

نمونه Request به دلیل "دلایل شخصی مسافر"
{
  "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
}	
نمونه Request به دلیل "تغییر برنامه پروازی توسط ایرلاین"
{
  "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 می توانید وضعیت درخواست خود را بررسی نمایید را بر میگرداند. در سایر حالت ها – که درخواست شما منجر به استرداد آنی رزرو شده است – مقدر این فیلد خالی خواهد بود.

نمونه Response به دلیل "دلایل شخصی مسافر"
{
  "TrackingCode": null
}	
نمونه Response به دلیل "تغییر برنامه پروازی توسط ایرلاین"
{
  "TrackingCode": "F858052A-8850-4B92-B21E-FBFCC6114A00"
}	
Response common exceptions

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

ExceptionTypeتوضیح خطا

Error1008-PenaltyIsNotDefinedException

جریمه توسط تامین کننده تعریف نشده است و رزرو را فقط به صورت تلفنی می توان کنسل نمود

Error1009-PenaltyMismatchException

مبلغ جریمه ارسال شده با جریمه تعریف شده در سیستم مطابقت ندارد.

Exception

خطای نامشخص. جهت دریافت اطلاعات بیشتر باید به ErrorMessage داخل json برگشتی مراجعه نمود.