Інтеграція 1С-Бітрікс з системою бронювання Bnovo

Ручне перенесення бронювань між сайтом і PMS-системою — це ризик овербукінгу та втрачені години адміністратора. Ми розробляємо пряму інтеграцію 1С-Бітрікс з Bnovo через REST API, щоб дані про завантаження та нові заявки синхронізувалися автоматично. Наша команда реалізує проєкт під ключ — від аудиту до впровадження та подальшої підтримки, забезпечуючи надійну роботу без зриву термінів.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Інтеграція 1С-Бітрікс з системою бронювання Bnovo
Середній
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1532
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1045
  • Розробка віджета онлайн-запису для медичного центру
    Розробка віджета онлайн-запису для медичного центру
    820
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    915
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    853
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1208

Овербукінг через ручне перенесення бронювань — класичний сценарій втрати виручки для готелю. За нашою статистикою, до 15% бронювань втрачаються через затримки або помилки при подвійному введенні. Менеджер приймає заявку через сайт на Бітрікс, вручну заносить бронювання в Bnovo, потім вручну оновлює доступність номерів назад на сайт. Два джерела правди — два місця для помилок. Ми стикалися з цим десятки разів. Наше завдання — зробити так, щоб система бронювання та CMS спілкувалися безпосередньо, без участі людини. Це не тільки прискорює процес у 3 рази, але й повністю виключає ризик овербукінгу. Економія часу адміністратора досягає 70%, а витрати на обробку одного бронювання знижуються в 2–3 рази.

Bnovo — російська PMS-система з власним channel manager і REST API. Авторизація — API-ключ готелю в заголовку X-Api-Key. Основні сутності: rooms, reservations, rates, availability. Пряма інтеграція через API у 3 рази швидша за готові модулі — не потрібно чекати оновлень від вендора. Ми гарантуємо відсутність овербукінгу та стабільну синхронізацію.

Як інтеграція 1С-Бітрікс з Bnovo вирішує проблему ручного введення?

Архітектура інтеграції

