﻿---
title: "DoRefund | Refund | پرواز | مستندات وب سرویس سپهر"
---
# refund



## متد DoRefund

این متد برای استرداد یک رزرو استفاده می شود.
با فراخوانی این متد در جواب دو حالت ممکن است اتفاق بیافتد:

- حالت اول حالتی است که فرایند استرداد نیاز به پیگیری خاصی از سمت تامین کننده ندارد و تامین کننده بلافاصله رزرو را استرداد خواهد کرد. در این حالت مبلغی عودتی همان لحظه در حساب بستانکاری شما منظور شده و سند مالی صادر خواهد شد. همچنین در این حالت بعد از فراخوانی متد DoRefund هیچ کد پیگیری (Tracking Code) برگشت داده نمی شود. که بدین معنی است استرداد انجام شده و نیاز به پیگیری های بعدی وجود ندارد.
تمامی درخواست های استرداد به "دلایل شخصی مسافر" غیر از NoShow که نیاز به پیگیری با سیستم فرودگاهی دارد، باعث استرداد بلافاصله رزرو خواهند شد.

- حالت دوم حالتی است که فرایند استرداد نیاز به دخالت انسان و بررسی اطلاعات توسط تامین کننده دارد.
در این حالت بعد از فراخوانی متد DoRefund سیستم یک کد پیگیری (Tracking Code) برگشت می دهد که شما بعدا با فراخوانی متد GetStatus می توانید از وضعیت درخواست خود اطلاع پیدا نمایید.
تمامی درخواست های استرداد به دلیل "تغییر برنامه پروازی توسط ایرلاین" و همچنین زمانی که استرداد بعد از پرواز بوده و باعث جریمه NoShow شود، باعث ایجاد این حالت می شوند.
در این حالت عودت دادن مبلغ به حساب بستانکاری شما بعد از تایید درخواست توسط تامین کننده اتفاق خواهد افتاد.
بنابراین در صورت وجود Tracking Code در جواب متد DoRefund، شما نیاز دارید که این کد را در جایی ذخیره نموده و یک Background Job را شروع نمایید تا در فواصل زمانی (مثلا هر نیم ساعت یکبار) با فراخوانی متد GetStatus وضعیت درخواست را بررسی نماید.

<br>

API Endpoint

```http
POST https://{SupplierWebsiteUrl}/api/Partners/Flight/Refund/V3/DoRefund
```

<br>

## 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

    شماره بلیط سگمنتی که قصد استرداد آن را دارید.

  - `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 را ارسال کرده باشید، نیاز هست که اسم فایل را هم توسط این فیلد ارسال نمایید.

<br>

## Sample Request

نمونه Request به دلیل "دلایل شخصی مسافر"

```curl
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
}'
```

<br>

نمونه Request به دلیل "تغییر برنامه پروازی توسط ایرلاین"

```curl
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
}'
```


<br>

## Response Parameters

- `TrackingCode`

  nullable GUID

  در استردادهایی که به دلیل "تغییر برنامه پروازی توسط ایرلاین" باشند یا درخواست هایی که بعد از پرواز بوده و منجر به NoShow گردند، این فیلد کد پیگیری که بعدا توسط متد GetStatus می توانید وضعیت درخواست خود را بررسی نمایید را بر میگرداند. در سایر حالت ها – که درخواست شما منجر به استرداد آنی رزرو شده است – مقدار این فیلد خالی خواهد بود.

<br>

## Sample Response

نمونه Response به دلیل "دلایل شخصی مسافر"

```json
{
  "TrackingCode": null
}
```

نمونه Response به دلیل "تغییر برنامه پروازی توسط ایرلاین"

```json
{
  "TrackingCode": "F858052A-8850-4B92-B21E-FBFCC6114A00"
}
```

<br>

## Response common exceptions

در جدول زیر لیستی از خطاهایی که ممکن است بعد از فراخوانی این متد برگشت داده شود، فهرست شده است.

| ExceptionType | توضیح خطا |
|---|---|
| Error1008-PenaltyIsNotDefinedException | جریمه توسط تامین کننده تعریف نشده است و رزرو را فقط به صورت تلفنی می توان کنسل نمود |
| Error1009-PenaltyMismatchException | مبلغ جریمه ارسال شده با جریمه تعریف شده در سیستم مطابقت ندارد. |
| Exception | خطای نامشخص. جهت دریافت اطلاعات بیشتر باید به ErrorMessage داخل json برگشتی مراجعه نمود. |

<br>
