Интеграция 1С-Битрикс с системой бронирования Shelter

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с системой бронирования Shelter
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Интеграция 1С-Битрикс с системой бронирования Shelter

Shelter — отечественная PMS для хостелов, мини-отелей и апарт-комплексов. Аудитория — небольшие объекты, которым дорого внедрять тяжёлые PMS, но нужна нормальная автоматизация. Стандартная проблема: сайт на Битрикс работает сам по себе, Shelter — сам по себе. Менеджер дважды вводит данные гостя, не видит сводной загрузки по каналам и узнаёт об отмене из Shelter только когда случайно открывает вкладку.

API Shelter

Shelter предоставляет REST API. Базовый URL: https://api.shelter-pms.ru/v2/. Авторизация — Bearer-токен в заголовке. Ключевые эндпоинты:

  • GET /rooms — список номеров с типами
  • GET /availability — доступность по диапазону дат
  • GET /tariffs — тарифные планы
  • POST /bookings — создание брони
  • PUT /bookings/{id} — изменение брони
  • GET /bookings/{id} — статус брони

Лимит запросов: 120 в минуту. При синхронизации крупного объекта (50+ номеров) это нужно учитывать — пакетные запросы предпочтительнее одиночных.

Синхронизация номерного фонда

При первом запуске (или по требованию) загружаем полный справочник номеров из Shelter и создаём соответствующие элементы инфоблока в Битрикс. Маппинг хранится в таблице bl_shelter_room_map:

CREATE TABLE bl_shelter_room_map (
    bitrix_element_id INT NOT NULL,
    shelter_room_id   VARCHAR(64) NOT NULL,
    room_type         VARCHAR(64),
    synced_at         TIMESTAMP DEFAULT NOW(),
    PRIMARY KEY (bitrix_element_id)
);

Это позволяет при синхронизации доступности обращаться к Shelter по shelter_room_id, а на сайте показывать данные через стандартный инфоблок Битрикс.

Получение доступности

Агент запрашивает GET /availability?date_from=YYYY-MM-DD&date_to=YYYY-MM-DD раз в 15 минут. Ответ — матрица «дата × тип номера × количество свободных мест».

function SyncShelterAvailability(): string
{
    $client = new ShelterApiClient(SHELTER_TOKEN);
    $dateFrom = (new DateTime())->format('Y-m-d');
    $dateTo = (new DateTime('+90 days'))->format('Y-m-d');

    $data = $client->get('/availability', [
        'date_from' => $dateFrom,
        'date_to'   => $dateTo,
    ]);

    foreach ($data['availability'] as $row) {
        \Bitrix\Main\Application::getConnection()->queryExecute(
            "INSERT INTO bl_shelter_availability (room_type_id, date, qty)
             VALUES (?, ?, ?)
             ON CONFLICT (room_type_id, date) DO UPDATE SET qty = EXCLUDED.qty, synced_at = NOW()",
            [$row['room_type_id'], $row['date'], $row['available']]
        );
    }

    return __FUNCTION__ . '();';
}

Создание и отмена броней

При подтверждении оплаты в Битрикс отправляем бронь в Shelter. Shelter возвращает booking_id, который сохраняем в UF-поле заказа UF_SHELTER_BOOKING_ID.

При отмене заказа в Битрикс (событие OnSaleOrderCanceled или смена статуса через обработчик) делаем запрос PUT /bookings/{id} с полем status: cancelled. Если Shelter API недоступен в момент отмены — ставим задачу в очередь агента с повторными попытками.

Webhooks из Shelter

Shelter отправляет уведомления при изменении статуса брони в PMS (например, менеджер отменил бронь прямо в Shelter, минуя сайт). Настройка webhook — в разделе «Настройки → Интеграции» Shelter.

Обработчик верифицирует подпись (X-Shelter-Signature), определяет тип события и обновляет заказ в Битрикс. Критичное событие — booking.cancelled: нужно освободить дату в локальном кэше и уведомить гостя по email через \Bitrix\Main\Mail\Event::send.

Передача гостевой информации

Shelter хранит профили гостей. При создании брони через сайт проверяем, есть ли гость с таким email в Shelter (GET /guests?email=...). Если есть — передаём guest_id. Если нет — Shelter создаёт профиль автоматически. Это упрощает работу ресепшн при повторных визитах: вся история гостя видна прямо в PMS.

Сроки

Этап Срок
API-клиент и маппинг номеров 2 дня
Синхронизация доступности 2 дня
Создание/отмена броней 2 дня
Обработчик webhooks 1 день
Тестирование 2 дня
Итого 9–11 дней