Параметры запроса#
Детальное описание параметров для запроса /avia/ticket_refund_calculation.
Обязательные параметры#
| Параметр | Тип | Описание |
|---|---|---|
bookingId | guid | Идентификатор бронирования (формат UUID) |
ticketNumber | string | Номер билета для расчёта возврата в формате {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: Расчет перед возвратом#
Действия:
- Выполнить запрос
/avia/ticket_refund_calculation - Получить детализацию: сумму возврата, штрафы, тарифы, сборы
- Выполнить фактический возврат через
/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: Проверка возможности возврата#
Действия:
- Выполнить запрос расчета возврата
- Если получен успешный ответ - возврат возможен
- Если получена ошибка
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 |
Связанные операции#
- Возврат билета - фактическое оформление возврата с указанием суммы
- Информация о билете - проверка статуса билета перед возвратом
- Расчёт обмена - альтернатива возврату через обмен