مستندات وب سرویس

استرداد

Download Markdown for LLM

متد DoRefund

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

  • حالت اول حالتی است که فرایند استرداد نیاز به پیگیری خاصی از سمت تامین کننده ندارد و تامین کننده بلافاصله رزرو را استرداد خواهد کرد. در این حالت مبلغی عودتی همان لحظه در حساب بستانکاری شما منظور شده و سند مالی صادر خواهد شد. همچنین در این حالت بعد از فراخوانی متد DoRefund هیچ کد پیگیری (Tracking Code) برگشت داده نمی شود. که بدین معنی است استرداد انجام شده و نیاز به پیگیری های بعدی وجود ندارد. تمامی درخواست های استرداد به "دلایل شخصی مسافر" غیر از NoShow که نیاز به پیگیری با سیستم فرودگاهی دارد، باعث استرداد بلافاصله رزرو خواهند شد.

  • حالت دوم حالتی است که فرایند استرداد نیاز به دخالت انسان و بررسی اطلاعات توسط تامین کننده دارد. در این حالت بعد از فراخوانی متد DoRefund سیستم یک کد پیگیری (Tracking Code) برگشت می دهد که شما بعدا با فراخوانی متد GetStatus می توانید از وضعیت درخواست خود اطلاع پیدا نمایید. معمولاً درخواست‌های استرداد به دلیل «تغییر برنامه پروازی توسط ایرلاین» و همچنین درخواست‌هایی که پس از پرواز ثبت می‌شوند و مشمول جریمه NoShow هستند، ممکن است نیازمند بررسی توسط تأمین‌کننده باشند و در نتیجه، با یک کد پیگیری (Tracking Code) برگردانده شوند. با این حال، بسته به شرایط درخواست، ممکن است استرداد به‌صورت آنی انجام شود و نیازی به پیگیری با استفاده از کد پیگیری نباشد. در صورت وجود Tracking Code، عودت دادن مبلغ به حساب بستانکاری شما بعد از تایید درخواست توسط تامین کننده اتفاق خواهد افتاد. بنابراین در صورت وجود Tracking Code در جواب متد DoRefund، شما نیاز دارید که این کد را در جایی ذخیره نموده و یک Background Job را شروع نمایید تا در فواصل زمانی (مثلا هر نیم ساعت یکبار) با فراخوانی متد GetStatus وضعیت درخواست را بررسی نماید.


API Endpoint

POST https://{SupplierWebsiteUrl}/api/Partners/Flight/Refund/V3/DoRefund

Request Parameters

  • Credential

    Complex type

    required

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

    + نمایش ویژگی‌های زیرمجموعه

    • Credential.Username

      string

      required

      نام کاربری

    • Credential.Password

      string

      required

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

  • Pnr

    string

    required

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

  • SegmentList

    List(Segment)

    required

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

    + نمایش ویژگی‌های زیرمجموعه

    • SegmentList.TicketNumber

      string

      required

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

      این همان شماره بلیتی است که هنگام رزرو، در فیلد LocalTicketNumber در response متد Book دریافت کرده‌اید.

    • SegmentList.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 را ارسال کرده باشید، نیاز هست که اسم فایل را هم توسط این فیلد ارسال نمایید.


Sample Request

نمونه Request به دلیل "دلایل شخصی مسافر"

curl -X POST https://SepehrApiTest.ir/api/Partners/Flight/Refund/V3/DoRefund \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "Accept: application/json" \
  -H "Accept-Encoding: gzip, deflate" \
  -d '{
  "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 به دلیل "تغییر برنامه پروازی توسط ایرلاین"

curl -X POST https://SepehrApiTest.ir/api/Partners/Flight/Refund/V3/DoRefund \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "Accept: application/json" \
  -H "Accept-Encoding: gzip, deflate" \
  -d '{
  "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 Parameters

  • TrackingCode

    nullable GUID

    در استردادهایی که به دلیل "تغییر برنامه پروازی توسط ایرلاین" باشند یا درخواست هایی که بعد از پرواز بوده و منجر به NoShow گردند، این فیلد کد پیگیری که بعدا توسط متد GetStatus می توانید وضعیت درخواست خود را بررسی نمایید را بر میگرداند. در سایر حالت ها – که درخواست شما منجر به استرداد آنی رزرو شده است – مقدار این فیلد خالی خواهد بود.


Sample Response

نمونه Response به دلیل "دلایل شخصی مسافر"

{
  "TrackingCode": null
}

نمونه Response به دلیل "تغییر برنامه پروازی توسط ایرلاین"

{
  "TrackingCode": "F858052A-8850-4B92-B21E-FBFCC6114A00"
}

Response common exceptions

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

ExceptionType توضیح خطا
Error1008-PenaltyIsNotDefinedException جریمه توسط تامین کننده تعریف نشده است و رزرو را فقط به صورت تلفنی می توان کنسل نمود
Error1009-PenaltyMismatchException مبلغ جریمه ارسال شده با جریمه تعریف شده در سیستم مطابقت ندارد.
Exception خطای نامشخص. جهت دریافت اطلاعات بیشتر باید به ErrorMessage داخل json برگشتی مراجعه نمود.