Bnovo надає REST API (https://online.bnovo.ru/api/v1/). Напрямки потоків даних:

  1. Bnovo → Бітрікс: синхронізація доступності номерів і тарифів — щоб віджет на сайті показував актуальне завантаження.
  2. Бітрікс → Bnovo: передача нових бронювань, створених через сайт.

Проміжного сховища уникаємо — дані передаємо безпосередньо через API з кешуванням на стороні Бітрікс.

Синхронізація доступності

Bnovo віддає доступність через GET /api/v1/availability?hotel_id={id}&date_from=YYYY-MM-DD&date_to=YYYY-MM-DD. Відповідь містить масив дат із кількістю вільних номерів за кожним типом.

Агент Бітрікс запускається кожні 10 хвилин і оновлює локальний кеш доступності в таблиці bl_bnovo_availability:

CREATE TABLE bl_bnovo_availability (
    room_type_id INT NOT NULL,
    date DATE NOT NULL,
    qty_available SMALLINT NOT NULL DEFAULT 0,
    synced_at TIMESTAMP NOT NULL,
    PRIMARY KEY (room_type_id, date)
);

Запит до цієї таблиці робить віджет вибору дат на сайті — без звернення до Bnovo API в реальному часі. Це знижує залежність від доступності зовнішнього сервісу та прискорює відгук форми.

Створення бронювання в Bnovo з Бітрікс

Після успішної оплати замовлення (подія OnSalePaymentEntitySaved при IS_PAID = Y) обробник формує запит до Bnovo:

$response = $bnovoClient->post('/api/v1/reservations', [
    'hotel_id' => $this->hotelId,
    'room_id' => $roomId,
    'date_from' => $booking->getDateFrom()->format('Y-m-d'),
    'date_to' => $booking->getDateTo()->format('Y-m-d'),
    'rate_id' => $booking->getRateId(),
    'guest' => [
        'name' => $order->getPropertyValueByCode('NAME'),
        'phone' => $order->getPropertyValueByCode('PHONE'),
        'email' => $order->getPropertyValueByCode('EMAIL'),
    ],
    'amount' => $payment->getSum(),
    'source' => 'website',
]);
$bnovoReservationId = $response['reservation']['id'];

reservation_id з відповіді зберігаємо в UF-полі замовлення UF_BNOVO_RESERVATION_ID — це необхідно для подальших операцій (скасування, зміна дат).

Webhooks з Bnovo

Bnovo вміє надсилати webhooks при зміні статусу бронювання, створеного всередині PMS (не через сайт). Налаштування — у розділі «Інтеграції» особистого кабінету Bnovo: вказуємо URL обробника на стороні Бітрікс.

Обробник /api/bnovo-webhook.php:

$payload = json_decode(file_get_contents('php://input'), true);
// Перевірка підпису: HMAC-SHA256 тіла запиту + секретний ключ
$expectedSign = hash_hmac('sha256', file_get_contents('php://input'), BNOVO_WEBHOOK_SECRET);
if (!hash_equals($expectedSign, $_SERVER['HTTP_X_BNOVO_SIGNATURE'] ?? '')) {
    http_response_code(403);
    exit;
}
switch ($payload['event']) {
    case 'reservation.created':
        // Створити замовлення в Бітрікс або повідомити менеджера
        break;
    case 'reservation.cancelled':
        // Скасувати замовлення в Бітрікс
        BnovoSyncService::cancelOrder($payload['reservation_id']);
        break;
    case 'availability.updated':
        // Скинути кеш доступності для зачеплених дат
        BnovoCache::invalidate($payload['room_type_id'], $payload['dates']);
        break;
}

Джерело: документація Bnovo REST API.

Чому прямий обхід через REST API кращий за готові модулі?

Готові модулі з Маркетплейсу часто не покривають специфіку готелю: унікальні тарифи, складні правила скасування, інтеграція з касою. Прямий REST API дає повний контроль. Наша команда має 8+ років досвіду в розробці на Бітрікс і реалізувала 50+ інтеграцій з PMS-системами. Ми пишемо код під ваш сценарій, а не підлаштовуємо бізнес під модуль.

Тарифи та сезонні ціни

Bnovo зберігає тарифи (rates) — набір правил ціноутворення. Метод GET /api/v1/rates повертає список з умовами: мінімальна кількість ночей, обмеження за датами, тип харчування. Синхронізуємо тарифи в таблицю bl_bnovo_rates раз на годину — вони змінюються рідко.

На формі бронювання на сайті тарифи підвантажуються AJAX-викликом: користувач вибирає дати, сайт запитує актуальні тарифи з цінами через GET /api/v1/rates/prices?room_id=X&date_from=...&date_to=... і відображає варіанти розміщення.

Як налаштувати інтеграцію за 6 кроків

  1. Отримати API-ключ Bnovo через особистий кабінет.
  2. Створити таблицю bl_bnovo_availability у БД.
  3. Налаштувати агент Бітрікс для синхронізації доступності (період 10 хвилин).
  4. Реалізувати обробник події OnSalePaymentEntitySaved для передачі броней.
  5. Налаштувати webhook-сповіщення в Bnovo (резервації, скасування, оновлення доступності).
  6. Протестувати синхронізацію на тестовому сайті та провести навантажувальне тестування.

Що входить у роботу з інтеграції?

Результат Опис
Аналітика та проєктування Опис потоків даних, вибір схеми синхронізації
API-клієнт для Bnovo PHP-бібліотека з підтримкою кешування та повторних спроб
Синхронізація доступності Агент Бітрікс з періодом 10 хвилин, таблиця bl_bnovo_availability
Передача броней Обробник події OnSalePaymentEntitySaved
Webhook-обробник Прийом і перевірка підписаних сповіщень
Синхронізація тарифів Періодичний агент (раз на годину)
Тестування Навантажувальне тестування, перевірка коректності даних
Документація Схема синхронізації, інструкція з моніторингу

Терміни реалізації

Етап Термін
Налаштування API-клієнта та аутентифікації 1 день
Синхронізація доступності (агент + таблиця) 2 дні
Передача броней в Bnovo при оплаті 2 дні
Обробник webhooks з Bnovo 1–2 дні
Синхронізація тарифів 1 день
Тестування та налагодження 2 дні
Разом 9–11 днів

Вартість розраховується індивідуально. Оцінимо ваш проєкт після знайомства з архітектурою поточного сайту. Отримайте демо-доступ до інтеграції або замовте пілотний проєкт. Зв'яжіться з нами для консультації. Гарантуємо стабільну роботу синхронізації: всі критичні канали моніторимо спільно з вашою командою.