Перейти к основному содержимому
ТелеграмMar 28, 2026

Разработка на TON в 2026: криптоплатежи в Telegram Mini Apps с TON Pay SDK

OS
Open Soft Team

Engineering Team

Экосистема TON в 2026 году

The Open Network (TON) эволюционировал из блокчейн-проекта с корнями в Telegram в одну из самых активно используемых криптовалютных экосистем в мире. По состоянию на март 2026 года цифры говорят сами за себя:

  • 500M+ активных пользователей ежемесячно в Telegram Mini Apps
  • 3 600+ активных Mini Apps в каталоге Telegram Mini App
  • 400M+ кошельков TON, созданных через Telegram Wallet, Tonkeeper и TON Space
  • $4,2 млрд общей заблокированной стоимости в DeFi-протоколах TON
  • 12M ежедневных ончейн-транзакций в основной сети TON

Эти цифры делают TON самым широко распространённым блокчейном по количеству активных пользователей, опережая Ethereum (включая L2) и Solana. Рост обеспечивается единственным фактором: интеграцией с Telegram. При 950M+ активных пользователей Telegram ежемесячно даже небольшой процент конверсии в Mini Apps и кошельки даёт колоссальные показатели.

Почему TON для платежей?

Для разработчиков, создающих приложения с поддержкой платежей, TON предлагает три структурных преимущества перед другими блокчейнами:

  1. Дистрибуция — ваше Mini App доступно внутри Telegram, мессенджера, которым ваши пользователи уже пользуются ежедневно. Не нужно проходить модерацию магазина приложений, скачивание, установка кошелька.
  2. Почти нулевые комиссии — комиссии транзакций TON в среднем составляют $0,005-0,01, что делает микроплатежи и внутриприложенческие покупки экономически целесообразными без батчинга или сложностей с L2.
  3. Субсекундная финальность — шардированная архитектура TON достигает времени блока ~5 секунд с практической финальностью за 1-2 блока. Пользователи видят подтверждённые платежи в течение 10 секунд.

TON Pay SDK: обзор архитектуры

TON Pay SDK — это официальная библиотека интеграции платежей для Telegram Mini Apps. Выпущенная в Q4 2025, она предоставляет единый API для:

  • TON Connect — аутентификация кошелька
  • Платежи в Toncoin — нативные переводы TON
  • Платежи в Jetton — стандарт токенов TRC-20: USDT, NOT и пользовательские токены
  • Подписочный биллинг — рекуррентные списания Jetton через предавторизованные смарт-контракты
  • Платёжные квитанции — ончейн-подтверждение платежа с метаданными

SDK доступен как npm-пакет (@tonconnect/pay-sdk) и поддерживает как клиентское (браузер), так и серверное (Node.js) использование.

Предварительные требования

Перед интеграцией TON Pay SDK убедитесь, что у вас есть:

  1. Зарегистрированный Telegram Bot с возможностями Mini App (@BotFather/newapp)
  2. Адрес кошелька TON для приёма платежей (кошелёк мерчанта)
  3. Node.js 20+ и TypeScript 5.x для среды разработки
  4. Базовое знакомство с Telegram Mini App API (window.Telegram.WebApp)

Шаг 1: Аутентификация кошелька через TON Connect

TON Connect — стандартный протокол подключения кошельков TON к dApp и Mini Apps. Он служит слоем аутентификации — перед приёмом платежей нужно знать, с какого кошелька пользователь хочет платить.

Настройка TON Connect

import { TonConnect } from "@tonconnect/sdk";
import { TonPaySDK } from "@tonconnect/pay-sdk";

// Инициализация TON Connect с вашим манифестом
const tonConnect = new TonConnect({
  manifestUrl: "https://yourapp.com/tonconnect-manifest.json",
});

// Манифест описывает ваше Mini App для кошельков
// Разместите этот JSON на вашем домене:
// {
//   "url": "https://yourapp.com",
//   "name": "Your Mini App",
//   "iconUrl": "https://yourapp.com/icon.png"
// }

// Проверка ранее подключённого кошелька
const existingWallet = tonConnect.wallet;
if (existingWallet) {
  console.log("Подключён:", existingWallet.account.address);
}

Поток подключения кошелька

Поток подключения кошелька различается в зависимости от провайдера кошелька пользователя:

import { toUserFriendlyAddress } from "@tonconnect/sdk";

