Разработка на TON в 2026: криптоплатежи в Telegram Mini Apps с TON Pay SDK
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 предлагает три структурных преимущества перед другими блокчейнами:
- Дистрибуция — ваше Mini App доступно внутри Telegram, мессенджера, которым ваши пользователи уже пользуются ежедневно. Не нужно проходить модерацию магазина приложений, скачивание, установка кошелька.
- Почти нулевые комиссии — комиссии транзакций TON в среднем составляют $0,005-0,01, что делает микроплатежи и внутриприложенческие покупки экономически целесообразными без батчинга или сложностей с L2.
- Субсекундная финальность — шардированная архитектура 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 убедитесь, что у вас есть:
- Зарегистрированный Telegram Bot с возможностями Mini App (
@BotFather→/newapp) - Адрес кошелька TON для приёма платежей (кошелёк мерчанта)
- Node.js 20+ и TypeScript 5.x для среды разработки
- Базовое знакомство с 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 | Фиат → Stars | 70% | Среднее (внутриприложенческая покупка) | Цифровые товары, казуальные игры |
| TON Pay (Toncoin) | Крипто-кошелёк | 100% (минус газ) | Выше (нужен кошелёк) | Крипто-нативные пользователи |
| TON Pay (USDT) | Крипто-кошелёк | 100% (минус газ) | Выше (нужен кошелёк) | Стабильные транзакции |
| Подписки | Крипто-кошелёк | 100% (минус газ) | Среднее (разовое одобрение) | SaaS, премиум-контент |
Чек-лист перед продакшн-запуском
Перед запуском Mini App с поддержкой платежей:
- Безопасность кошелька мерчанта — используйте мультисиг-кошелёк (например, TON Safe) для приёма платежей. Никогда не используйте кошелёк с одним ключом для средств мерчанта.
- Верификация платежей — всегда верифицируйте платежи на стороне сервера. Проверяйте сумму, payload и адрес отправителя.
- Обработка ошибок — обрабатывайте таймауты сети, отклонённые транзакции и недостаточный баланс. Показывайте понятные сообщения об ошибках.
- Политика возвратов — реализуйте механизм возвратов. Транзакции TON необратимы, поэтому возвраты требуют отдельной исходящей транзакции.
- Ограничение частоты запросов — защитите эндпоинт вебхука платежей от злоупотреблений. Валидируйте подписи вебхуков.
- Логирование — логируйте все платёжные события с хешами транзакций для разрешения споров.
- Тестирование — используйте тестнет 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 часа) перед переводом на кошелёк мерчанта.