Принимать оплату с помощью Telegram Stars (Звёзд)

Принимать оплату с помощью 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):

Python
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 и др.:

  1. Зайдите в настройки интеграций/приема платежей внутри конструктора.

  2. Выберите платежную систему Telegram Stars.

  3. В сценарии (нодах) выберите блок «Ждать оплату» или «Выставить счет», укажите сумму в Звездах и привяжите действие по успешной оплате (например, отправку файла или открытие ссылки).

3. Как принимать Stars в Telegram-каналах?

Если речь идет не о боте, а о монетизации канала, код не нужен вообще:

  • Платные посты (Paid Media): При создании поста с фото или видео зажмите кнопку «Опубликовать» (в мобильном приложении) и выберите «Сделать содержимое платным», указав цену в Звёздах. Контент размоется для тех, кто не оплатил.

  • Платные реакции: В настройках канала перейдите в Реакции -> Включить платные реакции. Пользователи смогут отправлять автору Звёзды в виде реакций.

  • Платные пригласительные ссылки: Через управление каналом можно создать инвойс-ссылку, которая автоматически списывает Stars (например, ежемесячно) за нахождение в приватном канале.

Куда приходят Звёзды и как их вывести?

Все полученные Звёзды аккумулируются на балансе вашего бота или канала.

  1. Где смотреть баланс: Откройте профиль вашего бота (или настройки канала) -> вкладка «Баланс» (или Статистика -> Баланс). Там будет видна детальная история всех транзакций.

  2. Правила Telegram: По правилам платформы, для легальной работы в боте обязательно должны быть реализованы три команды для пользователей: /paysupport (поддержка по оплате), /support (общая поддержка) и /terms (пользовательское соглашение).

  3. Вывод средств: Накопленные Звёзды можно вывести через 21 день после их получения. Вывод осуществляется в криптовалюте Toncoin (TON) через официальную платформу Fragment. Оттуда их можно перевести на любой криптокошелек или биржу.