Принимать оплату с помощью Telegram Stars (Звёзд) для цифровых товаров или услуг можно двумя основными путями: через код (Bot API) или с помощью готовых конструкторов чат-ботов.
Главная фишка Stars — вам не нужно подключать сторонние платежные шлюзы (вроде Stripe или ЮKassa). Telegram сам выступает мерчантом, а поле provider_token в коде остается пустым.
Ниже разберем, как устроен этот процесс изнутри.
1. Схема интеграции через API (для разработчиков)
Если вы пишете бота самостоятельно (например, на Python с aiogram или Node.js с telegraf), весь процесс завязан на стандартном Bot Payments API.
Шаг 1. Выставление счета (sendInvoice или createInvoiceLink)
Чтобы пользователь увидел окно оплаты, бот должен сгенерировать инвойс.
-
currency— обязательно передаемXTR(это международный код Telegram Stars). -
provider_token— оставляем пустой строкой (""). -
prices— указываем стоимость в целых Звездах (1 единица = 1 Звезда).
Пример параметров на Python (aiogram):
await bot.send_invoice(
chat_id=message.chat.id,
title="Премиум подписка",
description="Доступ к закрытому функционалу бота на 1 месяц",
payload="user_id_12345_premium", # Ваши внутренние данные для проверки
provider_token="", # Для Stars всегда пусто!
currency="XTR",
prices=[LabeledPrice(label="Premium", amount=50)] # 50 Звезд
)
Шаг 2. Предпродажная проверка (pre_checkout_query)
Когда пользователь нажимает «Оплатить», Telegram отправляет в вашего бота запрос pre_checkout_query.
Критически важно: У вас есть ровно 10 секунд, чтобы ответить методу
answerPreCheckoutQuery(true). Если сервер зависнет или не ответит вовремя, платеж отменится. Здесь проверяется, есть ли товар в наличии и не изменилась ли цена.
Шаг 3. Фиксация оплаты (successful_payment)
После успешного списания Звёзд боту прилетает обычное сообщение, но со специальным полем successful_payment. В этот момент вы выдаете пользователю его цифровой товар, сохраняете транзакцию в БД и отправляете «Спасибо за покупку!».
2. Через конструкторы ботов (без кода)
Если вы используете платформы вроде LeadTex, PuzzleBot, SendPulse, Zenedu и др.:
-
Зайдите в настройки интеграций/приема платежей внутри конструктора.
-
Выберите платежную систему Telegram Stars.
-
В сценарии (нодах) выберите блок «Ждать оплату» или «Выставить счет», укажите сумму в Звездах и привяжите действие по успешной оплате (например, отправку файла или открытие ссылки).
3. Как принимать Stars в Telegram-каналах?
Если речь идет не о боте, а о монетизации канала, код не нужен вообще:
-
Платные посты (Paid Media): При создании поста с фото или видео зажмите кнопку «Опубликовать» (в мобильном приложении) и выберите «Сделать содержимое платным», указав цену в Звёздах. Контент размоется для тех, кто не оплатил.
-
Платные реакции: В настройках канала перейдите в Реакции -> Включить платные реакции. Пользователи смогут отправлять автору Звёзды в виде реакций.
-
Платные пригласительные ссылки: Через управление каналом можно создать инвойс-ссылку, которая автоматически списывает Stars (например, ежемесячно) за нахождение в приватном канале.
Куда приходят Звёзды и как их вывести?
Все полученные Звёзды аккумулируются на балансе вашего бота или канала.
-
Где смотреть баланс: Откройте профиль вашего бота (или настройки канала) -> вкладка «Баланс» (или Статистика -> Баланс). Там будет видна детальная история всех транзакций.
-
Правила Telegram: По правилам платформы, для легальной работы в боте обязательно должны быть реализованы три команды для пользователей:
/paysupport(поддержка по оплате),/support(общая поддержка) и/terms(пользовательское соглашение). -
Вывод средств: Накопленные Звёзды можно вывести через 21 день после их получения. Вывод осуществляется в криптовалюте Toncoin (TON) через официальную платформу Fragment. Оттуда их можно перевести на любой криптокошелек или биржу.