Докупка устройств и трафика
В разделе Тарифы → Докупки → Докупки для этого тарифа владелец создаёт два независимых набора пакетов:
- дополнительный трафик в ГБ;
- дополнительные места для устройств.
Пакеты привязаны к конкретному тарифу. Например, пакет тарифа «Старт» не предлагается клиенту с тарифом «Пробный» или PRO. Чтобы включить докупки для них, настройте пакеты в каждой соответствующей карточке тарифа. В списке тарифов кнопка «Докупки» показывает, какие виды пакетов уже добавлены, и сразу открывает их редактор.
Для каждого пакета задаются количество, цена в валюте проекта и необязательная отдельная цена в Telegram Stars. Можно добавить несколько вариантов. Пока пакетов нет, кнопки докупки клиентам не показываются. Изменение пакета не меняет уже выставленные счета: в платеже сохраняется снимок количества и цены.
Трафик продаётся только для подписки с ограниченным объёмом. У бессрочного безлимитного трафика предложения докупить ГБ нет. Для отключённого клиента, просроченной или отменённой подписки новые счета на докупки не создаются.
На сайте и в Mini App на главной странице, в карточках «Трафик» и «Устройства», доступны кнопки «Докупить» и «Добавить», затем выбор пакета и способа оплаты. В боте — кнопка «Докупки» в настраиваемом меню и команда /addons. Владелец может изменить порядок кнопки и её эмодзи тем же редактором меню. Список пакетов и механизм оплаты общие для сайта, Mini App и бота.
Срок действия
Устройства действуют до окончания текущего оплаченного срока, зафиксированного при активации пакета. Досрочное продление не продлевает докупленные места автоматически.
Трафик действует до ближайшего сброса лимита или окончания подписки — что наступит раньше. Ручной сброс трафика администратором также завершает действующие пакеты трафика. При стратегии «не сбрасывать» пакет действует до окончания подписки.
Покупка добавляет лимит, не обнуляет уже потраченный трафик и не меняет тариф или срок подписки. Покупка трафика может восстановить доступ клиента, ограниченного из-за исчерпания трафика. Снятие докупленных устройств уменьшает допустимый лимит; зарегистрированные устройства не удаляются автоматически.
Если деньги пришли после окончания подписки, оплаченный пакет сохраняется в ожидании и включится после активации подходящей подписки. Пакет трафика ожидает подписку с ограниченным трафиком. В Mini App и боте отображаются оплаченные пакеты и состояние ожидания.
Техническая проверка
Миграция 039_subscription_addons.sql добавляет каталог пакетов и журнал начислений. Проверки:
SN_ADDON_TEST_DB=... cargo test -p sn-payments --test addons -- --nocapture— только база с префиксомsn_audit_: повторы, конкурентные уведомления, снимок пакета, продление, истечение, сбросы, поздняя оплата, безлимит.SN_TEST_DATABASE_URL=... cargo test -p sn-bot bot_addon_checkout_and_stars_receipt -- --ignored --nocapture— бот с локальной имитацией Telegram, без отправки сообщений клиентам.cargo test -p sn-payments --lib— контракты трёх платёжных API и проверки подписей.
Цены, пакеты и секреты тестового окружения не переносятся в рабочий сервис.
Если кнопки не появились
- Сравните тариф в кабинете клиента с тарифом, в котором сохранены пакеты. Они должны совпадать.
- Проверьте, что тариф активен, у подписки не истёк срок, а клиент не отключён. Пакеты трафика доступны только подпискам с ограниченным трафиком.
- Для сайта и Mini App включите покупки в настройках кабинета; для Mini App также включите магазин в настройках бота. Для бота включите кнопку «Докупки трафика и устройств» в редакторе меню.
- После сохранения обновите главную страницу кабинета или вернитесь в меню бота через
/start. Каталог читается заново при запросе, задержки в несколько минут нет.
Цена и валюта берутся из сохранённого пакета. Если подходящий способ оплаты ещё не настроен, пакет виден, но оформить оплату нельзя — интерфейс объясняет причину.