Бот и Mini App

VPN subscriptions

О проекте

Этот проект объединяет Telegram-бота, Mini App для клиентов и админ-панель Django. Клиент выбирает VPN-тариф, проверяет доступ и управляет продлением в одном аккаунте. Бот открывает сервис, а Mini App даёт удобный интерфейс личного кабинета.

Тариф определяет регион, срок и число устройств. Я связал клиентский интерфейс с заказами, подписками и автоматическим подключением VPN. В аккаунте видны реальный срок доступа и статус подписки, а не только запись о покупке.

Как это работает

  1. Выбрать тариф

  2. Получить доступ к VPN

  3. Управлять подпиской

Клиент выбирает тариф, затем видит в аккаунте регион, лимит устройств, дату окончания и настройку продления. Заказ может создать новую подписку или продлить существующую. Заказы и подписки хранятся отдельно, чтобы покупка и связанный с ней доступ учитывались правильно.

Бэкенд создаёт и синхронизирует доступ к VPN. Он фиксирует ожидание подключения, активный доступ и ошибки, требующие внимания. Оператор управляет клиентами, тарифами и подписками в админ-панели Django. Даты и статусы в ней совпадают с данными клиентского аккаунта.

Что было сложнее

Сложнее всего было согласовать оплату, подписку и доступ к VPN. Оплаченный заказ может ещё ждать подключения. Подписка может закончиться или продлиться, пока у VPN-аккаунта на удалённом сервере другой статус. Интерфейс должен правильно показывать каждую из этих ситуаций.

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

Что было проще

Когда модель подписки была определена, карточки тарифов и элементы аккаунта было проще собрать. Регион, срок, число устройств и настройка продления имеют своё место в интерфейсе.

Редактирование клиентов и тарифов в Django также опирается на эти записи. Сложная логика находится в подключении и изменении подписок, а отдельные поля и карточки показывают её результат.

Что получилось хорошо

Клиент видит тариф, срок доступа и настройку продления в одном месте. Не нужно восстанавливать информацию о подписке по старым сообщениям бота.

Разделение заказов и подписок помогает поддержке. Оператор видит, что куплено, какой доступ активен и требует ли подключение внимания. Это даёт нужный контекст, когда клиент обращается за помощью.