Legan Studio
Все статьи
~ 5 мин чтения

Бот для криптокошелька и платежей TON в Telegram

Как собрать TON-кошелёк в Telegram-боте: TON Connect, Wallet Pay, отправка и приём jettons, безопасное хранение ключей и UX без сидов.

  • Telegram
  • TON
  • крипта
  • Wallet

The Open Network (TON) — нативная блокчейн-инфраструктура Telegram. С 2023 года Telegram активно интегрирует TON: встроенный кошелёк @wallet, Toncoin как опция вывода Stars, Wallet Pay для приёма платежей в чатах. Для разработчиков это даёт возможность встроить криптоплатежи в любой бот без сторонних эквайеров.

Разберём, как работают TON Connect, Wallet Pay, отправка jettons (TON-токенов) и какие сценарии реально окупаются в 2026.

Кубики экосистемы

КомпонентЧто даёт
TON Wallet (@wallet)встроенный non-custodial кошелёк в Telegram
TON Connect 2стандартный протокол подключения внешних кошельков
Wallet Payприём платежей TON/USDT в боте без TON Connect
JettonsTON-эквивалент ERC-20 токенов
TON Sitesdapps на доменах .ton
TON Storageдецентрализованное хранилище

Для большинства задач достаточно TON Connect 2 + Wallet Pay.

Wallet Pay: самый простой путь

Wallet Pay — это сервис @wallet, позволяющий боту принимать TON, USDT и другие jettons через инвойсы, аналогично Telegram Stars, но в крипте.

import httpx

async def create_invoice(amount_ton: float, description: str) -> str:
    r = await httpx.post(
        "https://pay.wallet.tg/wpay/store-api/v1/order",
        headers={"Wpay-Store-Api-Key": WALLET_API_KEY},
        json={
            "amount": {"currencyCode": "TON", "amount": str(amount_ton)},
            "description": description,
            "externalId": str(uuid4()),
            "timeoutSeconds": 600,
            "customerTelegramUserId": user_id,
        },
    )
    return r.json()["data"]["payLink"]


@router.message(F.text == "/buy_pro")
async def buy(message: Message):
    link = await create_invoice(2.5, "PRO 30 дней")
    await message.answer(f"Оплатите 2.5 TON: {link}")

Юзер кликает, открывается @wallet, подтверждает оплату, бот получает webhook о статусе. Комиссия Wallet Pay — 0.5–1.5%, что в десятки раз меньше Stars.

TON Connect: подключение внешних кошельков

Для приложений, где юзер хочет использовать свой кошелёк (Tonkeeper, MyTonWallet, OpenMask), а не @wallet — TON Connect 2.

В Mini App:

import { TonConnectUI } from "@tonconnect/ui";

const tc = new TonConnectUI({
  manifestUrl: "https://app.example.com/tonconnect-manifest.json",
});

async function connect() {
  await tc.openModal();
  const wallet = tc.account?.address;
}

async function pay() {
  const tx = await tc.sendTransaction({
    validUntil: Math.floor(Date.now() / 1000) + 600,
    messages: [{
      address: SHOP_WALLET,
      amount: "2500000000", // nanoTON, 2.5 TON
      payload: "te6ccgEBAQEAAgAAAA==",  // комментарий в BOC
    }],
  });
  await api.confirmPayment(tx.boc);
}

На бэкенде проверяете факт перевода через TON-индексер (TonAPI, dton.io):

async def verify_payment(user_address: str, amount_nano: int, since: int) -> bool:
    txs = await ton_api.get_transactions(SHOP_WALLET, limit=50)
    for tx in txs:
        if (tx.in_msg.source == user_address and
            tx.in_msg.value >= amount_nano and
            tx.utime >= since):
            return True
    return False

Хранение ключей: non-custodial

Главный принцип: бот не должен хранить приватные ключи юзеров. Это юридический риск (хранение криптоактивов = лицензия) и бизнес-риск (взлом → потеря всех средств).

Архитектура:

  • Юзер держит ключи в @wallet или Tonkeeper.
  • Бот только инициирует транзакции через TON Connect.
  • Бэкенд только проверяет факт on-chain.

Custodial-сервис (бот хранит сиды юзеров) — для опытных команд с лицензией VASP, не для большинства проектов.

Сценарии для бота

Что работает в 2026:

  • Магазин цифровых товаров с оплатой в TON/USDT (комиссия меньше Stars).
  • P2P-сервис с эскроу через смарт-контракт (вместо доверия платформе).
  • Подписки на закрытый канал — оплата в TON.
  • Игры с in-game экономикой на jettons (как Notcoin, Hamster).
  • Donate-боты для блогеров (Tribute и аналоги).
  • Crypto-onramp/offramp через P2P-биржи внутри Telegram.

Jettons: свои токены проекта

Jettons — TON-эквивалент ERC-20. Создаются за 5 минут на @minter, дают возможность ввести лояльность как токен:

