Закрытый клуб на MiniApp + GetCourse
Собрал связку Mini App, самописного Telegram-бота и GetCourse для FinX. В приложении есть программы, подбор направления, кабинет и заявки. Оплатить клуб можно картой через GetCourse или криптовалютой через бота. Он выдаёт приглашения, хранит сроки подписки и напоминает о продлении.
Задача
Объединить направления FinX в приложении внутри Telegram и связать его с оплатой и доступом в Хаб. Участнику нужно выбрать формат работы, перейти к покупке и увидеть свою подписку. Команде нужны заявки и результаты подбора, а клубу нужен автоматический учёт сроков.
Моя работа
Написал бота и серверную часть на Python, подключил интерфейс Mini App, GetCourse и NOWPayments. Настроил кабинет, хранение заявок и уведомления для команды. Реализовал выдачу доступа, напоминания и обработку повторных событий, разместил проект на VPS.
Экраны Mini App
Вход в закрытый клуб
Верхняя часть раздела «Хаб» на телефоне. Кнопка ведёт на персональную оплату GetCourse; кабинет открывается из верхнего меню.
Подбор направления
Три вопроса о задаче, опыте и формате работы. По ответам приложение предлагает направление, а результат сохраняется на стороне бота.
Скриншоты опубликованного интерфейса. Данные подписки и заявки доступны участнику при открытии приложения из Telegram.
Другие функции Mini App
Программы и тарифы
Разделы курса, личной работы и Хаба собраны в одном приложении. Из карточек можно перейти к тарифам и оплате, бесплатным урокам, торговому журналу и учёту финансов FinX Flow.
Квиз с рекомендацией
Приложение спрашивает о задаче, опыте и предпочитаемом формате. По ответам предлагает курс, личную работу или другое направление. Ответы и рекомендация сохраняются и передаются команде.
Заявки и лист ожидания
Заявка на личную работу и подписка на запуск FinX Инвест записываются в базу. Повторное нажатие не добавляет человека в лист ожидания ещё раз. Интерес к Хабу и заявки отмечаются тегами.
Уведомления для команды
Бот отправляет в отдельный канал данные заявки и Telegram-профиль участника. Команда видит его ответы и может ответить через бота. Нажатие кнопки покупки записывается отдельно от подтверждённой оплаты.
Запись через Cal.com
Подключил API календаря для выбора времени, создания, переноса и отмены записи. В кабинете предусмотрены список встреч и подключение к Zoom. Время берётся из Cal.com; если свободных слотов нет, запись не подтверждается.
Калькулятор сложного процента
Можно менять стартовую сумму, ежемесячное пополнение, срок и условную доходность. Расчёт обновляется в приложении и показывает внесённую сумму и прирост. Это иллюстрация расчёта, а не прогноз заработка.
Оплата картой и криптовалютой
Картой через GetCourse
Mini App получает персональную ссылку с Telegram ID участника. После оплаты GetCourse передаёт заказ на сервер бота. Он связывает покупку с аккаунтом и сохраняет срок доступа.
Криптовалютой через NOWPayments
В меню бота можно создать отдельный счёт и перейти на платёжную страницу сервиса. Доступ выдаётся после окончательного подтверждения платежа. Бот проверяет подпись уведомления, заказ и сумму.
Оба способа оплаты используют общий учёт доступа. Если у участника ещё действует другой оплаченный период, окончание одного из них не удаляет его из клуба.
Как участник получает доступ
Участник открывает приложение
Сервер проверяет данные, переданные Telegram, и определяет аккаунт участника. Из базы загружается действующий срок доступа в Хаб.
Выбирает способ оплаты
Из Mini App можно перейти к оплате картой через GetCourse. Для криптовалюты бот создаёт персональный счёт NOWPayments. В обоих случаях заказ связан с Telegram-аккаунтом.
Сервис подтверждает платёж
GetCourse передаёт событие через процесс по заказу, NOWPayments отправляет подписанное уведомление. Бот проверяет подтверждение и сохраняет период доступа. Повторы не добавляют второй период.
Бот выдаёт приглашение
Участник получает ссылку для вступления в закрытое сообщество. Дата окончания хранится в базе бота и отображается в кабинете Mini App.
Меньше процессов в GetCourse
В GetCourse оставлены процессы по событиям заказа. Проверка сроков, выдача приглашений, напоминания и закрытие доступа выполняются самописным ботом. Для них не нужны отдельные процессы с таймерами и повторяющимися условиями.
Что происходит с подпиской
Статус в кабинете
Mini App запрашивает срок доступа с сервера. Участник видит, активна ли подписка и до какой даты она действует. Здесь же можно перейти к продлению.
Напоминания в Telegram
За семь дней и за день до окончания бот отправляет сообщение с кнопкой продления. Для каждого срока сохраняется отметка об отправке.
Окончание доступа
Фоновая проверка учитывает все действующие периоды участника. Когда доступ закончился, бот удаляет его из клуба и отправляет ссылку повторной оплаты.
Проверка на стороне сервера
Приложение получает данные только после проверки Telegram-аккаунта. Нажатие кнопки оплаты само по себе не меняет статус подписки: для этого требуется подтверждение платёжного сервиса.
Результат разработки
Mini App, GetCourse и криптовалютная оплата связаны с одним ботом. Программы, квиз, заявки и кабинет доступны внутри Telegram. Сроки доступа хранятся в общей базе, а команда получает уведомления о заявках и действиях участников.
Самописная часть работает на Python и SQLite, интерфейс на HTML, CSS и JavaScript. Проект размещён на VPS. Сценарии подтверждения оплаты, повторных событий и проверки прав покрыты локальными тестами.