globall.dev — студия Telegram-ботов globall.dev
Крипто-обменник USDT / RUB

Крипто-обменник в Telegram Mini App с курсом, который не встаёт

Офлайн-пункт обмена USDT/RUB переехал внутрь Telegram: курс собирается из четырёх источников с резервированием, заявки считаются сами, есть AML-проверка кошельков и синхронизация с Google Sheets.

Ниша: крипто-обменник Тип: Mini App + бот Стек: PHP + Telegram Mini App
4 источника
Курс агрегируется с приоритизацией и fallback — обменник не встаёт, если один API упал
AML-проверка
Оценка риска кошелька (low / medium / high) с лимитом 3 проверки в день
Реф. система
Бонусы за сделки приглашённых и скидки на курс от количества рефералов
Google Sheets
Пользователи и заявки синхронизируются в таблицу в реальном времени
Проблема

Обменник держался на одном курсе и ручном счёте

До Mini App обмен USDT/RUB шёл по старинке. Курс брали из одного источника — и стоило этому API лечь или отдать кривое число, как обменник буквально вставал: оператор не понимал, по какой цене считать, а клиент ждал в переписке. Заявки оформляли вручную в чате, сумму в USDT считали на калькуляторе, реквизиты переспрашивали по несколько раз.

Вторая боль — деньги и доверие. В обмене криптовалюты нельзя просто «принять кошелёк»: нужно понимать, не пришли ли средства с грязного адреса. Без проверки это риск и для обменника, и для клиента. А любая попытка вырастить поток через рефералов упиралась в то, что бонусы и скидки тоже считались руками.

Запрос был такой: вынести обмен в удобный интерфейс внутри Telegram, чтобы клиент сам выбирал направление, видел актуальный курс и итоговую сумму, оставлял заявку с реквизитами — а курс, AML-проверка и реферальная экономика работали автоматически и не зависели от одного сервиса.

Подход

Как мы разложили обменник на части

Обменник — это не «бот, который пишет курс». Здесь критична надёжность цифры и сделки: ошибка в курсе — это прямой убыток, а пропущенный грязный кошелёк — риск посерьёзнее. Поэтому скоуп разбили на отдельные, изолированные блоки:

  1. Курс — отдельный слой с резервированием. Один источник — единая точка отказа. Нужна цепочка из нескольких API с приоритетом и автоматическим переключением на следующий, плюс кэш в базе как последний рубеж.
  2. Калькулятор и маржа — гибко и под контролем владельца. К рыночному курсу применяется настраиваемая маржа (offset на покупку и продажу), фиксированный спред и персональные/реферальные скидки. Это считается на сервере, а не «на глаз».
  3. AML — обязательный шаг, а не опция. Перед сделкой клиент проверяет кошелёк: уровень риска и лимит проверок в день, всё с логом в базе.
  4. Заявки и учёт — Mini App + зеркало в Google Sheets. Заявка оформляется в пару кликов, а владелец видит весь поток в привычной таблице, без захода в админку.

Такая нарезка дала продукт, понятный клиенту в две минуты, и при этом устойчивый: даже если внешний сервис курса временно недоступен, обменник продолжает работать.

Решение

Что получил владелец обменника

Клиент открывает Mini App внутри Telegram, выбирает направление (купить или продать USDT), вводит сумму в рублях — и сразу видит итоговую сумму в USDT по актуальному курсу с уже учтённой маржой и его личной скидкой. Дальше оставляет заявку: ФИО и кошелёк TRC-20, всё в одной форме. Интерфейс отвечает мгновенно — благодаря оптимистичному UI заявка показывается принятой сразу, а на сервер уходит в фоне.

Курс, который не зависит от одного API

Под капотом — агрегатор, который опрашивает источники по приоритету: Rapira → Binance P2P → CoinGecko → CryptoCompare → кэш в базе. Если первый источник недоступен или отдал явно некорректное значение, система переходит к следующему. Поэтому даже в момент, когда биржевой API лежит, обменник продолжает считать и принимать заявки. К базовому курсу применяется настраиваемая маржа на покупку и продажу, фиксированный спред и скидки клиента — владелец управляет экономикой из админки.

