Тарифы и подписки
Подписки управляются через каталог тарифов и синхронизируются с Remnawave Panel. Этот раздел объясняет доступные модели и связывает настройку каталога, сценарии покупки и жизненный цикл подписки.
Страницы раздела
Заголовок раздела «Страницы раздела»- Настройка тарифов — каталог, периоды, цены, premium-сквады, трафик и HWID.
- Платежи — общая настройка оплаты и инструкции по провайдерам.
- Подарочные подписки — покупка для другого пользователя, активация и история подарков.
Модели подписок
Заголовок раздела «Модели подписок»- Period — подписка на срок с лимитом трафика и настраиваемой стратегией сброса.
- Traffic — покупка пакетов трафика без привязки к периоду.
- Premium — отдельные premium-сквады, счётчик и стратегия сброса.
- HWID-устройства — базовый лимит одновременных устройств и временные дополнительные права.
Лимиты period-подписки
Заголовок раздела «Лимиты period-подписки»Для обычного и premium-трафика важно различать три независимых слоя:
| Слой | Как появляется | Когда сбрасывается |
|---|---|---|
| Базовый лимит тарифа | monthly_gb или premium_monthly_gb |
По стратегии обычного или premium-счётчика. |
| Гибкий итоговый лимит | Пользователь выбирает итоговое значение слайдером при покупке или продлении | Действует вместо базового лимита в оплаченном временном окне и сбрасывается по той же стратегии. |
| Переносимый баланс | Отдельная докупка, фиксированный GB-бонус промокода или конвертация | Не создаётся заново при сбросе счётчика; расходуется поверх периодического лимита по правилам соответствующего баланса. |
Гибкий лимит — это не пакет дополнительных несгораемых гигабайтов. Например, выбор 200 GB
при базовых 100 GB означает итоговую квоту 200 GB в каждом применимом периоде сброса,
а не ежемесячное добавление 100 GB в переносимый баланс. При NO_RESET счётчик не
сбрасывается, хотя цена шага всё равно задаётся за оплачиваемый месяц подписки.
Жизненный цикл
Заголовок раздела «Жизненный цикл»В общем случае Minishop создаёт пользователя в панели, применяет пробный период или первую покупку, синхронизирует статусы, обрабатывает продления, докупки и смену тарифа. При раннем продлении того же тарифа новый срок оплачивается полностью, а увеличение лимита или числа устройств рассчитывается пропорционально оставшейся части текущего окна. Понижение не создаёт возврат и начинает действовать со следующей границы подписки.
Покупка периода другого тарифа не используется как неявная смена активного тарифа: backend
возвращает tariff_switch_required, а переход выполняется отдельным сценарием. Полные правила
описаны в настройке автопродления и пробного периода
и сценариях смены тарифа.
Обновление на дневные периоды
Заголовок раздела «Обновление на дневные периоды»До обновления сохраните БД и каталог тарифов. Обновляйте backend, worker и frontend согласованно, остановив создание новых оплат на время переключения. Миграция добавляет дневные поля, сохраняя старые месячные поля, даты доступа, суммы платежей и бонусы. Старые счета и внешние recurring-подписки сохраняют прежние календарные условия. Новая разовая покупка и локальное автопродление прибавляют точные сутки в UTC.
Порог промокода сравнивается с базовым оплаченным сроком, без бонусов: 360 дней
не проходят порог 365. Дополнительные дни от множителя рассчитываются как
bonus_days + ROUND_HALF_UP(duration_days * (multiplier - 1)); старый зафиксированный
календарный заказ сохраняет прежний расчёт. Однодневная покупка не вызывает
немедленное многодневное предупреждение об окончании; короткие часовые уведомления
продолжают работать согласно настройкам.
После появления дневных оплат откат возможен только на сборку, поддерживающую дневные поля и новые снимки. Не запускайте старый worker и не восстанавливайте старую БД поверх новых финансовых операций. Подробности каталога и ограничений методов — в тарифах.