Разработка модуля партнерского кабинета 1С-Битрикс
Партнёрская программа в большинстве компаний живёт в Excel: кто привёл клиента, какой процент, когда выплатить. Когда партнёров становится больше 20–30, менеджер тратит половину рабочего времени на сверку. Разработка партнёрского кабинета на Битрикс переводит этот процесс в самообслуживание: партнёр сам видит свою статистику, генерирует ссылки, отслеживает выплаты — без звонков в компанию.
Архитектура: что нужно спроектировать правильно
Основная сложность — атрибуция. Нужно точно определить, какой заказ пришёл от какого партнёра, даже если пользователь перешёл по ссылке неделю назад, закрыл браузер, открыл снова и только потом купил.
Модуль решает задачу атрибуции на двух уровнях:
Cookie-атрибуция. При переходе по реферальной ссылке (?ref=PARTNER_CODE) в браузер записывается cookie partner_ref с TTL 30–90 дней (настраивается). Cookie HttpOnly, чтобы JavaScript не мог его изменить.
UTM-атрибуция. Параллельно код партнёра сохраняется в сессии. При оформлении заказа событие OnSaleOrderAdd читает оба источника, определяет атрибуцию и записывает в b_sale_order_props кастомное поле PARTNER_CODE.
Все партнёрские коды, комиссии, статусы выплат хранятся в таблицах модуля:
-
myvendor_partner— профили партнёров -
myvendor_partner_order— связь заказов с партнёрами, сумма комиссии -
myvendor_partner_payout— история выплат
Личный кабинет партнёра
Кабинет строится на стандартных компонентах Битрикс с кастомными шаблонами. Авторизация — через стандартный механизм пользователей (b_user), но с дополнительной проверкой: пользователь должен состоять в группе «Партнёры» (b_user_group).
Раздел статистики. Показывает за выбранный период: количество переходов (из myvendor_partner_click), количество оформленных заказов, итоговую сумму комиссии. Данные агрегируются агентом раз в час, не запрашиваются в реальном времени — это ключевое решение для производительности при большом числе партнёров.
Реферальные ссылки. Партнёр вводит любой URL сайта, модуль добавляет к нему ?ref=CODE и показывает готовую ссылку. Дополнительно — генерация UTM-ссылок с предзаполненными параметрами.
Рекламные материалы. Инфоблок с баннерами разных размеров. Партнёр выбирает баннер, получает HTML-код для вставки — ссылка в баннере уже содержит его реферальный код.
Глубокий разбор: расчёт комиссии
Это бизнес-логика с наибольшим числом вариантов, и её нужно делать гибкой с самого начала.
Комиссия может зависеть от:
- категории товаров в заказе (разные % для разных разделов каталога)
- суммы заказа (прогрессивная шкала)
- уровня партнёра (Silver / Gold / Platinum)
- первый заказ клиента или повторный
class CommissionCalculator {
public function calculate(\Bitrix\Sale\Order $order, Partner $partner): float {
$rules = CommissionRuleTable::getActiveRules($partner->getLevel());
$commission = 0.0;
foreach ($order->getBasket() as $item) {
$rule = $this->matchRule($rules, $item->getProductId());
$commission += $item->getPrice() * $rule->getRate() / 100;
}
return round($commission, 2);
}
}
Расчёт запускается в обработчике OnSaleOrderPaid — комиссия начисляется только по оплаченным заказам. При возврате (OnSaleOrderStatusChange со статусом возврата) комиссия автоматически сторнируется.
Административный модуль
Администратор видит: список всех партнёров с суммарной статистикой, очередь на выплату (партнёры с накопленной комиссией выше порога), историю выплат. Выплата оформляется вручную — администратор нажимает «Выплачено», указывает способ и дату, система меняет статус и отправляет письмо партнёру.
Сроки разработки
| Масштаб | Состав | Срок |
|---|---|---|
| Базовый | Кабинет + атрибуция + фиксированный % комиссии | 4–5 недель |
| Средний | + многоуровневые правила + рекламные материалы + выплаты | 7–9 недель |
| Расширенный | + многоуровневый маркетинг (2-е плечо) + API для интеграций | 10–14 недель |
Ключевой вопрос до старта — нужна ли многоуровневая структура (партнёр привлекает субпартнёров). Если да, схема данных меняется кардинально.







