Параметры запроса#

Детальное описание параметров для запроса /avia/ticket_refund_calculation.

Обязательные параметры#

ПараметрТипОписание
bookingIdguidИдентификатор бронирования (формат UUID)
ticketNumberstringНомер билета для расчёта возврата в формате {vendor}-{number} (например, 555-6170036806)

Пример запроса#

1curl -X POST https://test.travel-api.ru/avia/ticket_refund_calculation \
2  -H "Authorization: Bearer YOUR_TOKEN" \
3  -H "Content-Type: application/json" \
4  -d '{
5    "bookingId": "019a0b29-8fc8-703a-9845-50c7ce2b1322",
6    "ticketNumber": "555-6170036806"
7  }'
 1var request = new
 2{
 3    bookingId = "019a0b29-8fc8-703a-9845-50c7ce2b1322",
 4    ticketNumber = "555-6170036806"
 5};
 6
 7var response = await httpClient.PostAsJsonAsync(
 8    "https://test.travel-api.ru/avia/ticket_refund_calculation",
 9    request
10);
11
12if (response.IsSuccessStatusCode)
13{
14    var result = await response.Content.ReadFromJsonAsync<RefundCalculationResponse>();
15
16    if (result?.Error == null)
17    {
18        Console.WriteLine($"К возврату: {result.ForRefund.Value} {result.ForRefund.CurrencyCode}");
19        Console.WriteLine($"Штраф: {result.RefundDetails.Penalty.Value} {result.RefundDetails.Penalty.CurrencyCode}");
20    }
21}

Сценарии использования#

Сценарий 1: Расчет перед возвратом#

Действия:

  1. Выполнить запрос /avia/ticket_refund_calculation
  2. Получить детализацию: сумму возврата, штрафы, тарифы, сборы
  3. Выполнить фактический возврат через /avia/ticket_refund

Важно: Значение forRefund из ответа должно быть передано в запрос возврата без изменений.

sequenceDiagram
    participant Client
    participant API

    Client->>API: POST /avia/ticket_refund_calculation<br/>{bookingId, ticketNumber}
    API-->>Client: forRefund, penalty, детализация

    Client->>API: POST /avia/ticket_refund<br/>{bookingId, ticketNumber, forRefund}
    API-->>Client: {}

Сценарий 2: Проверка возможности возврата#

Действия:

  1. Выполнить запрос расчета возврата
  2. Если получен успешный ответ - возврат возможен
  3. Если получена ошибка REFUND_NOT_ALLOWED - возврат запрещен тарифом

Особенность: Запрос также служит для проверки разрешенности возврата.

sequenceDiagram
    participant Client
    participant API

    Client->>API: POST /avia/ticket_refund_calculation<br/>{bookingId, ticketNumber}

    alt Возврат разрешен
        API-->>Client: HTTP 200<br/>forRefund, penalty, детализация
    else Возврат запрещен
        API-->>Client: HTTP 200<br/>{error: REFUND_NOT_ALLOWED}
    end

Важные моменты#

Обязательность расчета#

Всегда выполняйте расчет перед фактическим возвратом через /avia/ticket_refund:

  • Клиент должен знать точную сумму возврата
  • Необходимо получить согласие клиента на условия возврата
  • Значение forRefund из расчета требуется для запроса возврата

Использование forRefund#

Значение forRefund из ответа должно быть передано в запрос /avia/ticket_refund без изменений. Это гарантирует корректность суммы возврата.

Формула расчета#

forRefund = fare + taxes.total - penalty - невозвратные_сборы

Где:

  • fare - стоимость тарифа
  • taxes.total - возвратные сборы и таксы
  • penalty - штраф за возврат согласно правилам тарифа
  • невозвратные_сборы - сборы, которые не возвращаются

Типичные ошибки#

Код ошибкиПричинаРешение
TICKET_NOT_FOUNDБилет не найденПроверьте bookingId и ticketNumber
REFUND_NOT_ALLOWEDВозврат запрещен тарифомВозврат невозможен по правилам тарифа
TICKET_ALREADY_REFUNDEDБилет уже возвращенОперация уже выполнена ранее
BOOKING_NOT_FOUNDБронирование не найденоПроверьте bookingId

Связанные операции#