Авторизация
Сброс пароля
Как мы с нуля построили партнёрскую платформу для европейского рынка и внедрили собственную формулу расчёта комиссий
Заказчик: RentaHoliday
Страница кейса/результат: https://partner.rentaholliday.com/

Построили с нуля affiliate-платформу для RentaHoliday на Laravel 12 + Livewire 3: партнёрский кабинет, генерацию виджетов, real-time статистику и автоматизированный расчёт комиссий по кастомной формуле. Мультиязычность на 6 языков — готовность к выходу на европейский рынок.
1. Вводная задача от заказчика, проблематика, цели
До запуска партнёрской платформы у RentaHoliday не существовало системы affiliate-учёта вообще — ни в каком виде. Отсутствовал партнёрский кабинет, не было механизма генерации виджетов для встраивания на сторонние сайты, отсутствовала прозрачная статистика по кликам и заказам, не было автоматизированной системы расчёта комиссий и, как следствие, не было и инструмента для масштабирования партнёрской сети.
При этом у бизнеса были чёткие амбиции: выйти на европейский рынок, наращивать число партнёрских подключений, минимизировать ошибки в расчётах, полностью исключить потерю данных и сделать всю систему максимально прозрачной для партнёров. Без системного affiliate-движка эти цели оставались недостижимы — рост партнёрской сети в таких условиях был попросту невозможен.
Ключевыми рисками до запуска были невозможность корректно отслеживать заказы, ошибки в расчётах комиссий, потеря статистики кликов и бронирований, а также постепенная потеря доверия со стороны партнёров из-за непрозрачности процессов. Поэтому задача формулировалась предельно конкретно — создать полноценный Affiliate SaaS-продукт: с самостоятельной регистрацией партнёров, генерацией виджетов для сайтов, отслеживанием кликов, редиректов и заказов, прозрачным отображением подтверждённых комиссий, автоматическими выплатами по достижении порога, поддержкой нескольких языков и архитектурой, готовой к масштабированию на европейский рынок.
2. Описание реализации кейса и творческого пути по поиску оптимального решения
С самого начала команда закладывала не «внутренний кабинет» для узкого круга партнёров, а полноценный SaaS-продукт — с расчётом на масштабирование и внешних пользователей. Систему построили на Laravel 12 (PHP 8.2+) с использованием Livewire 3 для реактивного интерфейса без перезагрузки страниц, Tailwind 4 для стилизации, PowerGrid для работы с таблицами и Spatie Permission для управления ролями и доступами.
В основу архитектуры легла центральная сущность WidgetStatistic, объединяющая ключевые данные о каждом взаимодействии: UUID виджета, UUID партнёра, тип события (клик, редирект или заказ), данные самого заказа и его статус — pending, confirmed, cancelled, completed или paid. Такой подход позволил построить гибкую статистическую модель без дублирования логики для разных типов продуктов и событий.
Партнёрам дали возможность самостоятельно генерировать виджеты: получать уникальный UUID, создавать виджет под конкретный продукт (отели, каршеринг, трансфер), настраивать стиль и адаптивность и получать готовый JS-код для встраивания на свой сайт — при этом каждый виджет отслеживался отдельно. Для атрибуции заказов внедрили cookie-based трекинг сроком на 180 дней с собственным префиксом, сохраняющий UUID партнёра и обеспечивающий корректное закрепление заказа за нужным партнёром даже спустя длительное время после клика.
Отдельным сложным блоком стала кастомная формула расчёта выплат — разная для каждого типа продукта: для отелей комиссия рассчитывалась через разницу валовой и чистой суммы бронирования, делённую на НДС и пополам, для каршеринга — по упрощённой формуле от суммы бронирования и НДС (по умолчанию 1.21). Самым сложным здесь оказалось корректно развести валовую и чистую прибыль, выстроить надёжный переход заказа из статуса pending в confirmed и защититься от риска двойных выплат по одному и тому же заказу.
Статистику партнёров и администраторов реализовали в режиме реального времени через Livewire — графики обновлялись без перезагрузки страницы, партнёр видел динамику по каждому типу виджета, а администратор — полную картину по выплатам. Административная панель включала управление выплатами, таблицы партнёров, подтверждение заказов, отметку о выплате, экспорт данных в Excel, а также управление новостями, FAQ и переводами интерфейса.
Для выхода на европейский рынок сразу заложили поддержку шести языков — английского, русского, испанского, французского, немецкого и польского, — реализованную через middleware, JSON-файлы и отдельные translation-модели, что позволило масштабировать платформу географически без дополнительной разработки под каждый новый рынок.
Ключевой сложностью всего проекта стало выстраивание непрерывного и надёжного потока данных — от клика по виджету через редирект, сохранение cookie, создание заказа, его переход по статусам вплоть до финальной выплаты, — где любой сбой на промежуточном этапе означал бы прямые финансовые потери для бизнеса или партнёров. Отдельного внимания потребовал и баланс безопасности API: например, отключение CSRF-защиты для эндпоинта сохранения данных пришлось компенсировать усиленной валидацией на уровне бизнес-логики.

3. Результаты сотрудничества
После запуска платформы у RentaHoliday появилась полноценная affiliate-инфраструктура, которой раньше не существовало в принципе. Подключение новых партнёров ускорилось, количество ошибок в расчёте комиссий заметно снизилось, а потеря статистики по кликам и заказам была полностью исключена благодаря централизованной модели данных.
Процесс выплат партнёрам оказался автоматизирован от начала до конца — от фиксации клика по виджету до финального статуса «paid», без ручного вмешательства и связанных с ним рисков ошибок. В результате был создан масштабируемый affiliate SaaS-продукт: с прозрачным партнёрским кабинетом, гибкой системой генерации виджетов, real-time статистикой и поддержкой шести языков, готовый к выходу на европейский рынок.
Главным итогом стало то, что бизнес получил не просто «партнёрский раздел» сайта, а системный финансовый инструмент, на который можно опираться при дальнейшем масштабировании партнёрской сети в Европе — с реальными выплатами, работающими в продакшене.

4. Заключение
Этот кейс наглядно показывает разницу между «партнёрским разделом сайта» и полноценным affiliate-продуктом. Задача выглядела как разработка ещё одного личного кабинета, но по сути требовала построения финансовой инфраструктуры — системы, где каждая операция напрямую связана с реальными деньгами партнёров и бизнеса, а любая ошибка в логике оборачивается конкретными финансовыми потерями.
Именно поэтому ключевые решения в проекте касались не интерфейса, а архитектуры данных: единая модель статистики событий, устойчивый cookie-based трекинг с длительным окном атрибуции, кастомные формулы расчёта комиссий под разные типы продуктов и защита от двойных выплат. Такие вещи не видны пользователю напрямую, но именно они определяют, можно ли доверять системе как финансовому инструменту.
Заложенная с самого начала мультиязычность и SaaS-архитектура, а не «внутренний кабинет для галочки», позволили RentaHoliday не просто получить рабочий инструмент здесь и сейчас, а получить платформу, готовую к росту — подключению новых партнёров и выходу на разные европейские рынки без необходимости переписывать систему заново. Это пример того, как правильно спроектированная финансовая логика на старте экономит бизнесу гораздо больше ресурсов, чем кажется на этапе запуска.


