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

Овербукінг через ручне перенесення бронювань — класичний сценарій втрати виручки для готелю. За нашою статистикою, до 15% бронювань втрачаються через затримки або помилки при подвійному введенні. Менеджер приймає заявку через сайт на Бітрікс, вручну заносить бронювання в Bnovo, потім вручну оновлює
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Інтеграція 1С-Бітрікс з системою бронювання Bnovo
Середній
~1-2 тижні

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    996
  • 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
    735
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    773
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1134

Овербукінг через ручне перенесення бронювань — класичний сценарій втрати виручки для готелю. За нашою статистикою, до 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 днів

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