Its Step
Все кейсы

Web3 · Telegram Mini App / Its Step · кейс 06

Платный доступ в канал на TON

Свой открытый проект: Mini App продаёт подписку на закрытый Telegram-канал за TON. Срок подписки хранит смарт-контракт на Tact, бот пускает в канал и убирает, когда срок закончился.

  • Tact
  • TON Connect
  • Node.js
  • TypeScript
Платный доступ в канал на TON
25 тестовконтракта и бэкенда, плюс настоящая оплата в testnet

Задача

Показать на открытом проекте, как продавать доступ в закрытый Telegram-канал за криптовалюту без платёжного агрегатора и ручной проверки. Источник правды — блокчейн: подписку может проверить кто угодно, не доверяя серверу.

Что сделал

  • Два смарт-контракта на Tact: главный принимает оплату, а для каждого подписчика разворачивает свой маленький контракт со сроком. Продление заранее прибавляется к оставшемуся сроку, недоплата возвращается автоматически.
  • Бот пускает в канал только по заявке: перед одобрением читает срок подписки из блокчейна, а раз в минуту убирает тех, у кого срок вышел и продления нет.
  • Mini App в стиле самого Telegram: статус подписки, оплата через TON Connect, ожидание подтверждения и кнопка входа в канал. Цвета берутся из темы пользователя.
  • Сервер проверяет подпись Telegram у каждого запроса Mini App, поэтому посмотреть или оплатить подписку от чужого имени нельзя.
  • Деплой в testnet и настоящая оплата. Она нашла ошибку, которой не было в тестах: кошелёк вычел комиссию из суммы, и контракт вернул платёж. Теперь сервер просит запас 0,01 TON, а на этот случай есть отдельный тест.

Результат в цифрах

25 тестовконтракта, бота и API в песочнице TON
≈ 0,001 TONкомиссия сети за одну оплату
2 контрактаобщий и по одному на подписчика
testnetразвёрнут и проверен настоящей оплатой
Следующий кейсБот брачного агентства

Следующий шаг

Расскажите, что у вас делают руками

Опишите задачу в двух словах. В тот же день скажу, как её решить, сколько это стоит и сколько займёт. Разбор бесплатный.

Написать в Telegram@SStepCEO · отвечаю лично

Не любите мессенджеры? Оставьте заявку — свяжусь сам.

Оставить заявку