← Вернуться к каталогу
FinX Crypto Hub · Криптовалюты и трейдинг

Закрытый клуб на MiniApp + GetCourse

Собрал связку Mini App, самописного Telegram-бота и GetCourse для FinX. В приложении есть программы, подбор направления, кабинет и заявки. Оплатить клуб можно картой через GetCourse или криптовалютой через бота. Он выдаёт приглашения, хранит сроки подписки и напоминает о продлении.

Задача

Объединить направления FinX в приложении внутри Telegram и связать его с оплатой и доступом в Хаб. Участнику нужно выбрать формат работы, перейти к покупке и увидеть свою подписку. Команде нужны заявки и результаты подбора, а клубу нужен автоматический учёт сроков.

Моя работа

Написал бота и серверную часть на Python, подключил интерфейс Mini App, GetCourse и NOWPayments. Настроил кабинет, хранение заявок и уведомления для команды. Реализовал выдачу доступа, напоминания и обработку повторных событий, разместил проект на VPS.

Экраны Mini App

Мобильный экран FinX Хаб: описание клуба, кнопка получения доступа и навигация Mini App

Вход в закрытый клуб

Верхняя часть раздела «Хаб» на телефоне. Кнопка ведёт на персональную оплату GetCourse; кабинет открывается из верхнего меню.

Первый вопрос подбора формата в FinX Mini App: обучение трейдингу, инвестиции, индивидуальная работа или помощь с выбором

Подбор направления

Три вопроса о задаче, опыте и формате работы. По ответам приложение предлагает направление, а результат сохраняется на стороне бота.

Скриншоты опубликованного интерфейса. Данные подписки и заявки доступны участнику при открытии приложения из Telegram.

Другие функции Mini App

Программы и тарифы

Разделы курса, личной работы и Хаба собраны в одном приложении. Из карточек можно перейти к тарифам и оплате, бесплатным урокам, торговому журналу и учёту финансов FinX Flow.

Квиз с рекомендацией

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

Заявки и лист ожидания

Заявка на личную работу и подписка на запуск FinX Инвест записываются в базу. Повторное нажатие не добавляет человека в лист ожидания ещё раз. Интерес к Хабу и заявки отмечаются тегами.

Уведомления для команды

Бот отправляет в отдельный канал данные заявки и Telegram-профиль участника. Команда видит его ответы и может ответить через бота. Нажатие кнопки покупки записывается отдельно от подтверждённой оплаты.

Запись через Cal.com

Подключил API календаря для выбора времени, создания, переноса и отмены записи. В кабинете предусмотрены список встреч и подключение к Zoom. Время берётся из Cal.com; если свободных слотов нет, запись не подтверждается.

Калькулятор сложного процента

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

Оплата картой и криптовалютой

Картой через GetCourse

Mini App получает персональную ссылку с Telegram ID участника. После оплаты GetCourse передаёт заказ на сервер бота. Он связывает покупку с аккаунтом и сохраняет срок доступа.

Криптовалютой через NOWPayments

В меню бота можно создать отдельный счёт и перейти на платёжную страницу сервиса. Доступ выдаётся после окончательного подтверждения платежа. Бот проверяет подпись уведомления, заказ и сумму.

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

Как участник получает доступ

  1. Участник открывает приложение

    Сервер проверяет данные, переданные Telegram, и определяет аккаунт участника. Из базы загружается действующий срок доступа в Хаб.

  2. Выбирает способ оплаты

    Из Mini App можно перейти к оплате картой через GetCourse. Для криптовалюты бот создаёт персональный счёт NOWPayments. В обоих случаях заказ связан с Telegram-аккаунтом.

  3. Сервис подтверждает платёж

    GetCourse передаёт событие через процесс по заказу, NOWPayments отправляет подписанное уведомление. Бот проверяет подтверждение и сохраняет период доступа. Повторы не добавляют второй период.

  4. Бот выдаёт приглашение

    Участник получает ссылку для вступления в закрытое сообщество. Дата окончания хранится в базе бота и отображается в кабинете Mini App.

Меньше процессов в GetCourse

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

Три процесса FinX Hub в GetCourse: создание заказа, оплата заказа и отмена заказа
Список процессов клуба в GetCourse: создание, оплата и отмена заказа. Учёт сроков доступа вынесен в бота.
Процесс создания заказа: начало работы, блок «Вызвать URL», завершение процесса
Пример процесса создания заказа. Блок «Вызвать URL» передаёт событие на сервер; дальнейшую обработку выполняет бот.

Что происходит с подпиской

Статус в кабинете

Mini App запрашивает срок доступа с сервера. Участник видит, активна ли подписка и до какой даты она действует. Здесь же можно перейти к продлению.

Напоминания в Telegram

За семь дней и за день до окончания бот отправляет сообщение с кнопкой продления. Для каждого срока сохраняется отметка об отправке.

Окончание доступа

Фоновая проверка учитывает все действующие периоды участника. Когда доступ закончился, бот удаляет его из клуба и отправляет ссылку повторной оплаты.

Проверка на стороне сервера

Приложение получает данные только после проверки Telegram-аккаунта. Нажатие кнопки оплаты само по себе не меняет статус подписки: для этого требуется подтверждение платёжного сервиса.

Результат разработки

Mini App, GetCourse и криптовалютная оплата связаны с одним ботом. Программы, квиз, заявки и кабинет доступны внутри Telegram. Сроки доступа хранятся в общей базе, а команда получает уведомления о заявках и действиях участников.

Самописная часть работает на Python и SQLite, интерфейс на HTML, CSS и JavaScript. Проект размещён на VPS. Сценарии подтверждения оплаты, повторных событий и проверки прав покрыты локальными тестами.

Обсудим ваш проект?