Сервис для продажи Telegram Stars и цифровых подарков через Telegram Mini App. Проект включает backend на FastAPI, фронтенд Mini App, интеграции с платежами, бонусами и админ-инструментами.
more-stars решает полный цикл покупки внутри Telegram:
- пользователь выбирает Stars или подарок;
- оплачивает удобным способом;
- заказ подтверждается автоматически;
- выполняется доставка (Fragment / Gift API) с ретраями;
- администратор получает аудит и отчёты.
- продажа
Starsс тарифными уровнями по объёму; - продажа
Telegram Giftsиз управляемого каталога; - оплаты:
Crypto Pay,Platega (SBP/Card),TonConnect; Robokassaприсутствует в коде, но сейчас временно отключена (503);- промокоды, резервирование и погашение после успешной оплаты;
- бонусные начисления и реферальная программа;
- админ-панель с OTP-авторизацией, аналитикой и управлением настройками;
- фоновые задачи: синхронизация неоплаченных/зависших заказов, ретраи подарков, daily report, мониторинг доступности Mini App.
Telegram Mini App (frontend/)
|
v
FastAPI backend (backend/app)
|- Public API (/settings, /promo, /gifts, /profile, /raffle)
|- Orders API (/orders/*)
|- Webhooks API (/webhook/*)
|- Admin API (/admin/* + /admin/panel)
|
+--> PostgreSQL (orders/users/promos/bonuses/audit)
+--> Payment providers (Crypto Pay / Platega / TonCenter)
+--> Delivery providers (Fragment for Stars, Pyrofork for Gifts)
+--> Telegram Bot notifications (users/admins)
backend/— серверное приложение FastAPI, модели, API, интеграции, фоновые процессы.frontend/— Telegram Mini App и статические страницы (index.html,success.html,failure.htmlи др.).docker-compose.yml— локальный запуск PostgreSQL + backend..env.example— пример всех переменных окружения.
-
POST /orders/cryptoСоздаёт заказ, считает сумму в crypto и возвращает инвойс Crypto Pay. -
POST /orders/plategaСоздаёт заказ и возвращаетredirectдля оплаты через Platega. -
POST /orders/tonconnectСоздаёт заказ с уникальной TON-суммой для последующего матчинга транзакции. -
POST /orders/starsСоздаёт инвойс Telegram Stars (для сценариев оплаты в звёздах). -
Подтверждение/синхронизация статуса
- вебхуки:
/webhook/crypto,/webhook/platega/{token},/webhook/robokassa; - fallback-синхронизация фоновыми джобами, если вебхук задержался/не пришёл.
- защита
orders/*черезx-telegram-init-data(илиx-api-keyдля доверенного канала); - rate limit на создание/обработку заказов (
RATE_LIMIT_PER_MIN); - проверка подписи вебхуков провайдеров;
- админ-доступ через OTP и cookie-сессию;
- сравнение ключей через constant-time функции.
- Docker + Docker Compose (рекомендуемый путь);
- либо Python 3.11+ и PostgreSQL 15+ для локального запуска без контейнеров.
- Подготовьте переменные:
cp .env.example .env- Минимально заполните в
.env:
BOT_TOKENAPI_AUTH_KEY- PostgreSQL переменные (
POSTGRES_*) - ключи выбранного платежного провайдера (
CRYPTOBOT_TOKENилиPLATEGA_*и т.д.) MINI_APP_URL
- Запустите сервисы:
docker compose up -d --build- Проверьте запуск:
- backend:
http://localhost:8000 - admin panel:
http://localhost:8000/admin/panel
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000Важно: backend ожидает доступную PostgreSQL и корректный .env в корне репозитория.
Полный список см. в .env.example.
Критичные группы:
- Telegram/бот:
BOT_TOKEN,MINI_APP_URL - авторизация API:
API_AUTH_KEY,ALLOW_UNVERIFIED_INITDATA - БД:
POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_DB,POSTGRES_HOST,POSTGRES_PORT - платежи:
CRYPTOBOT_TOKEN,PLATEGA_*,TONCONNECT_WALLET_ADDRESS,TONCENTER_* - бизнес-настройки:
REFERRAL_PERCENT,STAR_COST_USD_PER_100,STAR_COST_RATE_SOURCE,BONUS_MIN_STARS - админ/отчёты:
ADMIN_CHAT_ID,ADMIN_REPORT_TIME,ADMIN_OTP_* - доставка Gifts через MTProto:
PYROFORK_*
Public:
GET /settings/publicGET /giftsGET /promo/validate,POST /promo/applyGET /profile/summaryGET /raffle/summary
Orders:
POST /orders/cryptoPOST /orders/plategaPOST /orders/tonconnectPOST /orders/starsPOST /orders/gift/recipientPOST /orders/stars/confirmGET /orders/last,GET /orders/history,GET /orders/{order_id}
Admin:
POST /admin/otp/request,POST /admin/otp/verifyGET/POST /admin/settingsPOST /admin/promo/createPOST /admin/bonus/*GET/POST /admin/giftsGET /admin/analytics*,GET /admin/audit*POST /admin/raffle/*
- web-интерфейс:
/admin/panel - поддерживаются настройки цен, баннера, промо-текста, параметров розыгрышей;
- есть массовая выдача бонусов и генерация бонус-claim ссылок;
- собирается операционный аудит по оплатам и доставке.
На startup автоматически запускаются:
- инициализация/создание схемы БД;
- ежедневные отчёты администраторам;
- проверка доступности
MINI_APP_URL; - sync статусов платежей и догрузка зависших заказов;
- цикл ретрая неотправленных подарков;
- polling админ-бота.
cd backend
pytest- для Production рекомендуется проксировать backend через Nginx/Caddy;
frontend/обычно разворачивается как статический сайт (домен изMINI_APP_URL);- в проде обязательно задайте уникальные секреты и выключите
ALLOW_UNVERIFIED_INITDATA; - перед релизом проверьте webhook-секреты и allowlist IP для платежных провайдеров.
Репозиторий активный, сфокусирован на Telegram Mini App e-commerce сценариях (Stars + Gifts).