שילוב 1C-Bitrix ו-Bnovo: אוטומציה של הזמנות

העברה ידנית של הזמנות בין האתר למערכת ההזמנות היא מקור עיקרי להזמנות כפולות ולבקשות שאבדו. אנחנו מפתחים אינטגרציה ישירה של 1C-Bitrix עם Bnovo שמסנכרנת זמינות חדרים והזמנות בזמן אמת. הצוות שלנו מספק את הפרויקט במפתח מלא—מהאודיט ועד ליישום ולתמיכה שוטפת—כך שאתם עובדים עם מקור נתונים אחד ללא סיכון לשגיאות.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
שילוב 1C-Bitrix ו-Bnovo: אוטומציה של הזמנות
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

אובדן הזמנות עקב העברה ידנית של הזמנות הוא תרחיש קלאסי של אובדן הכנסות עבור מלונות. לפי הסטטיסטיקות שלנו, עד 15% מההזמנות אובדות עקב עיכובים או שגיאות במהלך הזנה כפולה. מנהל מקבל בקשה דרך האתר ב-Bitrix, מזין ידנית את ההזמנה ל-Bnovo, ולאחר מכן מעדכן ידנית את זמינות החדרים בחזרה לאתר. שני מקורות אמת—שני מקומות לשגיאות. נתקלנו בזה עשרות פעמים. המטרה שלנו היא לגרום למערכת ההזמנות ול-CMS לתקשר ישירות, ללא התערבות אנושית. זה לא רק מאיץ את התהליך פי 3, אלא גם מבטל לחלוטין את הסיכון לאובדן הזמנות. חיסכון בזמן הניהול מגיע ל-70%, ועלות עיבוד הזמנה אחת מופחתת פי 2–3. עבור מלון טיפוסי עם 50 הזמנות חודשיות, חיסכון בזמן הניהול מסתכם בכ-300 אירו לחודש, ומפחית עלויות ב-3,600 אירו בשנה.

האינטגרציה שלנו של bitrix bnovo מנצלת את bnovo rest api להעברת נתונים חלקה בין מערכת ה-PMS למלונות ומודול ההזמנות של bitrix באתר, ומבטיחה ש-bnovo webhooks מטפלים בעדכונים בזמן אמת.

Bnovo היא מערכת PMS למלונות עם מנהל ערוצים משלה ו-REST API. האימות מתבצע באמצעות מפתח ה-API של המלון בכותרת X-Api-Key. ישויות עיקריות: rooms, reservations, rates, availability. אינטגרציה ישירה דרך API מהירה פי 3 ממודולים מוכנים—אין צורך לחכות לעדכוני ספק. אנו מבטיחים ללא אובדן הזמנות וסנכרון יציב.

פתרון בעיית ההזנה הידנית עם אינטגרציית 1C-Bitrix ו-Bnovo

ארכיטקטורת האינטגרציה

Bnovo מספקת REST API (https://online.bnovo.ru/api/v1/). כיווני זרימת הנתונים:

  1. Bnovo → Bitrix: סנכרון זמינות חדרים ותעריפים—כך שהווידג'ט באתר מציג תפוסה עדכנית.
  2. Bitrix → Bnovo: העברת הזמנות חדשות שנוצרו דרך האתר.

אנו נמנעים מאחסון ביניים—הנתונים מועברים ישירות דרך API עם מטמון בצד של Bitrix.

סנכרון זמינות

Bnovo מחזירה זמינות דרך GET /api/v1/availability?hotel_id={id}&date_from=YYYY-MM-DD&date_to=YYYY-MM-DD. התשובה מכילה מערך של תאריכים עם מספר החדרים הפנויים לכל סוג חדר.

סוכן Bitrix רץ כל 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)
);

ווידג'ט ההזמנות המקוון באתר שואל טבלה זו—ללא קריאה ל-API של Bnovo בזמן אמת. זה מפחית תלות בזמינות השירות החיצוני ומאיץ את תגובת הטופס. זמן תגובת ה-API הוא מתחת ל-500ms בממוצע.

יצירת הזמנה ב-Bnovo מ-Bitrix

לאחר תשלום מוצלח של ההזמנה (אירוע 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) ); כאשר OnSalePaymentEntitySaved), ה-handler יוצר בקשה ל-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'];

IS_PAID = Y מהתשובה נשמר בשדה UF של ההזמנה $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']; —זה הכרחי לפעולות后续 (ביטול, שינוי תאריכים).

Webhooks מ-Bnovo

