Разработка бонусной системы на 1С-Битрикс
Готовой бонусной системы в стандартном Битрикс нет. Модуль программы лояльности (loyalty) существует, но ограничен. Для полноценной системы накопления и списания бонусных баллов нужна разработка: либо доработка стандартного модуля, либо кастомный модуль, либо интеграция со специализированным сервисом.
Что умеет стандартный модуль лояльности
Модуль loyalty в Битрикс поддерживает:
- Начисление бонусов за заказы (% от суммы)
- Уровни программы лояльности с разными процентами начисления
- Списание бонусов при оформлении заказа (частичная оплата баллами)
Таблицы: 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. Битрикс отправляет события (покупка, регистрация) через вебхуки или REST API платформы, та управляет балансом и возвращает информацию о бонусах для отображения в ЛК. Плюс — готовая аналитика. Минус — зависимость от стороннего сервиса и ежемесячная оплата.
Сроки выполнения
| Объём работы | Срок |
|---|---|
| Базовая система: начисление + списание + ЛК | 2–3 недели |
| С уровнями, сроком сгорания, аналитикой | 4–6 недель |
| Интеграция с внешней платформой лояльности | 1–2 недели |







