Telegram-бот для платного канала: Stars или оплата картой
· 4 мин чтения · MTB Digital
Закрытый канал с платным доступом — одна из самых частых задач для Telegram-бота. Снаружи всё просто: человек заплатил и оказался в канале. Внутри есть два разных пути, и выбирать между ними нужно ещё до разработки — из-за правил самого Telegram. Разберём оба, а заодно где такие боты обычно ломаются.
Сначала о правилах Telegram
По правилам Telegram цифровые товары и услуги в ботах — а доступ в закрытый канал к ним относится — продаются только за Telegram Stars. Telegram прямо пишет, что может не показывать пользователям мобильных приложений бота, который продаёт цифровое через сторонние платёжные сервисы, независимо от способов оплаты, настроенных вне Telegram. Правила меняются, поэтому перед запуском перечитайте актуальную версию на сайте Telegram для разработчиков ботов.
Отсюда два варианта.
Вариант 1: подписка за Stars
Для каналов в Telegram есть встроенная платная подписка. Бот-администратор создаёт ссылку методом createChatSubscriptionInviteLink: в ней указаны цена в Stars и период (30 дней). Человек вступает по ссылке и платит, а продление и удаление при неуплате Telegram делает сам.
Плюсы: всё по правилам Telegram, минимум кода, не нужны эквайринг и онлайн-касса. Минусы: цена — в Stars, покупатель платит внутри Telegram, а вывод заработанных Stars и их учёт в доходах — отдельный вопрос, который стоит заранее обсудить с бухгалтером.
Вариант 2: оплата картой на вашем сайте
Человек платит на вашем сайте по договору эквайринга с банком, получает кассовый чек, а бот выдаёт ему доступ. Этот путь знаком российским продавцам, но правилам Telegram для цифрового он не соответствует: учитывайте риск ограничений со стороны Telegram.
Как это устроено:
- Выбор тарифа и оплата. Бот или сайт показывает тарифы и отправляет человека на защищённую страницу оплаты банка. Номер карты бот не видит и не хранит.
- Уведомление о платеже. После оплаты банк присылает на сервер уведомление. Доступ выдаётся именно по нему, а не по тому, что человек вернулся со страницы оплаты: вернуться можно и не заплатив.
- Приглашение в канал. Бот создаёт ссылку методом
createChatInviteLinkсmember_limit: 1и сроком действия (expire_date), а после вступления сразу отзывает её (revokeChatInviteLink). Ограничение касается одновременных участников, так что без отзыва ссылкой мог бы воспользоваться кто-то ещё. Другой путь — ссылка с заявками (creates_join_request): бот одобряет заявку оплатившего (approveChatJoinRequest) и отклоняет остальные. - Окончание срока. Бот удаляет участника вызовом
banChatMember, а сразу за ним —unbanChatMember, чтобы после новой оплаты человек мог вернуться.
Боту нужны права администратора канала: приглашать участников (can_invite_users, это же право нужно для заявок) и удалять их (can_restrict_members).
Продление — либо вручную: бот напоминает за несколько дней и присылает новую ссылку на оплату, либо автоматическими списаниями с сохранённой карты. Во втором случае банк должен разрешить рекуррентные платежи вашему магазину, покупатель — явно согласиться на списания (сумма и периодичность прямо в тексте согласия) и иметь возможность отменить подписку в любой момент.
Чеки. За каждую оплату продавец обязан выдать кассовый чек, а при возврате — чек возврата. Чек отправляют на почту или по номеру телефона, поэтому контакт нужно спросить до оплаты. Выдавать чеки можно через сервис фискализации банка или через свою онлайн-кассу; как это устроено у нас — в статье про чеки для сайта и бота.
Что подготовить для варианта с картой
- Статус продавца. Эквайринг банки подключают в основном ИП и юрлицам; самозанятым — не все и на своих условиях.
- Договор эквайринга и подключение чеков.
- Оферта с описанием услуги, сроков доступа и правил возврата.
- Персональные данные. Бот хранит как минимум идентификатор пользователя Telegram и почту для чека. Нужны политика обработки, отдельное согласие на обработку, база данных с персональными данными граждан России — на территории России, и уведомление в Роскомнадзор. Передачу данных через Telegram, чьи серверы за рубежом, по распространённой позиции считают трансграничной — о ней подают отдельное уведомление.
Где обычно ломается
- Доступ выдаётся по возвращению со страницы оплаты, а не по уведомлению банка.
- Уведомление потерялось, а повторной проверки статуса платежа нет — человек заплатил, доступа нет.
- Ссылку-приглашение не отзывают после вступления — ею делятся.
- Удаление по окончании срока делается только
banChatMember— человек не может вернуться даже после оплаты. - Нет чека возврата при отмене платежа.
Мы делаем таких ботов под задачу: подписку за Stars, оплату на вашем сайте по вашему договору с банком с чеками на каждую оплату и возврат, напоминания и понятную админку — и заранее говорим, что из этого соответствует правилам Telegram для вашего случая. Подробнее — на странице Telegram-ботов с оплатой.
Ещё статьи
- Как принимать оплату на форуме XenForo: способы и что выбратьПлатные группы в XenForo, почему встроенные PayPal и Stripe не подходят в России, агрегаторы, эквайринг банка и чеки 54-ФЗ — что выбрать для своего форума.
- Плагины FunPay Cardinal: как устанавливать безопасноПлагин Cardinal — это код с доступом к вашему аккаунту FunPay. Как проверить плагин до установки, что искать в коде и что делать, если ключ утёк.
- Сколько стоит Telegram-бот: из чего складывается ценаЧто влияет на стоимость бота, как устроена смета по этапам, почему этап оплачивается до начала работ и как описать задачу, чтобы оценка была точной.