Оплата в телеграм боте выглядит для покупателя как одна кнопка, но за ней стоит несколько решений: какой способ приёма денег разрешён для вашего товара, кто формирует чек, как обрабатывать возвраты и как не потерять платёж при сбое. Статья для тех, кто планирует бота с оплатой и хочет заранее понимать устройство, а не узнавать о нём после запуска.
Что вы продаёте: от этого зависит способ оплаты
Первый вопрос — не технический, а продуктовый. Telegram разделяет два вида продаж, и для них действуют разные правила:
| Что продаёте | Способ оплаты | Примеры |
|---|---|---|
| Физические товары | Платёжный провайдер или эквайер, рубли и другие валюты | Цветы, еда, одежда, запчасти |
| Услуги в реальном мире | Платёжный провайдер или эквайер | Запись в салон, ремонт, доставка, экскурсия |
| Цифровые товары и услуги внутри Telegram | Telegram Stars | Доступ к закрытому контенту, функции бота, внутриигровые предметы |
Граница не всегда очевидна. Например, онлайн-консультация с живым специалистом и доступ к записям курса внутри бота могут относиться к разным категориям. Если товар на границе, прежде чем начинать разработку, стоит свериться с актуальными правилами Telegram для платежей — переделывать оплату после модерации или жалобы дороже.
Вариант 1. Telegram Payments через провайдера
Встроенный механизм Telegram: покупатель не уходит из мессенджера, форма оплаты открывается прямо в приложении, а данные карты обрабатывает платёжный провайдер — бот их не видит и не хранит. Как это устроено по шагам:
- Владелец бота подключает провайдера через @BotFather и получает платёжный токен. Список провайдеров виден там же; работает ли выбранный с вашим юрлицом и валютой — уточняется у самого провайдера.
- Бот отправляет покупателю счёт: название, описание, сумма, при необходимости фото товара. Счёт можно запросить с контактными данными — имя, телефон, email, адрес доставки.
- Покупатель нажимает «Оплатить» и вводит данные карты в форме провайдера.
- Перед списанием Telegram отправляет боту запрос на подтверждение. Бот проверяет, что товар в наличии и цена актуальна, и должен ответить быстро — по документации на это отводится не больше 10 секунд.
- После успешной оплаты бот получает служебное сообщение с идентификаторами платежа в Telegram и у провайдера. На этом шаге заказ переходит в статус «оплачен», а покупатель получает подтверждение.
Если стоимость доставки зависит от адреса, счёт можно сделать «гибким»: Telegram пришлёт боту адрес, а бот вернёт доступные варианты доставки с ценой. Для интернет-магазинов с несколькими зонами доставки это удобнее, чем фиксированная сумма.
Вариант 2. Ссылка на платёжную страницу эквайера
Альтернатива — работать напрямую с российским эквайером через его API. Бот создаёт платёж на стороне эквайера, получает ссылку и показывает покупателю кнопку «Перейти к оплате». Человек оплачивает на странице эквайера, а эквайер присылает на ваш сервер уведомление о результате.
Когда этот вариант выигрывает:
- нужны способы оплаты, которые эквайер поддерживает на своей странице, — например, СБП, если она входит в его возможности;
- у компании уже есть договор с эквайером, который используется на сайте, и хочется одну схему учёта для всех каналов;
- нужны регулярные списания или другие функции, которые эквайер предоставляет в своём API;
- оплата идёт не только из бота, но и из Mini App или с сайта, и логика должна быть общей.
Минус — покупатель на время покидает Telegram, и часть людей может не вернуться в чат. Поэтому после оплаты важно, чтобы бот сам прислал подтверждение, не дожидаясь, пока человек вернётся и нажмёт «Я оплатил».
Цифровые товары: Telegram Stars
Stars — внутренняя валюта Telegram. Пользователи покупают их в приложении, а затем тратят в ботах и мини-приложениях. Для продажи цифровых товаров и услуг внутри Telegram используются именно Stars.
Технически механизм похож на обычный счёт: бот выставляет счёт в валюте Stars без платёжного токена провайдера, получает запрос на подтверждение и сообщение об успешной оплате. Заработанные Stars накапливаются на балансе бота. Условия их вывода и конвертации определяет Telegram — их стоит изучить по официальной документации до запуска, а не после.
Для бизнеса это означает, что цифровой продукт можно продать без договора с эквайером, но и экономика другая: цену нужно выражать в Stars, а доход получать по правилам Telegram. Как отражать такие поступления в учёте, лучше заранее обсудить с бухгалтером.
Чеки по 54-ФЗ
Если вы принимаете деньги от покупателей в России, чек обычно нужно сформировать через онлайн-кассу. Бот сам чеки не печатает: их выдаёт касса — собственная облачная касса компании или касса, которую предоставляет эквайер или его партнёр.
Задача бота — передать кассе корректные данные: позиции заказа, цены, количество, контакт покупателя для отправки электронного чека. В Telegram Payments счёт может запросить у покупателя email или телефон и передать их провайдеру вместе с дополнительными данными о заказе; какой формат нужен для чека, определяет провайдер. При оплате по ссылке эквайера эти данные передаются в его API при создании платежа.
Мы обычно на старте проекта выясняем у эквайера, как именно у него устроена фискализация, и согласуем с бухгалтером компании ставки налогов и признаки предмета расчёта. Это сфера, где лучше уточнить у специалистов, чем угадывать.
Возвраты и подписки
Возвраты
Возврат денег за оплату через провайдера или эквайера делается на его стороне — в личном кабинете или через API. Бот в этой схеме обновляет статус заказа и сообщает покупателю, что возврат оформлен. Если нужен частичный возврат или возврат по одной позиции заказа, это стоит заложить в логику сразу: чек на возврат тоже формируется через кассу.
Для Stars у Bot API есть отдельный метод возврата: бот может вернуть покупателю списанные Stars по идентификатору платежа. Решение о возврате при этом остаётся за вами, поэтому правила стоит описать в условиях продажи.
Подписки и регулярные платежи
Для цифровых продуктов Telegram поддерживает подписки с оплатой в Stars — параметры периода и продления описаны в документации. Для подписок в рублях нужны регулярные списания на стороне эквайера: покупатель привязывает карту с явным согласием, а сервер списывает оплату по расписанию и обрабатывает неудачи. Логика тарифов, пробных периодов и повторных попыток списания подробно разобрана в статье о подписках и биллинге.
Статусы платежей и вебхуки: где обычно ломается
Самые неприятные ошибки в платёжных ботах — не в форме оплаты, а в том, что происходит после. Заказ должен проходить понятный жизненный цикл: создан → ожидает оплаты → оплачен → выполнен, с ветками «отменён», «истёк срок оплаты», «возвращён». Чтобы статусы не расходились с реальностью, мы придерживаемся нескольких правил:
- Доверять только серверу. Нажатие «Я оплатил» или возврат пользователя на страницу ничего не доказывают. Статус меняется только по подтверждению от Telegram или уведомлению эквайера.
- Проверять уведомления. Входящий вебхук эквайера проверяется по подписи или повторным запросом статуса через его API — иначе кто угодно сможет отправить на сервер «оплата прошла».
- Сверять сумму и заказ. Сумма в уведомлении должна совпадать с суммой заказа, а платёж — относиться к нужному заказу.
- Обрабатывать повторы. Одно и то же уведомление может прийти несколько раз. Обработчик должен быть идемпотентным: повторное уведомление не создаёт второй заказ и не отправляет товар дважды.
- Не терять платежи при сбоях. Если сервер был недоступен, нужна периодическая сверка: какие платежи у эквайера прошли, а у вас остались в статусе «ожидает».
- Логировать всё. Каждый запрос и ответ платёжной системы сохраняется, чтобы разбирать спорные ситуации с покупателем и провайдером.
Если товар учитывается в 1С или складской системе, оплаченный заказ должен попадать туда автоматически, а остатки — проверяться до выставления счёта. Как устроена такая связка, рассказано в статье об интеграции с 1С.
Чек-лист перед запуском оплаты
- Определено, что продаётся: физический товар, услуга или цифровой продукт.
- Выбран способ: Telegram Payments с провайдером, ссылка эквайера или Stars.
- Заключён договор с провайдером или эквайером, понятна схема чеков.
- Платёжные токены и ключи хранятся только на сервере.
- Бот проверяет наличие и цену перед подтверждением оплаты.
- Статус заказа меняется только по подтверждению платёжной системы.
- Описаны возвраты и условия продажи, доступные покупателю.
- Платёж проверен в тестовом режиме, включая отмену и возврат.
Если бот с оплатой — часть более крупного проекта, полезно заранее оценить объём работ: на бюджет влияют способ оплаты, возвраты и интеграции. Факторы стоимости разобраны в статье «Сколько стоит разработка Telegram-бота».
Частые вопросы
Можно ли принимать оплату в боте без юрлица?
Для приёма платежей через провайдера или эквайера нужен договор с ним, а требования к статусу продавца определяет сам провайдер. Самозанятым и ИП стоит уточнить условия у выбранного сервиса.
Видит ли бот данные банковской карты покупателя?
Нет. Данные карты вводятся в форме провайдера или на странице эквайера, а бот получает только результат и идентификатор платежа.
Можно ли принимать оплату в Mini App, а не в чате?
Да. Мини-приложение может открыть тот же счёт Telegram — через провайдера или в Stars — либо перевести покупателя на страницу эквайера. Подтверждение оплаты в любом случае обрабатывает сервер.
Как протестировать оплату до запуска?
У провайдеров и эквайеров обычно есть тестовый режим с тестовыми картами. Проверять стоит не только успешную оплату, но и отказ, отмену, возврат и повторные уведомления.
Обсудим проект
Нужна похожая разработка?
Расскажите о задаче — уточним детали, предложим формат запуска и подготовим предварительную оценку. Это бесплатно.
Источники
Опубликовано · Обновлено