Skip to content

Подписки и монетизация

JournalPHP включает полноценную систему монетизации — тарифные планы, платёжные провайдеры и функции, доступные по подписке.

Тарифные планы

Admin Panel → Тарифные планы (/admin-panel/subscription-prices):

Каждый тарифный план включает:

ПолеОписание
НазваниеОтображаемое имя тарифа
ЦенаСумма в рублях (или другой валюте)
ПериодМесяц / Год
Список функцийНабор feature-флагов, входящих в тариф

Пользователь видит доступные тарифы и выбирает подходящий. Оплата происходит через встроенный виджет в модальном окне подписки — без перенаправления на внешнюю страницу.

Функции подписки

Admin Panel → Функции подписки (/admin-panel/subscription-features):

Каждая функция включается для пользователей определённого тарифного плана:

КодОписание
post_summariesАвтоматические AI-резюме постов
badgeПерсональные значки/бейджи
fancy_nicknameОсобое оформление никнейма
reactionsРасширенный набор реакций
private_messagesОтправка личных сообщений
chatgpt_commentsAI-бот в комментариях
video_avatarВидеоаватар
ad_freeОтсутствие рекламы

Список функций настраивается в Админ-панели — можно добавлять кастомные.

Проверка доступа к функции осуществляется middleware has.subscription.feature.

Платёжные провайдеры

Admin Panel → Провайдер платежей (/admin-panel/subscription-payment-provider):

Выбор активного провайдера и ввод API-ключей. Поддерживаются только YooKassa и T-Bank.

ПровайдерПодтверждение оплаты
ЮKassa (YooKassa)Webhook: /payments/yookassa/result
T-BankКлиентское подтверждение: POST /subscriptions/payments/confirm после успеха виджета

Платёжный шлюз реализован через паттерн Driver — переключение между провайдерами не требует изменений кода.

Процесс оплаты

  1. Пользователь выбирает тарифный план в модальном окне подписки
  2. Нажимает «Подписаться» → создаётся платёж
  3. В модальном окне открывается встроенный платёжный виджет (YooKassa или T-Bank SDK)
  4. После успешной оплаты:
    • YooKassa — webhook /payments/yookassa/result активирует подписку
    • T-Bank — клиент вызывает POST /subscriptions/payments/confirm
  5. Подписка активируется, функции становятся доступны

Отмена незавершённого платежа: POST /subscriptions/payments/cancel.

Статус платежей: Admin Panel → Платежи (/admin-panel/subscription-payments).

Автопродление

Если платёжный провайдер поддерживает рекуррентные платежи, подписка продлевается автоматически:

bash
php artisan subscriptions:auto-renew

Эта команда запускается по расписанию (Scheduler).

Проверка ожидающих платежей

bash
php artisan subscriptions:payments:check-pending

Команда запрашивает статус платежей у провайдера и обновляет состояние подписок.

Upsell-модальное окно

Admin Panel → Подписка (модальное окно) (/admin-panel/subscription-modal):

Настройка внешнего вида всплывающего окна с предложением подписки — текст, список преимуществ, кнопка действия.

Управление подписками пользователей

Admin Panel → Подписки пользователей (/admin-panel/user-subscriptions):

  • Просмотр активных подписок
  • Ручная активация / деактивация подписки
  • Статистика подписчиков

Отмена подписки

Пользователь может отменить подписку через настройки аккаунта. После отмены доступ к функциям сохраняется до конца оплаченного периода.

Маршрут: POST /subscriptions/cancel

Реклама

Помимо подписок, платформа поддерживает рекламные блоки:

Admin Panel → Реклама (/admin-panel/advertisements):

  • Баннерная реклама — изображение + ссылка в фиксированных позициях
  • Встроенная реклама — рекламные вставки между постами в ленте

Позиции и периоды отображения настраиваются в Админ-панели.

Released under the MIT License.