async function connectWallet(): Promise<string> {
  // Генерация URL подключения для внешних кошельков (Tonkeeper и др.)
  const walletList = await tonConnect.getWallets();

  // Для Telegram Mini Apps приоритет имеет TON Space (встроенный)
  const tonSpace = walletList.find(
    (w) => w.appName === "tonspace"
  );

  if (tonSpace) {
    // TON Space открывается нативно внутри Telegram — без редиректа
    await tonConnect.connect({
      jsBridgeKey: tonSpace.jsBridgeKey,
    });
  } else {
    // Фолбэк на универсальную ссылку (открывает Tonkeeper/MyTonWallet)
    const universalLink = tonConnect.connect({
      universalLink: walletList[0].universalLink,
      bridgeUrl: walletList[0].bridgeUrl,
    });
    // Показать QR-код или перенаправить
    window.open(universalLink, "_blank");
  }

  // Ожидание подтверждения подключения
  return new Promise((resolve) => {
    tonConnect.onStatusChange((wallet) => {
      if (wallet) {
        const address = toUserFriendlyAddress(
          wallet.account.address
        );
        resolve(address);
      }
    });
  });
}

Сохранение сессии

Сессии TON Connect сохраняются между перезапусками Mini App. SDK хранит данные сессии в localStorage. При последующих запусках проверьте существующее подключение перед запросом к пользователю:

async function initAuth(): Promise<string | null> {
  await tonConnect.restoreConnection();
  if (tonConnect.connected && tonConnect.wallet) {
    return toUserFriendlyAddress(
      tonConnect.wallet.account.address
    );
  }
  return null;
}

Шаг 2: Приём платежей в Toncoin

После подключения кошелька можно запрашивать нативные переводы TON через TON Pay SDK.

Простой запрос платежа

import { TonPaySDK, PaymentRequest } from "@tonconnect/pay-sdk";

const tonPay = new TonPaySDK({
  tonConnect,
  merchantWallet: "EQD...адрес-вашего-мерчанта",
  // Опционально: URL вебхука для серверного подтверждения
  webhookUrl: "https://yourapi.com/webhooks/ton-pay",
});

async function requestPayment(
  amount: number,
  orderId: string
): Promise<string> {
  const payment: PaymentRequest = {
    amount: amount.toString(), // Сумма в TON (например, "1.5")
    payload: orderId,          // Сохраняется в комментарии транзакции
    description: `Заказ #${orderId}`,
  };

  // Это открывает экран подтверждения кошелька
  const result = await tonPay.requestPayment(payment);

  if (result.status === "confirmed") {
    // Транзакция подтверждена в блокчейне
    return result.txHash;
  } else if (result.status === "rejected") {
    throw new Error("Платёж отклонён пользователем");
  } else {
    throw new Error(`Ошибка платежа: ${result.error}`);
  }
}

Серверная верификация платежа

Никогда не доверяйте клиентским подтверждениям платежа. Верифицируйте каждый платёж на бэкенде:

import { TonClient } from "@ton/ton";
import { Address, fromNano } from "@ton/core";

const tonClient = new TonClient({
  endpoint: "https://toncenter.com/api/v2/jsonRPC",
  apiKey: process.env.TONCENTER_API_KEY,
});

async function verifyPayment(
  txHash: string,
  expectedAmount: string,
  expectedPayload: string,
  merchantAddress: string
): Promise<boolean> {
  const tx = await tonClient.getTransaction(
    Address.parse(merchantAddress),
    txHash
  );

  if (!tx) return false;

  // Проверка суммы
  const receivedAmount = fromNano(tx.inMessage?.value ?? 0n);
  if (parseFloat(receivedAmount) < parseFloat(expectedAmount)) {
    return false;
  }

  // Проверка payload (ID заказа в комментарии транзакции)
  const payload = tx.inMessage?.body?.toString() ?? "";
  if (payload !== expectedPayload) {
    return false;
  }

  return true;
}

Шаг 3: Платежи в Jetton (токенах)

Jetton — это TON-эквивалент токенов ERC-20. Наиболее распространённый Jetton для платежей — USDT на TON (Tether), в обращении которого находится более $1,2 млрд в сети TON по состоянию на март 2026 года.

Запрос платежа в Jetton

import { JettonPaymentRequest } from "@tonconnect/pay-sdk";