async def reward_user(user_address: str, amount: int):
    # Перевод 100 PROJECT-jettons из казны проекта
    boc = await build_jetton_transfer(
        from_wallet=PROJECT_WALLET,
        jetton_master=PROJECT_JETTON,
        to_address=user_address,
        amount=amount,
    )
    await ton_send(boc)

Геймификация: за активность юзеры получают токены, которые можно потратить в боте или продать на DEX (DeDust, STON.fi).

Анти-фрод

Главные угрозы:

  • Двойная трата — юзер шлёт TX, бот зачисляет, юзер откатывает.
  • Wrong network — юзер отправил с EVM-адреса (USDT TRC-20 ≠ USDT TON).
  • Front-running — менее критично в TON, чем в Ethereum.

Защита:

УгрозаРешение
Double-spendподтверждение через 1+ блока (≈10 сек), не in-mempool
Wrong networkстрогая валидация формата адреса
Replayуникальный externalId на каждый инвойс
Замороженный счётпроверка статуса аккаунта перед зачислением

Юридика

В РФ криптовалюты — имущество, не средство платежа. Принимать TON юридически = бартер или обмен. На практике серая зона:

  • Бизнес-модели «оплата в TON за услугу» работают, но налоги платятся как с обычной выручки.
  • Майнинг и P2P-обмен — отдельное регулирование с 2024.
  • Custodial-кошельки требуют лицензии VASP в большинстве юрисдикций.

Юристы рекомендуют выводить компанию на ОАЭ, Армению или БВО для криптобизнеса.

Топ-5 ошибок

  1. Зачисляют средства до подтверждения в блоке — теряют на rollback.
  2. Хранят сиды юзеров на сервере без HSM — взлом → потеря средств → судебные иски.
  3. Не валидируют комментарий транзакции — не могут связать платёж с заказом.
  4. Используют TON-адрес без bounceable флага — переводят на «висячие» аккаунты.
  5. Игнорируют различие основной/тестовой сети — публикуют в прод тестовые адреса.

Итого

TON в 2026 — рабочая платежная инфраструктура внутри Telegram с низкими комиссиями (0.01 TON за tx ≈ $0.05) и нативным UX через @wallet. Для большинства ботов хватает Wallet Pay; для приложений с собственной экономикой и DEX-интеграцией — TON Connect + jettons. Главное — non-custodial архитектура, грамотная валидация on-chain и понимание юридических рисков. Запуск под ключ — 2–4 недели, окупаемость зависит от ниши и аудитории.

Частые вопросы

TON или Stars: что выбрать для приёма платежей?

Stars — для микротранзакций (50–500 ₽), цифровых товаров, подписок внутри Telegram. Простота, нет KYC, но 30–52% эффективная комиссия. TON через Wallet Pay — для крупных платежей, услуг, B2B. Комиссия 0.5–1.5%, но требует, чтобы у юзера был кошелёк с TON. Часто берут оба и дают юзеру выбор.

Что такое TON Connect 2 и зачем он нужен?

Стандартный протокол подключения внешних TON-кошельков (Tonkeeper, MyTonWallet, OpenMask, @wallet) к dapp'у или Mini App. Без него каждый кошелёк требует отдельной интеграции; с ним пишете код один раз — работает со всеми. По функциональности похож на WalletConnect в Ethereum.

Сколько стоит транзакция в TON?

0.005–0.01 TON на простой перевод (~$0.03–0.06). Перевод jettons — 0.05–0.1 TON ($0.3–0.6). Это в 10–100 раз дешевле Ethereum-mainnet и сопоставимо с дешёвыми L2 (Arbitrum, Optimism). Скорость финализации — ~5 секунд.

Можно ли принимать USDT через бот?

Да, USDT-TON (jetton, выпущенный официально Tether в TON-сети) принимается через Wallet Pay и через TON Connect. Самый популярный способ оплаты в TON-экосистеме сейчас, потому что юзеры хотят стабильную валюту, а не волатильный TON. Комиссия — ~0.1 TON на транзакцию.

Что делать с холодным хранением выручки?

Не оставляйте всё на горячем кошельке. Стандарт: горячий кошелёк (для приёма) → автоматический перевод раз в час суммы выше N TON на холодный кошелёк (multisig от 2/3 ключей). Холодный — на железном устройстве (Ledger Nano X с TON-приложением). Это защищает от компрометации сервера.

Как конвертировать TON в рубли?

P2P-биржи (Bybit P2P, OKX P2P, Bitpapa) — самый ликвидный канал для РФ. Курс с дисконтом 1–2% от спота. Альтернатива — OTC через брокера для крупных сумм (>$10k). Внутри Telegram также работают P2P-боты (@p2p_market, @cryptoexchanger), но с большим спредом.

Можно ли запустить токен проекта на TON за день?

Технически — да, через @minter создаёте jetton за 5 минут. Дальше нужна экономика: эмиссия, распределение, листинг на DEX, ликвидность. На реальный продакшн с продуманным tokenomics — 2–4 недели работы. Перед запуском обязательно аудит контракта (хотя бы CertiK Lite или Arcanum).