TON Pay: SDK для приёма платежей в TON 2026
@ton-pay/api — официальный SDK для приёма TON-платежей в web, Mini App и боте. Что внутри, отличия от Crypto Pay и Wallet Pay, как интегрировать.
- Автор
- TON Adoption Team · редакция
- Опубликовано
TON Pay — это SDK для приёма платежей в TON, опубликованный в составе TON Toolset в 2026 году. Конкурирует с Crypto Pay API и Wallet Pay, но с принципиально другой архитектурой — non-custodial.
Архитектура
[Mini App / web] → [TON Pay UI] → [User wallet] → [Merchant address]
↓
[TON Pay backend]
↓
[Order fulfillment]
В отличие от Crypto Pay:
- Custodial (Crypto Pay): User → Crypto Pay wallet → (merchant requests withdrawal).
- Non-custodial (TON Pay): User → Merchant wallet directly, no intermediary holding funds.
Минимальный backend
import { TonPayServer } from '@ton-pay/api';
const server = new TonPayServer({
merchantAddress: 'EQDxxx...', // ваш адрес
network: 'mainnet',
});
// Создать payment intent
const intent = await server.createIntent({
amount: '15 TON',
description: 'Premium subscription',
orderId: 'order-42',
});
// intent: { id, paymentUrl, expiresAt, paymentMemo }
// Когда пользователь заплатит, webhook вызовет:
server.on('payment:confirmed', async ({ orderId, txHash, amount }) => {
await db.markPaid(orderId);
await sendConfirmation(orderId);
});
Frontend (React пример)
import { TonPayCheckout } from '@ton-pay/ui-react';
<TonPayCheckout
intentId="intent-xyz"
onSuccess={(tx) => navigate(`/orders/${tx.orderId}/confirmation`)}
onCancel={() => console.log('User cancelled')}
/>
<TonPayCheckout> отрисовывает:
- QR-код для desktop-пользователя.
- Deeplink (
ton://transfer/...) для mobile. - Список поддерживаемых кошельков с логотипами.
- Status polling — показывает «ожидание», «подтверждено», «ошибка».
On-ramp интеграция
Самый ценный фичей — onramp flow. Если у пользователя нет TON:
<TonPayCheckout
intentId="intent-xyz"
enableOnramp={true}
onrampProviders={['mercuryo', 'moonpay']}
/>
Это даёт пользователю кнопку «Купить TON картой» прямо в чекауте — он покупает TON у Mercuryo/MoonPay, получает на свой кошелёк, и завершает платёж — всё за 5 минут. Подробнее — фиатные on-ramp для TON.
Jetton-платежи
const usdtIntent = await server.createIntent({
amount: '50 USDT',
jetton: 'usdt-jetton',
orderId: 'order-43',
});
Backend сам определяет цену в TON по курсу (через DEX-aggregator), формирует правильный jetton-transfer, и валидирует получение.
Когда брать TON Pay vs Crypto Pay vs Wallet Pay
| Критерий | TON Pay | Crypto Pay | Wallet Pay |
|---|---|---|---|
| Custody | Non-custodial | Custodial | Custodial |
| Контрагентский риск | Минимальный | Crypto Pay’s solvency | @wallet’s solvency |
| Сложность интеграции | Средняя | Низкая | Низкая |
| Время на вывод | Мгновенно (уже у вас) | Дни | Часы |
| Multi-currency | TON + jettons | Много токенов | Через @wallet |
| Open source | Да | Нет | Нет |
| Targeting | Любой web/Mini App | TG-боты, Mini Apps | TG-боты, Mini Apps |
TON Pay лучше для:
- Web-приложений вне Telegram.
- Когда важна non-custodial-архитектура (low risk).
- Когда хочется свой backend (control over data).
Crypto Pay / Wallet Pay лучше для:
- Простых TG-ботов, где не хочется свой backend.
- Микро-платежей и тип-чаевых.
Подробнее про альтернативы — в сравнении Crypto Pay vs Wallet и гайде по Crypto Pay API.
Webhooks и события
server.on('payment:pending', ({ orderId, txHash }) => {
// Транзакция в mempool, ждём подтверждения
});
server.on('payment:confirmed', ({ orderId, txHash, amount }) => {
// Транзакция подтверждена, можно отдавать товар
});
server.on('payment:failed', ({ orderId, reason }) => {
// Что-то пошло не так — недостаточно средств, неверный memo, etc
});
server.on('intent:expired', ({ orderId }) => {
// Intent истёк (например, через 24 часа без оплаты)
});
Что не покрыто
- Recurring payments / subscriptions — TON Pay (пока) on-chain не поддерживает подписки. Workaround: ваш backend сам генерирует new intent каждый месяц.
- Refunds — non-custodial, refund = мерчант сам отправляет TON обратно. SDK даёт helper
refund(txHash), но это manual. - Chargebacks — отсутствуют в крипте в принципе.
Что дальше
- Документация: docs.ton.org/ecosystem/ton-pay/overview.
- GitHub: RSquad/ton-pay.
- NPM: @ton-pay/api, @ton-pay/ui-react.
Если строите checkout в Mini App или web — TON Pay экономит недели работы. Если у вас простой TG-бот для приёма tip’ов — Crypto Pay проще.
Полный контекст Toolset — обзор от TON Foundation.
Частые вопросы
Что такое TON Pay и зачем он?
Чем отличается от Crypto Pay API и Wallet Pay?
Что включает SDK?
Можно ли принимать USDT через TON Pay?
Какие комиссии у TON Pay?
Безопасность? Что мешает поддельной транзакции?
Похожие материалы
- Новости28 мая 2026 г.
TON Toolset 2026: новый SDK-стек для разработчиков
Запуск TON Toolset: Acton, AppKit, WalletKit, TON Pay, MCP, Agentic Wallet — единый набор SDK от TON Foundation. Что внутри, для кого и с чего начать.
- Новости28 мая 2026 г.
AppKit: SDK для Mini Apps и dApp на TON в 2026
@ton/appkit — official SDK для frontend-разработки на TON: TON Connect, typed transactions, React-компоненты, DNS, DEX-котировки, стейкинг. Что внутри, как использовать.
- Основы21 мая 2026 г.
Как принимать TON в Telegram-боте для бизнеса в 2026
5 рабочих способов приёма TON-платежей в Telegram-боте: Crypto Pay, Wallet Pay, xRocket Pay, Tonkeeper Pay, кастомный с TON Connect. Что выбрать под нагрузку.
- Кошельки15 мая 2026 г.
Crypto Pay API: приём криптоплатежей в Telegram-боте за час
Практический гайд по Crypto Pay API от Crypto Bot: получение токена, createInvoice, проверка подписи webhook, поддерживаемые активы
- Основы18 мая 2026 г.
Crypto Bot vs Wallet в Telegram: сравнение 2026
Детальное сравнение двух главных Telegram-нативных финансовых сервисов: функции, поддерживаемые токены, комиссии, KYC, доступность в РФ, кому что подходит.