async function requestUSDTPayment(
  amount: number,
  orderId: string
): Promise<string> {
  const USDT_MASTER = "EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs";

  const payment: JettonPaymentRequest = {
    jettonMaster: USDT_MASTER,
    amount: (amount * 1e6).toString(), // USDT имеет 6 десятичных
    payload: orderId,
    description: `$${amount} USDT — Заказ #${orderId}`,
    // Пересылка TON на газ (перевод Jetton требует ~0.05 TON)
    forwardTonAmount: "50000000", // 0.05 TON в нанотонах
  };

  const result = await tonPay.requestJettonPayment(payment);

  if (result.status === "confirmed") {
    return result.txHash;
  }
  throw new Error(`Ошибка платежа Jetton: ${result.error}`);
}

Интеграция пользовательского Jetton

Если у вас есть собственный Jetton (для внутриприложенческой валюты, бонусных баллов и т.д.), интеграция идентична — просто замените адрес jettonMaster:

const MY_TOKEN_MASTER = "EQA...ваш-jetton-master-контракт";

const payment: JettonPaymentRequest = {
  jettonMaster: MY_TOKEN_MASTER,
  amount: "1000000000", // Сумма в минимальных единицах
  payload: "premium-upgrade",
  description: "1000 APP Tokens — Премиум-апгрейд",
  forwardTonAmount: "50000000",
};

Шаг 4: Подписочный биллинг

TON Pay SDK поддерживает рекуррентные платежи через предавторизованные подписочные контракты. Пользователь утверждает максимальную сумму списания и периодичность, и ваш бэкенд может инициировать списания без дополнительного взаимодействия с пользователем.

import { SubscriptionRequest } from "@tonconnect/pay-sdk";

async function createSubscription(
  userId: string
): Promise<string> {
  const subscription: SubscriptionRequest = {
    jettonMaster: USDT_MASTER,
    amount: "4990000",          // $4.99 за период
    period: 30 * 24 * 60 * 60,  // 30 дней в секундах
    maxCharges: 12,              // Максимум 12 списаний (1 год)
    payload: `sub-${userId}`,
    description: "Премиум — $4.99/месяц",
  };

  const result = await tonPay.createSubscription(subscription);

  if (result.status === "active") {
    // Сохраните адрес подписочного контракта для будущих списаний
    return result.subscriptionAddress;
  }
  throw new Error("Ошибка создания подписки");
}

Стратегии монетизации Telegram Mini Apps

Платежи — лишь часть пазла монетизации. Вот как успешные Mini Apps комбинируют несколько источников дохода:

1. Рекламная платформа Telegram

Нативная рекламная платформа Telegram позволяет Mini Apps показывать рекламу и получать доход в TON. Интеграция требует регистрации как издателя через @AdsBot:

import { TelegramAds } from "@tma.js/ads-sdk";

const ads = new TelegramAds({
  publisherId: "your-publisher-id",
});

// Показать рекламное видео с вознаграждением
async function showRewardedAd(): Promise<boolean> {
  const ad = await ads.loadRewarded();
  if (ad) {
    const result = await ads.showRewarded(ad);
    return result.completed; // Пользователь досмотрел рекламу
  }
  return false;
}

Доход за показ варьируется по географии, но топовые Mini Apps сообщают о $5-15 eCPM для видео с вознаграждением в странах Tier 1.

2. Внутриприложенческие покупки через Telegram Stars

Telegram Stars — встроенная виртуальная валюта Telegram, доступная с 2024 года. Пользователи покупают Stars за фиат (Apple Pay, Google Pay, банковская карта) и тратят в Mini Apps. Разработчики получают 70% дохода от Stars.

// Запрос платежа в Stars через Telegram WebApp API
function requestStarsPayment(
  title: string,
  amount: number
): void {
  window.Telegram.WebApp.openInvoice(
    {
      title,
      description: `Покупка за ${amount} Stars`,
      payload: JSON.stringify({ item: title }),
      currency: "XTR", // Код валюты Telegram Stars
      prices: [{ label: title, amount }],
    },
    (status) => {
      if (status === "paid") {
        // Верификация на бэкенде через Bot API
        verifyStarsPayment(title);
      }
    }
  );
}

3. Крипто-нативная монетизация

Сочетайте платежи TON Pay SDK с DeFi-механиками:

  • Токен-гейтинг — требуйте наличие определённого Jetton или SBT (Soulbound Token) для доступа к премиум-функциям
  • NFT-маркетплейс — продажа цифровых коллекционных предметов (TON NFT используют стандарт TEP-62)
  • Стейкинговые награды — позвольте пользователям стейкать TON или Jetton в смарт-контракте вашего Mini App для получения дохода
  • Реферальные комиссии — выплата реферальных бонусов в Jetton через смарт-контракты

