Как мы с нуля построили партнёрскую платформу для европейского рынка
и внедрили собственную формулу расчёта комиссий
О проекте
Контекст
До запуска партнёрской платформы у RentaHoliday не было системы affiliate-учёта вообще.
Не было:
- партнёрского кабинета
- механизма генерации виджетов
- прозрачной статистики
- автоматизированной системы расчёта комиссий
- инструмента масштабирования партнёрской сети
При этом бизнес хотел:
- выйти на европейский рынок
- масштабировать партнёрские подключения
- минимизировать ошибки в расчётах
- исключить потерю данных
- сделать систему прозрачной для партнёров
Боль
Ключевые риски до запуска:
- невозможность корректно отслеживать заказы
- ошибки в расчётах комиссий
- потеря статистики кликов и бронирований
- отсутствие доверия со стороны партнёров
- отсутствие масштабируемости
Без системного affiliate-движка рост партнёрской сети невозможен.
Цель проекта
Создать полноценный Affiliate SaaS-продукт, который:
- позволяет партнёрам самостоятельно регистрироваться
- генерировать виджеты для сайтов
- отслеживать клики, редиректы и заказы
- видеть подтверждённые комиссии
- получать выплаты по достижении порога
- поддерживает мультиязычность
- масштабируется на европейский рынок

Было / Стало
Было:
- партнёрской системы не существовало
- расчёты потенциально велись вручную
- статистика не фиксировалась системно
- не было инструмента подключения новых партнёров
Стало:
- полноценный affiliate dashboard
- система виджетов с уникальными UUID
- централизованная модель статистики
- автоматизированный расчёт комиссий
- real-time обновления данных
- админ-панель для управления выплатами
- продакшен-продукт с реальными выплатами
Архитектурное решение
Мы проектировали систему как SaaS-продукт, а не «внутренний кабинет».
Архитектура:
- Laravel 12 (PHP 8.2+)
- Livewire 3
- Tailwind 4
- PowerGrid
- js
- Spatie Permission
Ключевая модель системы — WidgetStatistic.
Центральная сущность:
- widget_uuid
- partner_uuid
- тип события (click / redirect / order)
- данные заказа
- статус: pending / confirmed / cancelled / completed / paid
Это позволило построить гибкую статистическую модель без дублирования логики.
Ключевые решения
Генерация виджетов. Партнёр:
- получает уникальный UUID
- создаёт виджет (hotels / carsharing / transfer)
- настраивает стиль, язык, адаптивность
- получает JS-код для встраивания
Каждый виджет отслеживается отдельно.
Cookie-based tracking (180 дней):
- префикс rah_
- сохранение partner_uuid
- корректная атрибуция заказов
Это обеспечило прозрачность и устойчивость трекинга.
Кастомная формула выплат. Разные типы продуктов — разные формулы:
- отели: ((booking_amount — booking_netto) / VAT) / 2
- каршеринг: (booking_amount / VAT) / 2
- VAT по умолчанию 1.21
Самым сложным было:
- корректное разделение валовой и чистой прибыли
- учёт статусов
- переход заказа от pending к confirmed
- защита от двойных выплат
Real-time статистика через Livewire:
- графики обновляются без перезагрузки
- партнёр видит динамику по типам виджетов
- админ отслеживает выплаты
Админ-панель:
- управление выплатами
- таблицы партнёров
- подтверждение заказов
- отметка paid
- экспорт в Excel
- управление новостями и FAQ
- мультиязычные переводы
Мультиязычность. Поддержка 6 языков:
- EN
- RU
- ES
- FR
- DE
- PL
Реализовано через middleware + JSON-файлы + translation-модели.
Это позволило выходить на европейский рынок без дополнительной разработки.

Сложности проекта
Самое сложное:
- архитектура статистики
- расчёт формул комиссий
- синхронизация статусов заказов
- баланс безопасности API (отключённый CSRF для save endpoint, но валидация данных)
Поток данных должен был быть непрерывным:
Виджет → клик → редирект → cookie → заказ → pending → confirmed → выплата → paid
Любая ошибка — прямые финансовые потери.
Почему это сработало
Мы не делали «кабинет». Мы строили:
- устойчивую архитектуру
- централизованную модель статистики
- гибкую систему расчётов
- масштабируемый продукт
Это не лендинг. Это финансовый инструмент, который напрямую влияет на доход партнёров.
Результаты
После запуска:
- ускорено подключение новых партнёров
- снижено количество ошибок в расчётах
- исключена потеря статистики
- автоматизирован процесс выплат
- создан масштабируемый affiliate SaaS
Главное — бизнес получил систему, на которую можно опираться при масштабировании в Европе.


