🔧 Поправил до конца USDT -> TON механизм ✅
День 31/30.
🔧 Поправил до конца USDT -> TON механизм ✅
В целом алгоритм у нас получается покупки следующий: юзер приходит в бота, видит перед собой список возможных покупок (звезд, 50, 100, 200 и т.д.). Выбирает к примеру 50 звезд, мы в это время под капотом на сервере проверяем, хватает ли у нас на кошельке USDT (0.85 USDT) на такую покупку. Если в моменте хватает, отправляем сообщение юзеру с ссылкой на оплату.
Как только он оплачивает (сейчас этот процесс просто кнопкой делается, юзер переходит по ссылке и мы просто проверяем, он в вайтлисте ли и может ли бесплатно клеймить) мы ловим это событие на сервере и начинаем процесс покупки звезд через Fragment. USDT свопаются на TON, за TON покупаются звезды.
💻 Что изменилось:
далее для айтишников
- Реализован полный цикл: проверка баланса → моковая оплата через ЮKassa (СБП) → валидация whitelist/claim → покупка
- Добавлена повторная проверка USDT баланса перед покупкой для предотвращения race conditions
- Изменено сообщение об ошибке: “Недостаточно USDT” → “Недостаточно средств”
- Создана конфигурация
star-amounts.config.tsдля управления доступными суммами (50, 100, 200, 500 и т.д.) - Все callback data переведены в
CallbackDataenum - Добавлены утилиты для парсинга и генерации динамических callback данных
- Добавлен E2E тест с полным покрытием пользовательских сценариев. Все внешние зависимости замоканы. Время выполнения тестов: ~1.5 секунды
Все изменения можно посмотреть тут — https://github.com/OneZee23/telegram-stars-market-bot/pull/6
Также надо не забыть еще раз перепроверить кол-во USDT перед самой покупкой. Если же их не будет хватать (вдруг параллельно несколько таких покупок было и мы не справились с потоком и нагрузкой), а оплата уже прошла со стороны юзера, нужно в такие моменты послать в alerts канал алерт с тегом админа — @onezee123 и сказать о том, что необходимо пополнить баланс кошелька. А юзеру в этот момент написать, что возникла проблема, скоро починим, все дела, но если хотите ускорить процесс — напишите админу @onezee123.
🎯Далее задачи:
- Понять финальные расценки на нашу бизнес-модель и составить прайс-лист на звезды
- Дождаться регистрации ИП и подключиться к какому-то эквайрингу
- Тем временем будем интегрироваться с ЮKassa и делать ее в тестовом режиме. Благо насколько помню в ЮКассе есть отдельные тестовые режимы для разработки 💳
— OneZee