Подписки и монетизация
JournalPHP включает полноценную систему монетизации — тарифные планы, платёжные провайдеры и функции, доступные по подписке.
Тарифные планы
Admin Panel → Тарифные планы (/admin-panel/subscription-prices):
Каждый тарифный план включает:
| Поле | Описание |
|---|---|
| Название | Отображаемое имя тарифа |
| Цена | Сумма в рублях (или другой валюте) |
| Период | Месяц / Год |
| Список функций | Набор feature-флагов, входящих в тариф |
Пользователь видит доступные тарифы и выбирает подходящий. Оплата происходит через встроенный виджет в модальном окне подписки — без перенаправления на внешнюю страницу.
Функции подписки
Admin Panel → Функции подписки (/admin-panel/subscription-features):
Каждая функция включается для пользователей определённого тарифного плана:
| Код | Описание |
|---|---|
post_summaries | Автоматические AI-резюме постов |
badge | Персональные значки/бейджи |
fancy_nickname | Особое оформление никнейма |
reactions | Расширенный набор реакций |
private_messages | Отправка личных сообщений |
chatgpt_comments | AI-бот в комментариях |
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 — переключение между провайдерами не требует изменений кода.
Процесс оплаты
- Пользователь выбирает тарифный план в модальном окне подписки
- Нажимает «Подписаться» → создаётся платёж
- В модальном окне открывается встроенный платёжный виджет (YooKassa или T-Bank SDK)
- После успешной оплаты:
- YooKassa — webhook
/payments/yookassa/resultактивирует подписку - T-Bank — клиент вызывает
POST /subscriptions/payments/confirm
- YooKassa — webhook
- Подписка активируется, функции становятся доступны
Отмена незавершённого платежа: POST /subscriptions/payments/cancel.
Статус платежей: Admin Panel → Платежи (/admin-panel/subscription-payments).
Автопродление
Если платёжный провайдер поддерживает рекуррентные платежи, подписка продлевается автоматически:
php artisan subscriptions:auto-renewЭта команда запускается по расписанию (Scheduler).
Проверка ожидающих платежей
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):
- Баннерная реклама — изображение + ссылка в фиксированных позициях
- Встроенная реклама — рекламные вставки между постами в ленте
Позиции и периоды отображения настраиваются в Админ-панели.