Сравнение моделей монетизации

МодельСпособ оплатыДоля разработчикаТрение для пользователяЛучше для
Реклама TelegramРекламные показы50-70% дохода от рекламыНизкое (пассивно)Бесплатные приложения с высоким DAU
Telegram StarsФиат → Stars70%Среднее (внутриприложенческая покупка)Цифровые товары, казуальные игры
TON Pay (Toncoin)Крипто-кошелёк100% (минус газ)Выше (нужен кошелёк)Крипто-нативные пользователи
TON Pay (USDT)Крипто-кошелёк100% (минус газ)Выше (нужен кошелёк)Стабильные транзакции
ПодпискиКрипто-кошелёк100% (минус газ)Среднее (разовое одобрение)SaaS, премиум-контент

Чек-лист перед продакшн-запуском

Перед запуском Mini App с поддержкой платежей:

  1. Безопасность кошелька мерчанта — используйте мультисиг-кошелёк (например, TON Safe) для приёма платежей. Никогда не используйте кошелёк с одним ключом для средств мерчанта.
  2. Верификация платежей — всегда верифицируйте платежи на стороне сервера. Проверяйте сумму, payload и адрес отправителя.
  3. Обработка ошибок — обрабатывайте таймауты сети, отклонённые транзакции и недостаточный баланс. Показывайте понятные сообщения об ошибках.
  4. Политика возвратов — реализуйте механизм возвратов. Транзакции TON необратимы, поэтому возвраты требуют отдельной исходящей транзакции.
  5. Ограничение частоты запросов — защитите эндпоинт вебхука платежей от злоупотреблений. Валидируйте подписи вебхуков.
  6. Логирование — логируйте все платёжные события с хешами транзакций для разрешения споров.
  7. Тестирование — используйте тестнет TON для разработки. TON Pay SDK поддерживает режим тестнета через флаг конфигурации.

Часто задаваемые вопросы

Сколько пользователей могут охватить TON Mini Apps?

Telegram имеет 950M+ активных пользователей ежемесячно. Mini Apps доступны всем без установки чего-либо. Топовые Mini Apps (Notcoin, Hamster Kombat) достигли 30-40M пользователей. Реалистичный адресный рынок для хорошо распространённого Mini App — 1-10M пользователей.

Какие комиссии за TON-платежи?

Нативные переводы TON стоят примерно 0,005-0,01 TON (0,01-0,02 при текущих ценах). Переводы Jetton стоят чуть больше из-за дополнительного выполнения смарт-контракта, обычно 0,03-0,05 TON (0,06-0,10). Комиссии оплачивает отправитель, а не мерчант.

Можно ли принимать фиатные платежи в Telegram Mini App?

Да, через Telegram Stars (встроенные) или сторонних платёжных провайдеров. Telegram Stars использует нативную платёжную инфраструктуру Telegram с поддержкой Apple Pay, Google Pay и банковских карт. Для прямого приёма фиата можно интегрировать Stripe или других провайдеров, но условия Telegram требуют использования их Bot Payments API.

Требуется ли KYC для приёма TON-платежей?

Для мерчанта: зависит от юрисдикции и объёма транзакций. Большинство стран требуют лицензирования передатчика денежных средств или платёжного процессора выше определённых порогов. Для пользователей: создание кошелька TON не требует KYC, но централизованные биржи, где пользователи покупают TON, применяют KYC.

В чём разница между TON и Ethereum для платежей?

TON предлагает более низкие комиссии ($0,01 против $0,50-5,00 на Ethereum L1), более быструю финальность (10 секунд против 12-15 минут для сильной финальности на Ethereum) и встроенную дистрибуцию через Telegram. Ethereum имеет более крупную DeFi-экосистему, больше институционального принятия и более сильные гарантии децентрализации. Для потребительских платёжных приложений интеграция TON с Telegram — решающее преимущество.

Как обрабатывать споры и чарджбэки?

Блокчейн-платежи необратимы — чарджбэков нет. Необходимо реализовать собственную систему возвратов и разрешения споров. Лучшая практика: удерживайте средства в эскроу-смарт-контракте на период спора (24-72 часа) перед переводом на кошелёк мерчанта.