LP Agency

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

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

О проекте

Тип:
партнёрская платформа, веб-приложение
Сфера:
туризм, travel-tech
География:
Испания (Европа)
Формат:
разработка с нуля
Срок:
4 месяца
Стек:
Laravel 12, Livewire 3, Tailwind, PowerGrid, Chart.js
Клиент:
RentaHoliday

Контекст

До запуска партнёрской платформы у RentaHoliday не было системы affiliate-учёта вообще.

Не было:

  • партнёрского кабинета
  • механизма генерации виджетов
  • прозрачной статистики
  • автоматизированной системы расчёта комиссий
  • инструмента масштабирования партнёрской сети

При этом бизнес хотел:

  • выйти на европейский рынок
  • масштабировать партнёрские подключения
  • минимизировать ошибки в расчётах
  • исключить потерю данных
  • сделать систему прозрачной для партнёров

Боль

Ключевые риски до запуска:

  • невозможность корректно отслеживать заказы
  • ошибки в расчётах комиссий
  • потеря статистики кликов и бронирований
  • отсутствие доверия со стороны партнёров
  • отсутствие масштабируемости

Без системного affiliate-движка рост партнёрской сети невозможен.

Цель проекта

Создать полноценный Affiliate SaaS-продукт, который:

  • позволяет партнёрам самостоятельно регистрироваться
  • генерировать виджеты для сайтов
  • отслеживать клики, редиректы и заказы
  • видеть подтверждённые комиссии
  • получать выплаты по достижении порога
  • поддерживает мультиязычность
  • масштабируется на европейский рынок

Renta LK1

Было / Стало

Было:

  • партнёрской системы не существовало
  • расчёты потенциально велись вручную
  • статистика не фиксировалась системно
  • не было инструмента подключения новых партнёров

Стало:

  • полноценный 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-модели.

Это позволило выходить на европейский рынок без дополнительной разработки.

Renta LK4

Сложности проекта

Самое сложное:

  • архитектура статистики
  • расчёт формул комиссий
  • синхронизация статусов заказов
  • баланс безопасности API (отключённый CSRF для save endpoint, но валидация данных)

Поток данных должен был быть непрерывным:

Виджет → клик → редирект → cookie → заказ → pending → confirmed → выплата → paid

Любая ошибка — прямые финансовые потери.

Почему это сработало

Мы не делали «кабинет». Мы строили:

  • устойчивую архитектуру
  • централизованную модель статистики
  • гибкую систему расчётов
  • масштабируемый продукт

Это не лендинг. Это финансовый инструмент, который напрямую влияет на доход партнёров.

Результаты

После запуска:

  • ускорено подключение новых партнёров
  • снижено количество ошибок в расчётах
  • исключена потеря статистики
  • автоматизирован процесс выплат
  • создан масштабируемый affiliate SaaS

Главное — бизнес получил систему, на которую можно опираться при масштабировании в Европе.