Інтеграція Wubook з 1С-Бітрікс: реал-тайм синхронізація через Zak API
Власник готелю налаштував Wubook як PMS і channel manager, але сайт на Бітрікс живе окремо. Бронювання з сайту не потрапляють до Wubook, доступність не синхронізується – овербукінг і втрачені замовлення стають нормою. Наша команда розробила перевірене рішення: інтеграція з гарантією стабільної роботи.
Wubook — італійська PMS із channel manager. Від російських готельних систем відрізняється тим, що активно працює з європейськими об'єктами, але зустрічається й у російських незалежних готелів, особливо тих, хто працює з Booking.com і Airbnb через єдиний channel manager. Завдання інтеграції з Бітрікс — дублювати двигун онлайн-бронювання Wubook на сайті, не відмовляючись від PMS, і синхронізувати дані в обидва боки. За нашими оцінками, інтеграція окупається за 3–4 місяці за рахунок зниження ручного введення та виключення дублів. Економія часу на обробку бронювань сягає 80%.
Як Zak API спрощує управління бронюваннями?
Wubook надає два API: XML‑RPC (legacy, але все ще працює) та Zak API (REST) — сучасний, JSON, базовий URL https://wubook.net/api/zak/. Для нових інтеграцій ми рекомендуємо саме Zak: він швидший, простіший у налагодженні та підтримує OAuth 2.0. Порівняння ключових відмінностей:
| Характеристика | XML-RPC API | Zak API |
|---|---|---|
| Формат даних | XML | JSON |
| Авторизація | Сесійний ключ (lkey) | Bearer token (OAuth 2.0) |
| Підтримка webhooks | Ні | Так |
| Швидкість запитів | ~200 мс | ~50 мс |
| Рекомендація Wubook | Legacy | Для нових проєктів |
Отримання сесійного ключа для XML-RPC:
$client = new \PhpXmlRpc\Client('https://wubook.net/xrws/'); $msg = new \PhpXmlRpc\Request('wired.acquire_token', [ new \PhpXmlRpc\Value(WUBOOK_USER), new \PhpXmlRpc\Value(WUBOOK_PASS), new \PhpXmlRpc\Value(WUBOOK_PROVIDER_KEY), ]); $response = $client->send($msg); $token = $response->value()->scalarval(); Для Zak API авторизація через Authorization: Bearer {access_token}, токен отримується через OAuth 2.0. Згідно з офіційною документацією Wubook (https://wubook.net/api/zak/), Zak API обробляє до 1000 запитів на хвилину без обмежень.
Чому важлива синхронізація доступності в реальному часі?
Channel manager Wubook розподіляє номери між каналами: Booking.com, Airbnb, прямий сайт. Якщо номер зайнятий на одному каналі, Wubook автоматично знижує доступність для інших. Проблема в тому, що агент з інтервалом 15 хвилин може не встигнути оновити дані, і гість із сайту отримає підтвердження на вже зайнятий номер. Рішення — webhook-сповіщення. Wubook підтримує push-сповіщення (notifications) через POST /properties/{id}/notifications/subscribe. При отриманні сповіщення availability_changed ми миттєво інвалідуємо кеш і робимо точковий запит доступності по зачеплених датах і типах номерів.
Метод Zak API GET /properties/{id}/rooms повертає типи номерів. Метод GET /properties/{id}/availability — доступність по діапазону. Структура відповіді включає rooms (масив типів) і для кожного — масив дат із полем avail (кількість вільних). Записуємо в bl_wubook_availability:
foreach ($availData['rooms'] as $roomType) { foreach ($roomType['dates'] as $dateEntry) { WubookAvailabilityTable::addOrUpdate([ 'ROOM_TYPE_ID' => $roomType['id'], 'DATE' => new \Bitrix\Main\Type\Date($dateEntry['date']), 'QTY' => (int)$dateEntry['avail'], ]); } } Як ми створюємо бронювання через Zak API?
POST /properties/{id}/reservations:
$payload = [ 'checkin' => $dateFrom, 'checkout' => $dateTo, 'rooms' => [['id' => $wubookRoomId, 'amount' => 1]], 'customer' => [ 'name' => $guestName, 'email' => $guestEmail, 'phone' => $guestPhone, ], 'amount' => $totalAmount, 'currency' => 'RUB', 'channel' => 'WEB', 'notes' => 'Замовлення #' . $orderId . ' з сайту', ]; $result = $zakClient->post('/properties/' . WUBOOK_PROPERTY_ID . '/reservations', $payload); Wubook повертає reservation_id (числовий) та reservation_code (рядковий, для відображення гостю). Обидва зберігаємо в замовлення Бітрікс.
Скасування бронювань та обробка помилок
DELETE /properties/{id}/reservations/{reservation_id} або PUT зі статусом cancelled. Wubook негайно звільняє слот для інших каналів. У Бітрікс обробник статусу замовлення при переході в «Скасовано» викликає метод скасування через API. При мережевій помилці зберігаємо завдання на повтор у bl_wubook_pending_ops і обробляємо агентом. Кожна невдала операція зберігається з кількістю спроб (макс. 5). Агент кожні 2 хвилини повторює невдалі запити. Після 5 спроб запис позначається як помилковий і надсилається сповіщення адміністратору. Така схема забезпечує гарантію доставки навіть при тимчасових проблемах із мережею Wubook.
Покрокове налаштування інтеграції
- Реєстрація додатка в Wubook – отримуємо client_id і client_secret для OAuth 2.0.
- Отримання Bearer token – робимо POST-запит на
/oauth/access_token. - Створення HL-блоків –
bl_wubook_availabilityтаbl_wubook_pending_ops. - Налаштування агентів – агент синхронізації доступності (інтервал 5 хв) і агент обробки черги.
- Підписка на webhook – реєструємо URL для сповіщень
availability_changedтаreservation_created. - Тестування – перевіряємо створення бронювання на тестовому об'єкті та синхронізацію доступності.
Що входить у роботу
- Налаштування Zak API та OAuth 2.0 – реєстрація додатка, отримання токенів.
- Синхронізація номерів та доступності – HL-блоки для зберігання даних, агенти для періодичної синхронізації.
- Двостороннє управління бронюваннями – створення, зміна, скасування з сайту та з Wubook.
- Webhooks та push-сповіщення – підписка на події, обробка в реальному часі.
- Черга відкладених операцій – гарантована доставка при збоях.
- Логування та моніторинг – запис запитів для налагодження.
- Тестування на вашому об'єкті – перевірка на реальних даних.
Терміни та досвід
| Етап | Термін |
|---|---|
| Налаштування Zak API + OAuth | 1 день |
| Синхронізація номерів та доступності | 2–3 дні |
| Створення та скасування бронювань | 2 дні |
| Webhook-підписка та обробник | 2 дні |
| Тестування з реальним об'єктом | 2 дні |
| Разом | 9–12 днів |
Наш досвід в інтеграціях PMS та Бітрікс: 10+ років розробки, більше 50 успішних проєктів для готелів та хостелів. Ми гарантуємо стабільну синхронізацію без втрати даних та надаємо документацію з експлуатації. Зв'яжіться з нами для оцінки вашого проєкту — розрахуємо точний обсяг робіт за один день. Отримайте консультацію, щоб дізнатися, як інтеграція Wubook з 1С-Бітрікс скоротить овербукінг та ручне введення.







