Розробка бонусної системи на 1С-Bitrix
Готової бонусної системи у стандартному Bitrix немає. Модуль програми лояльності (loyalty) існує, але обмежений. Для повноцінної системи накопиченння та списання бонусних балів потрібна розробка: або доробка стандартного модуля, або кастомний модуль, або інтеграція зі спеціалізованим сервісом.
Що умотить стандартний модуль лояльності
Модуль loyalty у Bitrix підтримує:
- Начисління бонусів за замовлення (% від суми)
- Рівні програми лояльності з різними відсотками начисління
- Списання бонусів при оформленні замовлення (часткова оплата балами)
Таблиці: b_loyalty_account (рахунок клієнта), b_loyalty_account_operation (історія операцій), b_loyalty_level (рівні програми).
Обмеження стандартного модуля: немає терміну дії бонусів, немає начисління за дії крім замовлень, немає гнучкого управління категоріями начисління.
Архітектура кастомної бонусної системи
Кастомна реалізація будується на кількох компонентах:
Зберігання балансу та операцій:
- Таблиця
custom_bonus_account— поточний баланс користувача - Таблиця
custom_bonus_transaction— історія: начисління, списання, сгорання, тип операції, дата, замовлення
Начисління бонусів:
Обробник подій OnSaleOrderPaid (модуль main) — начислює бонуси після підтвердження оплати:
AddEventHandler('sale', 'OnSaleOrderPaid', function($order) {
$userId = $order->getUserId();
$sumOrder = $order->getPrice();
$bonusRate = getBonusRateForUser($userId); // % начисління
$bonusAmount = round($sumOrder * $bonusRate / 100);
addBonusTransaction($userId, $bonusAmount, 'EARN', $order->getId());
});
Списання бонусів:
Додатковий спосіб оплати (b_sale_pay_system) з обробником, що зменшує баланс та записує транзакцію типу SPEND.
Термін дії бонусів:
Агент, що запускається щодня, перевіряє транзакції з полем EXPIRE_DATE та аннулює істекші бонуси через транзакцію типу EXPIRE.
Рівні програми лояльності
| Рівень | Накопленна сума | Відсоток начисління |
|---|---|---|
| Стандарт | 0–10 000 руб. | 3% |
| Срібло | 10 000–50 000 руб. | 5% |
| Золото | від 50 000 руб. | 7% |
Рівень перераховується при кожному завершеному замовленні — агент або обробник подій дивиться на суму покупок користувача за період та оновлює його рівень у b_user через поле UF_BONUS_LEVEL.
Особистий кабінет: історія бонусів
Компонент у особистому кабінеті показує:
- Поточний баланс
- Історію транзакцій з типами операцій
- Термін сгорання найближчих бонусів
Дані читаються з custom_bonus_transaction з фільтром за USER_ID.
Інтеграція з зовнішніми платформами лояльності
Альтернатива власній розробці — інтеграція з готовими платформами: Mindbox, Passteam, UDS Game. Bitrix відправляє події (покупка, реєстрація) через вебхуки або REST API платформи, та керує балансом і повертає інформацію про бонуси для відображення в ЛК. Плюс — готова аналітика. Мінус — залежність від стороннього сервісу та щомісячна оплата.
Строки виконання
| Обсяг роботи | Строк |
|---|---|
| Базова система: начисління + списання + ЛК | 2–3 тижні |
| З рівнями, терміном сгорання, аналітикою | 4–6 тижнів |
| Інтеграція з зовнішньою платформою лояльності | 1–2 тижні |