AML-проверка и реферальная программа

Перед сделкой клиент может проверить адрес: система определяет уровень риска (low / medium / high), ограничивает 3 проверками в день и пишет результат в лог. Реферальная программа считает сама: каждому выдаётся уникальный код, за сделки приглашённых начисляется бонус (рубли за каждый обменянный USDT), а за количество приглашений (3+ и 10+) клиент получает скидку на собственный курс. Поверх — персональная скидка, которую владелец может выдать вручную.

Google Sheets и параллельный бот

Все пользователи и заявки синхронизируются в Google Sheets в реальном времени через Service Account — владелец видит поток в привычной таблице, а реферальные бонусы начисляются по статусу сделки прямо из Sheets. Параллельно с Mini App работает обычный Telegram-бот: /start с реферальным кодом, профиль, текущие курсы и главное меню. При каждой новой заявке админу и поддержке прилетает уведомление.

Технически

Что под капотом

PHP бэкенд Telegram Mini App (TWA) Telegram Bot MySQL Google Sheets API

Курс: агрегация и отказоустойчивость

4 источника с приоритетом и fallback
Rapira → Binance P2P → CoinGecko → CryptoCompare → кэш в БД. Падение одного API не останавливает обмен.
Калькулятор с гибкой маржой
Настраиваемый offset покупки/продажи, фиксированный спред и применение скидок прямо к курсу.

Сделки, AML и реферальная экономика

Форма заявки на обмен
Тип (купить/продать USDT), сумма в RUB, ФИО, кошелёк TRC-20, автоматический расчёт суммы в USDT.
История заявок со статусами
Ожидание / обработка / завершена / отменена — с цветовой индикацией для клиента.
AML-проверка кошельков
Уровень риска low/medium/high, лимит 3 проверки в день, логирование результата в БД.
Реферальная система
Уникальный код, бонус за сделки приглашённых, скидки от 3+ и 10+ рефералов, персональная скидка от админа.

Интеграции, админка и UX

Google Sheets через Service Account
JWT-авторизация, синхронизация пользователей и заявок в реальном времени, начисление бонусов по статусу сделки в Sheets.
Бот параллельно с Mini App
/start с реферальным кодом, профиль, курсы, главное меню и логирование взаимодействий.
Админ-панель
Статистика, управление курсами и маржой, персональные скидки для пользователей.
Оптимистичный UI
Мгновенный feedback клиенту + фоновая отправка на сервер (fire-and-forget) — интерфейс не тормозит.
Уведомления админу и поддержке
Каждая новая заявка сразу приходит ответственным — ничего не теряется в потоке.
MySQL под весь учёт
Пользователи с реф-кодами и скидками, заявки, курсы, рефералы, AML-проверки и настройки.
Результат

Обменник работает и не зависит от одного сервиса

Вместо переписки и калькулятора — обмен в пару кликов внутри Telegram. Курс агрегируется из 4 источников с fallback, есть AML-проверка и синхронизация с Google Sheets — обменник не встаёт, даже если один API упал. Клиент сам выбирает направление, видит итоговую сумму и оставляет заявку, а курс, проверка кошелька и реферальные начисления считаются автоматически.

  • Падение одного источника курса больше не останавливает обмен — есть цепочка резервов и кэш.
  • AML-шаг встроен в сценарий: уровень риска кошелька виден до сделки, с лимитом и логом.
  • Реферальная экономика и скидки считаются сами — без ручного счёта бонусов.
  • Владелец видит весь поток заявок в Google Sheets и управляет курсом из админки.
Конкретные обороты и количество сделок — на стороне владельца обменника; готовы добавить их в кейс по запросу, когда накопится статистика.

Нужен обменник или платёжный Mini App?

Расскажите про направления обмена, источники курса и реферальную схему — за день пришлём фиксированную смету и план запуска. Исходники ваши с первого дня.

Бесплатно. Отвечу в течение часа в рабочее время. Без спама.

Берём в работу ограниченное число проектов одновременно — ближайший слот ограничен.