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

Тарифы и подписки

Подписки управляются через каталог тарифов и синхронизируются с Remnawave Panel. Этот раздел объясняет доступные модели и связывает настройку каталога, сценарии покупки и жизненный цикл подписки.

  • Period — подписка на срок с лимитом трафика и настраиваемой стратегией сброса.
  • Traffic — покупка пакетов трафика без привязки к периоду.
  • Premium — отдельные premium-сквады, счётчик и стратегия сброса.
  • HWID-устройства — базовый лимит одновременных устройств и временные дополнительные права.

Для обычного и 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 и не восстанавливайте старую БД поверх новых финансовых операций. Подробности каталога и ограничений методов — в тарифах.