Как принимать стейблкоины в Telegram-боте
Платежный flow для Telegram-бота, который продает подписку, кредиты или цифровой доступ.
Telegram-бот может принимать стейблкоины без просьбы отправить tx hash в поддержку. Бот создает checkout или открывает постоянную платежную ссылку, передает ID пользователя и ждет подписанное событие перед выдачей доступа.
Выбор схемы зависит от того, насколько надежной должна быть привязка.
Простая платежная ссылка
Для фиксированного тарифа бот отправляет постоянный URL:
https://app.stendly.com/p/pl_example?client_reference_id=tg_123456После оплаты шлюз возвращает reference в webhook. Продавец находит Telegram-аккаунт и выдает роль, кредиты или время подписки.
Значение видно в URL. Пользователь может заменить его и оплатить другой аккаунт. Для подарочной подписки это может быть допустимо. Для доступа к приватным данным или конкретному заказу — нет.
Доверенная checkout session
Если связь должна быть надежной, backend бота создает checkout session через authenticated API. Telegram user ID или внутренний account ID передается с сервера. В ответ бот получает одноразовую ссылку и отправляет ее в чат.
Покупатель не может подменить доверенный reference через браузер. Backend также задает точную цену, заказ и return page.
Доступ нельзя выдавать по success page
Browser redirect можно закрыть, обновить или подделать. Бот должен ждать подписанный webhook платежного сервиса. Обработчик проверяет подпись, event ID и только после этого обновляет entitlement.
Обычно сохраняют Telegram user ID, price ID, payment event ID, срок доступа и transaction reference.
Telegram Stars или стейблкоины
Telegram Stars встроены в экосистему Telegram и могут быть проще для цифровых товаров, которые полностью продаются внутри приложения, с учетом правил Telegram и мобильных платформ. Стейблкоины полезны, если у продукта есть веб-версия, crypto-native аудитория или нужен settlement вне Stars.
Можно поддерживать оба варианта. Не стоит заставлять обычного пользователя заводить криптокошелек, если он предпочитает нативную покупку Telegram.
Что дает Stendly
В Stendly есть постоянные Payment Links, server-created checkout sessions и подписанные webhooks. Через один billing layer можно продавать разовый доступ, внутренние кредиты или recurring plan.
Бот может начать с публичной ссылки, а затем перейти на API, когда понадобится доверенная привязка. Доступны SDK для Node.js, Python и .NET, но для простой ссылки SDK не нужен.
Пример обработчика
if (event.type === "payment.succeeded") {
const userId = event.data.clientReferenceId;
await grantTelegramAccess(userId, event.data.priceId);
}В production также нужны проверка подписи, идемпотентность и сверка оплаченного price.