Bnovo יכולה לשלוח webhooks כאשר סטטוס של הזמנה שנוצרה בתוך ה-PMS (לא דרך האתר) משתנה. ההגדרה נמצאת בסעיף "אינטגרציות" בלוח הבקרה של Bnovo: ציינו את כתובת ה-handler בצד של Bitrix.

Handler reservation_id:

$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':
        // Создать заказ в Bitrix или уведомить менеджера
        break;
    case 'reservation.cancelled':
        // Отменить заказ в Bitrix
        BnovoSyncService::cancelOrder($payload['reservation_id']);
        break;
    case 'availability.updated':
        // Сбросить кэш доступности для затронутых дат
        BnovoCache::invalidate($payload['room_type_id'], $payload['dates']);
        break;
}

מקור: תיעוד REST API של Bnovo.

למה אינטגרציית REST API ישירה עדיפה על מודולים מוכנים?

מודולים מוכנים מה-Marketplace לרוב אינם מכסים את הפרטים הספציפיים של מלונות: תעריפים ייחודיים, כללי ביטול מורכבים, אינטגרציה עם קופות רושמות. REST API ישיר נותן שליטה מלאה. לצוות שלנו יש 8+ שנות ניסיון באוטומציה למלונות ובפרויקטים של 1c-bitrix למלונות, ויישמנו 50+ אינטגרציות עם מערכות PMS. אנו כותבים קוד עבור התרחיש שלכם, לא מתאימים את העסק שלכם למודול. העברת נתונים מאובטחת של bitrix מבטיחה עקביות בכל הערוצים.

תעריפים ומחירים עונתיים

Bnovo מאחסנת תעריפים—קבוצות כללי תמחור. השיטה UF_BNOVO_RESERVATION_ID מחזירה רשימה עם תנאים: מינימום לילות, הגבלות תאריכים, סוג ארוחה. אנו מסנכרנים תעריפים לטבלת /api/bnovo-webhook.php פעם בשעה—הם משתנים לעיתים רחוקות.

בטופס ההזמנה באתר, התעריפים נטענים דרך AJAX: המשתמש בוחר תאריכים, האתר מבקש תעריפים עדכניים עם מחירים דרך $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': // Создать заказ в Bitrix или уведомить менеджера break; case 'reservation.cancelled': // Отменить заказ в Bitrix BnovoSyncService::cancelOrder($payload['reservation_id']); break; case 'availability.updated': // Сбросить кэш доступности для затронутых дат BnovoCache::invalidate($payload['room_type_id'], $payload['dates']); break; } ומציג אפשרויות לינה.

איך להגדיר אינטגרציה ב-6 שלבים

  1. קבלו מפתח API מ-Bnovo דרך לוח הבקרה.
  2. צרו את טבלת rates במסד הנתונים.
  3. הגדירו סוכן Bitrix לסנכרון זמינות (תקופה של 10 דקות).
  4. יישמו את handler האירוע GET /api/v1/rates להעברת הזמנות.
  5. הגדירו התראות webhook ב-Bnovo (הזמנות, ביטולים, עדכוני זמינות).
  6. בדקו סנכרון באתר staging ובצעו בדיקות עומס.

מה כלול בעבודת האינטגרציה?

תוצר תיאור
אנליטיקה ועיצוב תיאור זרימות נתונים, בחירת סכמת סנכרון
לקוח API של Bnovo ספריית PHP עם תמיכה במטמון וניסיונות חוזרים
סנכרון זמינות סוכן Bitrix עם תקופה של 10 דקות, טבלת bl_bnovo_rates
העברת הזמנות handler אירוע GET /api/v1/rates/prices?room_id=X&date_from=...&date_to=...
handler webhook קבלה ואימות של התראות חתומות
סנכרון תעריפים סוכן תקופתי (פעם בשעה)
בדיקות בדיקות עומס, בדיקות תקינות נתונים
תיעוד סכמת סנכרון, הוראות ניטור

לוח זמנים לביצוע

שלב משך
הגדרת לקוח API ואימות יום אחד
סנכרון זמינות (סוכן + טבלה) יומיים
העברת הזמנות ל-Bnovo בעת תשלום יומיים
handler webhook מ-Bnovo 1–2 ימים
סנכרון תעריפים יום אחד
בדיקות וניפוי שגיאות יומיים
סה"כ 9–11 ימים

העלות מחושבת באופן אישי. אנו נעריך את הפרויקט שלכם לאחר היכרות עם הארכיטקטורה הנוכחית של האתר שלכם. קבלו גישת הדגמה לאינטגרציה או הזמינו פרויקט פיילוט. צרו קשר לייעוץ. אנו מבטיחים פעולת סנכרון יציבה: אנו מנטרים את כל הערוצים הקריטיים יחד עם הצוות שלכם.