Оплата звёздами в Telegram-боте — как это работает и где боты теряют деньги
Содержание
Оплата звёздами в Telegram-боте устроена так. Бот присылает покупателю счёт в звёздах, Telegram проводит оплату внутри мессенджера, а потом присылает боту подтверждение, что деньги пришли. Только после этого подтверждения бот выдаёт товар: генерации, файл, доступ. Кассы, договора с банком и ввода карт на стороне бота нет — всё делает Telegram. Владелец потом выводит звёзды в рубли по $0,013 за звезду.
Все мои боты берут оплату так. Ниже — как это работает и на чём легко ошибиться.
Почему именно звёзды
Звёзды — внутренняя валюта Telegram для цифровых товаров и услуг. Покупатель платит привычным способом: картой или через магазин приложений на телефоне, а в боте видит понятную цену вроде «50 ⭐». Для владельца бота это значит:
- не нужен эквайринг и договор с банком;
- не нужно хранить данные карт — их бот вообще не видит;
- платёж проходит в один тап внутри Telegram, без перехода на сайт.
Цена удобства — комиссия: покупатель платит за звёзды больше, чем вы получаете при выводе. Разницу забирают магазины приложений и Telegram.
Как проходит платёж — 4 шага
- Счёт. Человек выбирает пакет, например «5 генераций за 50 ⭐», и бот присылает счёт.
- Проверка заказа. Перед списанием Telegram спрашивает бота: «Всё в порядке с этим заказом?» Бот сверяет пакет, сумму и покупателя и отвечает «да» или «нет». Если цена успела измениться или пакета больше нет, оплату лучше отклонить.
- Подтверждение. Telegram списывает звёзды и присылает боту сообщение об успешной оплате. Только сейчас деньги точно получены.
- Выдача. Бот начисляет покупку и показывает новый баланс.
Если вы собираете бота с ИИ, эти шаги называются так: счёт — sendInvoice с валютой XTR, проверка — pre_checkout_query, подтверждение — successful_payment. Запоминать не нужно, но эти слова пригодятся в задании для ИИ.
Как проверить оплату, не тратя денег
У Telegram есть тестовое окружение для платежей, но проще поступить по-другому. Сделайте временный пакет за 1 звезду и купите его сами. Если оплата прошла и покупка начислилась — всё работает. Потом обязательно удалите тестовый пакет, чтобы его не купили другие.
Три ошибки, на которых боты теряют деньги
1. Выдавать товар после счёта, а не после оплаты. Открытый счёт ничего не значит: человек может его закрыть. Начислять можно только по подтверждению оплаты.
2. Начислять дважды за одну оплату. Telegram может прислать одно и то же событие повторно, например после сбоя связи. Бот должен запоминать номер платежа и не начислять пакет второй раз. Иначе один покупатель получит два пакета по цене одного.
3. Списывать попытки при ошибке. Если генерация не удалась или картинка не отправилась, попытка не должна сгорать. Человек платил за результат, а не за нажатия. Если всё сломалось после оплаты, честнее вернуть звёзды: Telegram позволяет боту сделать возврат.
Плюс две мелочи, которые избавят от лишних обращений. Храните историю покупок с датой, пакетом, суммой и номером платежа. А купленные генерации держите отдельно от бесплатных, чтобы баланс всегда сходился.
Какую цену ставить
Считайте от того, сколько стоит вам один результат. Пример из моих расчётов: пакет из 5 картинок за 50 ⭐, одна картинка обходится в 2 ₽. Пакет приносит примерно 50 ₽ после вывода, на его выполнение уходит 10 ₽. Остаток покрывает бесплатные пробы и сервер. Полный расчёт на месяц — в статье «Сколько зарабатывает Telegram-бот».
Удобная схема для старта — бесплатная проба и платное продолжение. Например, 1 кружок в день бесплатно, а дальше 5 ⭐, как в моём боте для кружков. Человек сначала убеждается, что всё работает, а потом платит.
Как подключить оплату к своему боту
Если бот собирается с ИИ, оплата добавляется одним подробным заданием. Нужно перечислить шаги выше, требование не начислять дважды и тестовый пакет за 1 звезду. Как собрать самого бота без программирования — в статье «Как создать бота в Telegram с ИИ».
В курсе SYNDICATE есть готовое задание для ИИ на подключение оплаты звёздами, видео с проверкой и отдельный урок о том, что делать, если человек заплатил, а результат не получил.
Частые вопросы
Как принимать оплату звёздами в Telegram-боте?
Бот отправляет счёт в звёздах, проверяет заказ перед списанием и выдаёт товар только после подтверждения оплаты от Telegram. Касса и договор с банком не нужны.
Сколько получает владелец бота за одну звезду?
На момент написания — $0,013 за звезду при выводе. 1 000 звёзд — это $13. Покупатель платит за звёзды больше: разницу забирают магазины приложений и Telegram.
Как проверить оплату без больших трат?
Создайте временный пакет за 1 звезду, купите его сами и проверьте начисление. После проверки удалите этот пакет.
Можно ли вернуть звёзды покупателю?
Да, бот может сделать возврат оплаты в звёздах. Это честный выход, если после оплаты результат выдать не удалось.
Нужна ли касса или самозанятость?
Для приёма звёзд в боте касса не нужна — платёж проводит Telegram. Как учитывать доход после вывода, уточните по своей налоговой ситуации.