Авторизация
Забыли пароль?
Сброс пароля
Вернуться к авторизации

Как мы с нуля построили партнёрскую платформу для европейского рынка и внедрили собственную формулу расчёта комиссий

26 июля ‘26

Заказчик: RentaHoliday
Страница кейса/результат: https://partner.rentaholliday.com/

Построили с нуля affiliate-платформу для RentaHoliday на Laravel 12 + Livewire 3: партнёрский кабинет, генерацию виджетов, real-time статистику и автоматизированный расчёт комиссий по кастомной формуле. Мультиязычность на 6 языков — готовность к выходу на европейский рынок.

Агентство-исполнитель кейса

LP Agency

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

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 не просто получить рабочий инструмент здесь и сейчас, а получить платформу, готовую к росту — подключению новых партнёров и выходу на разные европейские рынки без необходимости переписывать систему заново. Это пример того, как правильно спроектированная финансовая логика на старте экономит бизнесу гораздо больше ресурсов, чем кажется на этапе запуска.

Агентство-исполнитель кейса

LP Agency

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