Telegram Payments: как принимать оплату через бота
Telegram Payments — встроенный механизм приёма платежей прямо в мессенджере. Пользователь оплачивает товар или услугу, не покидая чат с ботом. Для бизнеса это означает сокращение воронки, повышение конверсии и отсутствие необходимости в отдельном сайте или лендинге.
Рассмотрим, как настроить приём платежей через Telegram-бота: от выбора платёжной системы до технической реализации.
Как работает Telegram Payments
Telegram выступает посредником между ботом и платёжными провайдерами. Схема выглядит так:
- Бот отправляет пользователю счёт (invoice) с описанием товара
- Пользователь нажимает «Оплатить» и выбирает способ оплаты
- Платёжный провайдер обрабатывает транзакцию
- Telegram отправляет боту уведомление об успешной оплате
- Бот выполняет действие: выдаёт доступ, отправляет файл, активирует подписку
Вся магия происходит внутри Telegram — пользователь не переходит на сторонние сайты.
Доступные платёжные провайдеры в России
ЮKassa
Крупнейший российский платёжный агрегатор с прямой интеграцией в Telegram.
Преимущества:
- СБП, банковские карты, SberPay, T-Pay
- Комиссия от 2,8% (зависит от оборота)
- Быстрое подключение за 1-3 дня
- Полный комплект документов для бухгалтерии
Ограничения:
- Требуется ИП или ООО (самозанятые — через партнёров)
- Модерация товаров и услуг
CloudPayments
Платёжный сервис с фокусом на рекуррентные платежи.
Преимущества:
- Подписки и рекурренты
- СБП, карты, Apple Pay, Google Pay
- Комиссия от 2,5%
- API для сложных сценариев
Ограничения:
- Требуется юридическое лицо
Robokassa
Агрегатор с поддержкой большого количества методов оплаты.
Преимущества:
- Более 50 способов оплаты
- Работа с самозанятыми
- Комиссия от 3%
- Система быстрых платежей
Тестовый провайдер Telegram
Для разработки и тестирования Telegram предоставляет встроенный тестовый провайдер. Платежи проходят в песочнице, деньги не списываются.
Подключение платежей через BotFather
Шаг 1: Создание бота
Если бот ещё не создан:
- Найдите @BotFather в Telegram
- Отправьте команду /newbot
- Укажите имя и username бота
- Сохраните полученный токен
Шаг 2: Подключение платёжного провайдера
Отправьте @BotFather команду /mybots
Выберите нужного бота
Нажмите Payments
Выберите провайдера из списка:
- Test — для разработки
- YooKassa — для российских платежей
- Smart Glocal — международные платежи
- Bank 131 — банковский провайдер
Следуйте инструкциям для подключения
Шаг 3: Получение токена провайдера
После регистрации в платёжной системе вы получите provider_token — он нужен для отправки счетов пользователям.
Техническая реализация
Отправка счёта (Python, aiogram)
from aiogram import Bot, types
from aiogram.types import LabeledPrice
bot = Bot(token="YOUR_BOT_TOKEN")
async def send_invoice_example(chat_id):
prices = [LabeledPrice(label="Курс по автоматизации", amount=99000)] # в копейках
await bot.send_invoice(
chat_id=chat_id,
title="Курс по автоматизации бизнеса",
description="Полный курс по внедрению ИИ и автоматизации процессов",
provider_token="YOUR_PROVIDER_TOKEN",
currency="RUB",
prices=prices,
payload="course_automation_2026",
start_parameter="course_automation",
need_email=True,
need_name=True,
)
```text
### Обработка успешной оплаты
```python
from aiogram import Dispatcher
from aiogram.types import SuccessfulPayment
dp = Dispatcher()
@dp.message_handler(content_types=SuccessfulPayment)
async def successful_payment(message):
payment_info = message.successful_payment
# Данные платежа
order_id = payment_info.invoice_payload
amount = payment_info.total_amount / 100 # конвертация из копеек
currency = payment_info.currency
# Выполняем действие после оплаты
await give_access_to_course(message.from_user.id, order_id)
await message.answer(
f"Оплата прошла успешно!\n"
f"Сумма: {amount} {currency}\n"
f"Доступ к курсу открыт."
)
```text
### Отправка счёта (Node.js, grammY)
```javascript
import { Bot } from "grammy";
const bot = new Bot("YOUR_BOT_TOKEN");
bot.command("buy", async (ctx) => {
await ctx.replyWithInvoice({
title: "Консультация по автоматизации",
description: "Персональная консультация 60 минут",
payload: "consultation_60min",
provider_token: "YOUR_PROVIDER_TOKEN",
currency: "RUB",
prices: [{ label: "Консультация", amount: 500000 }], // в копейках
});
});
bot.on("message:successful_payment", async (ctx) => {
const payment = ctx.message.successful_payment;
await ctx.reply(
`Оплата получена! Сумма: ${payment.total_amount / 100} RUB\n` +
`Ожидайте звонка в течение 30 минут.`
);
// Логика выдачи услуги
await deliverService(ctx.from.id, payment.invoice_payload);
});
bot.start();
```text
## Сценарии использования
### Продажа цифровых товаров
- Электронные книги и гайды
- Видеоуроки и курсы
- Шаблоны и пресеты
- Лицензии на ПО
После оплаты бот отправляет файл или ссылку на скачивание.
### Подписки и рекуррентные платежи
Настройте ежемесячную подписку через CloudPayments или ЮKassa. Бот автоматически продлевает доступ при успешном списании.
### Услуги и консультации
Приём оплаты за консультации, разборы, персональные сессии. После оплаты бот предлагает выбрать время слота.
### Физические товары
Интеграция с CRM и системами доставки. После оплаты бот запрашивает адрес доставки и передаёт заказ в обработку.
### Донаты и пожертвования
Для блогеров и авторов контента — приём донатов через бота с минимальной комиссией.
## Особенности работы с СБП
Система быстрых платежей (СБП) — самый популярный способ оплаты в России. Комиссия 0,4–0,7%, мгновенное зачисление.
Для подключения СБП:
1. Зарегистрируйтесь в ЮKassa или CloudPayments
2. В настройках включите СБП как метод оплаты
3. При отправке счёта укажите `need_phone_number=True`
4. Пользователь выберет СБП и оплатит по QR-коду
## Безопасность и Compliance
### Проверка подписи
Telegram подписывает все уведомления о платежах. Всегда проверяйте подпись на сервере:
```python
import hmac
import hashlib
def verify_telegram_payment(data: dict, bot_token: str) -> bool:
check_string = "\n".join(f"{k}={v}" for k, v in sorted(data.items()))
secret_key = hashlib.sha256(bot_token.encode()).digest()
signature = hmac.new(secret_key, check_string.encode(), hashlib.sha256).hexdigest()
return signature == data.get("hash")
```text
### Защита от повторной обработки
Используйте уникальный payload для каждого заказа и сохраняйте статус в базе данных. При повторном уведомлении проверяйте, не был ли заказ уже обработан.
### Персональные данные
Соблюдайте ФЗ-152: не храните данные карт, получайте согласие на обработку персональных данных. Платёжные провайдеры берут хранение данных на себя.
## Типичные ошибки
### Ошибка 1: Неправильная валюта
Указывайте валюту в формате ISO 4217: RUB, USD, EUR. Сумма всегда в минимальных единицах (копейках для RUB).
### Ошибка 2: Истёкший токен провайдера
Токены провайдеров могут истекать или отзывать. Обрабатывайте ошибки и информируйте пользователя.
### Ошибка 3: Отсутствие обработки неуспешных платежей
Всегда обрабатывайте сценарий, когда платёж не прошёл. Предложите пользователю альтернативные способы оплаты.
### Ошибка 4: Слишком сложная форма
Минимизируйте обязательные поля. Каждый дополнительный запрос снижает конверсию.
## Сравнение провайдеров
| Провайдер | Комиссия | СБП | Карты | Срок подключения |
|-----------|----------|-----|-------|------------------|
| ЮKassa | от 2,8% | ✅ | ✅ | 1-3 дня |
| CloudPayments | от 2,5% | ✅ | ✅ | 1-3 дня |
| Robokassa | от 3% | ✅ | ✅ | 1-5 дней |
| Smart Glocal | от 2,9% | ❌ | ✅ | 1-2 дня |
## Чек-лист запуска
**Подготовка:**
- [ ] Зарегистрирован бот через @BotFather
- [ ] Выбран платёжный провайдер
- [ ] Пройдена верификация в провайдере
- [ ] Получен токен провайдера
**Разработка:**
- [ ] Реализована отправка счетов
- [ ] Обработаны успешные платежи
- [ ] Обработаны ошибки оплаты
- [ ] Добавлена проверка подписи
**Тестирование:**
- [ ] Протестированы платежи в тестовом режиме
- [ ] Проверены все сценарии ошибок
- [ ] Протестирован на разных устройствах
**Запуск:**
- [ ] Переключены токены на боевые
- [ ] Настроено логирование платежей
- [ ] Подготовлена поддержка пользователей
## Примеры успешных кейсов
### Кейс 1: Продажа курса через бот
Онлайн-школа запустила продажу курса через Telegram-бота. Пользователь проходит тест, получает рекомендацию курса, оплачивает в два клика. Конверсия выросла на 35% по сравнению с оплатой через сайт.
### Кейс 2: Подписка на закрытый канал
Автор блога создал бота для продажи доступа к закрытому каналу. После оплаты бот автоматически выдаёт инвайт-ссылку. Обработка 500+ подписок в день без участия автора.
### Кейс 3: Консалтинговые услуги
Консультант принимает оплату за сессии через бота. Клиент выбирает услугу, оплачивает, получает календарь для записи. Сокращение времени от заявки до оплаты с 2 дней до 10 минут.
## Заключение
Telegram Payments — это не просто способ приёма денег, а инструмент сокращения пути клиента от интереса до покупки. Меньше переходов, меньше фрикций, выше конверсия.
Для старта достаточно:
1. Создать бота
2. Подключить ЮKassa или CloudPayments
3. Настроить отправку счетов
4. Обработать успешные платежи
Начните с тестового провайдера, отработайте сценарии, затем переключайтесь на боевые платежи.
---
**Нужна помощь?** Оставьте заявку на [flow-masters.ru](https://flow-masters.ru) — поможем настроить приём платежей в вашем Telegram-боте. Подписывайтесь на наш [Telegram-канал @flowmasters_ru](https://t.me/flowmasters_ru) — кейсы, статьи и новости об автоматизации.