Перейти к содержимому

Winsee — создание онлайн-кинотеатра с подписками на WordPress

Стриминг независимого кино: свой биллинг подписок с автопродлением через Робокассу, вход через Сбер ID, Яндекс и VK, роялти авторам, 95 баллов PageSpeed.
Winsee — онлайн-кинотеатр с подписочным биллингом на WordPress — интерфейс и возможности

Winsee — онлайн-кинотеатр независимого кино: документальные фильмы про горы, фрирайд и спорт. Нужен был платный доступ ко всему каталогу с автопродлением, входом через привычные российские аккаунты и честными отчислениями авторам. Готовые решения не подходили: магазина на WooCommerce нет, а подписка, рефералы и роялти завязаны друг на друга. Я спроектировал и написал биллинг, авторизацию и защиту плеера с нуля.

Биллинг подписок и оплата

Единый тариф 299 ₽ за 30 дней и своя модель состояний: ожидает оплаты, активна, отменена, истекла.

  • рекуррентные платежи через Робокассу — карта вводится один раз;
  • доступ открывается по вебхуку от платёжного шлюза, а не по возврату пользователя на сайт;
  • cron проверяет подписки каждый час и продлевает заранее, до трёх попыток, после чего закрывает доступ и отправляет письмо;
  • отмена не отрезает оплаченное: доступ живёт до конца периода, потому что считается по дате окончания, а не по роли;
  • возврат по вебхуку закрывает доступ сразу;
  • в админке — чеки по 54-ФЗ, ручное создание подписки и тестовый прогон автоплатежа.

Защита контента

  • плеер закрыт оверлеем: без активной подписки вместо видео появляется окно с ценой и входом;
  • то же самое доступно шорткодом, чтобы закрывать отдельные материалы;
  • у подписчика своя роль без доступа в административную панель;
  • плеер подключён через Kinescope, оттуда же берётся статистика просмотров для отчётов.

Единый вход: Сбер ID, Яндекс, VK

Зритель должен дойти от «хочу посмотреть» до оплаты за один шаг, привычным аккаунтом. Разрозненные плагины конфликтовали бы с окном оплаты, поэтому вход написан одним модулем.

  • одно окно на вход и регистрацию: телефон, почта с паролем и кнопки провайдеров;
  • Сбер ID по OAuth 2.0 и OpenID Connect с PKCE и клиентским сертификатом mTLS;
  • Яндекс ID и VK ID по коду авторизации, состояние хранится во временном ключе на стороне сайта;
  • через виджет VK доступны также OK.ru и Mail.ru;
  • аккаунты связываются по идентификатору провайдера, затем по почте и телефону — один человек не плодит дубли;
  • после регистрации зритель сразу получает роль подписчика, а реферальная метка сохраняется.

Рефералы и роялти

  • блогер приводит зрителей по персональной ссылке, метка живёт в куках до оплаты;
  • отчисления считаются по схеме: доля автора фильма, доля блогера и доля сервиса, причём с третьей оплаты схема меняется;
  • отчёт за месяц или произвольный период: сумма сборов, комиссия эквайринга и разбивка по авторам и блогерам.

Скорость

Каталог тяжёлый: постеры, баннер на весь экран, плеер, Elementor. Из коробки он проваливал PageSpeed, поэтому стек донастроен отдельно.

  • свои фильтры для WP Rocket: логотип исключён из ленивой загрузки, а вертикальным постерам подставляется заглушка нужной пропорции — без неё вёрстка прыгала;
  • кеш страниц, объединение и отложенная загрузка скриптов, критический CSS, предзагрузка шрифтов;
  • около 4500 изображений переведены в WebP;
  • в дочерней теме — нативная ленивая загрузка ниже первого экрана и отдельные размеры картинок под мобильные;
  • фронт плагина подписок собирается Vite, на сервере включены кеш заголовков, OPcache и Redis.

Что дало создание онлайн-кинотеатра

Полный цикл монетизации работает без ручных операций: регистрация, оплата, вебхук, доступ, автопродление, отмена или возврат. В админке накопились 627 подписок и 523 транзакции, отчисления авторам и блогерам считаются одной кнопкой. Мобильный PageSpeed — 95 баллов при нулевом сдвиге вёрстки и времени блокировки 20 мс.