Коды ошибок
Ошибки бывают трёх видов: ошибки аутентификации приходят с HTTP 401, ошибки бизнес-логики — внутри ответа HTTP 200 с success: false, а ошибки передачи бронирования — в BookingPushRS.Error. На этой странице перечислены все коды.
Ошибки аутентификации#
| HTTP | Ответ | Причина |
|---|---|---|
| 401 | {"success": false, "error": "Authentication required"} | Токен отсутствует, неизвестен или имеет неверный формат Bearer. |
| 200 | message: partner_is_not_found | Вход: пара ключей не совпала. |
| 200 | message: hotel_is_not_found | Вход: не найден отель по hotelSeoUrl. |
| 200 | message: hotel_permission_is_not_found | Вход: у партнёра нет доступа к отелю. |
Коды message#
Текстовые коды в snake_case, возвращаются вместе с success: false.
| message | Эндпоинт | Описание |
|---|---|---|
hotel_id_is_not_found | Большинство | Не передан hotelID. |
start_date_is_not_found / end_date_is_not_found | Доступность | Не передан параметр даты. |
online_cupon_is_not_found | Купон | Код неизвестен, неактивен, истёк или недоступен. |
mail_host_is_not_found | Настройки почты | Для онлайн-канала не настроен SMTP. |
hotel_company_info_could_not_found | Данные виртуального POS | Для отеля не настроен платёжный провайдер. |
bank_info_is_not_found | Оплата (тип 3) | Нет банковского счёта, включённого для онлайн-продаж. |
required_input_info_not_submitted | Оплата (тип 10) | Не передано обязательное поле; какие именно — перечислено в errors[]. |
country_info_sent_incorrectly | Оплата (тип 10) | countryID отсутствует в списке стран. |
there_is_missing_info_in_the_shopping_cart | Оплата (тип 10) | В элементе корзины нет id, name, piece или price; errors[] указывает на этот элемент. |
Коды ошибок списка номеров#
Список номеров (POST /external/online/roomType) возвращает числовой errorCode и понятный человеку errorMessage. Сообщение переводится в зависимости от параметра language, поэтому в коде опирайтесь на errorCode.
| errorCode | Значение | Что делать |
|---|---|---|
10001 | Отель не найден | Проверьте hotelID. |
10002 | Не передан параметр (hotelID, startDate, endDate, adultCount) | Передайте обязательные поля. |
10003 | Отель закрыт для онлайн-продаж | Отель должен включить онлайн-канал в панели управления. |
10004 | Нет типов номеров, открытых для каналов | Отель должен открыть типы номеров для онлайн-продажи. |
10022 | Неверные параметры | Заезд сегодня или позже, выезд после заезда, не более 30 ночей, 1–40 взрослых, 0–10 детей. |
20001 | Недостаточно мест для взрослых | Предложите другие даты или другое количество гостей. |
20002 | Недостаточно мест для детей | Не осталось номеров, вмещающих детей. |
20003 / 20004 | Недостаточно мест для взрослых и детей | Общая вместимость не покрывает запрос. |
Если свободные места есть, но конкретный тип номера продать нельзя, его roomCount равен 0, а причина указана в roomRestrictionMessage: closed_to_checkin, closed_to_checkout, passive_sales, minimum_stay, maximum_stay, closed_to_arrival, price_not_found.
Ошибки передачи бронирования#
Вместо Success: true объект BookingPushRS содержит поле Error:
{
"BookingPushRS": {
"Error": "Could not register.",
"BookingConfirmNumbers": [
{
"confirmTime": 1755500000,
"bookingID": 0,
"bookingType": "Book",
"HMS_ID": null
}
]
}
}| Error | Код | Причина |
|---|---|---|
| No available data could be found. | 01 | Тело пустое или JSON не удалось разобрать; нет Bookings[0].hotelID. |
| Hotel registration not found on HMS. | 02 | Отель не подключён к онлайн-каналу, или канал неактивен. |
| Could not register. | — | Ошибка при сохранении (неверный ID типа номера или типа питания, несогласованные даты). |
| Failed to parse information. | — | В структуре нет ожидаемых полей. |
Рекомендации по повторным попыткам#
- 401: выполните вход ещё раз и повторите запрос.
- 500 и сетевые ошибки: до 3 попыток с интервалами 1 с, 2 с, 4 с. При повторной передаче бронирования используйте тот же
ID:Bookс уже существующим кодом обновляет запись, а не создаёт дубликат. - success: false: не повторяйте запрос; исправьте параметр или предложите гостю альтернативу.
- В обращениях в поддержку прикладывайте полный запрос (скрыв секреты и данные карт), ответ и время.