Платежные системы/Telegram
Боты в Телеграм могут отправлять пользователям, группам или каналам специально отформатированные сообщения со счетами. Если ваш бот поддерживает режим inline, пользователи также могут отправлять счета в другие чаты через бота, в том числе в чаты один на один с другими пользователями.
Платежные системы, подключаемые в Телеграм:
Подключение платежной системы
Платежная система встроена в Телеграм.
Для того чтобы совершать платежи внутри мессенджера, нужно подключить платежную систему в боте @BotFather, для этого:
- Выбираем нужного бота в BotFather
- Нажимаем меню Payments.
- Следуя инструкциям бота, подключить доступную платежную систему и скопировать выданный токен:
Выставление счета клиенту (invoice)
Сообщения о счетах содержат фотографию и описание товара, а также заметную кнопку "Оплатить". При нажатии на эту кнопку открывается специальный платежный интерфейс в приложении Telegram. В этом интерфейсе пользователи могут выбрать дополнительные позиции товаров (если это разрешено продавцом) и ввести дополнительные данные, такие как имя, номер телефона или адрес электронной почты.
Для отправки инвойса в Телеграм используется функция tg_send_invoice():
tg_send_invoice (provider_token, platform_id, title, description, currency, prices, photo_url, payload, protect_content, disable_notification, need_name, need_phone_number, need_email, reply_to_message_id, reply_markup) | |
---|---|
Обязательные параметры:
|
Необязательные параметры:
|
prices:
Сумма указывается целым или дробным числом, например, 120.25 (через точку).
Пример: |
Если указан один из параметров need_name, need_phone_number или need_email, то перед оплатой, система запросит эти данные у пользователя и сохранит их в переменные клиента:
tg_payment_name, tg_payment_phone и tg_payment_email. |
Колбек об оплате
После успешной оплаты, придет колбек следующего содержания:
phone_best 473737685 2120.75 UAH 1955518436
здесь,
phone_best | название колбека | payload |
473737685 | ид чата, в который изначально был отправлен инвойс | platform_id |
2120.75 | полная сумма платежа | |
UAH | валюта | currency |
1955518436 | ид платежа в системе мерчанта |
Также, если запрашивали ввод имени, телефона и/или email, то у пользователя появятся новые переменные клиента:
tg_payment_name, tg_payment_phone и tg_payment_email
В случае успеха, колбек об оплате будет отправлен в личные сообщения пользователю.
Для этого обязательно взаимодействие клиента с ботом до платежа (клиент должен быть подписан на бота) |
После получения хука об оплате, платеж будет автоматически подтвержден, методом answerPreCheckoutQuery https://core.telegram.org/bots/api#answerprecheckoutquery |
Примеры
prices = [["товар", 2000], ["НДС", 20.75], ["упаковка", 100]] result = tg_send_invoice('632593626:TEST:sandbox_i38014109763', platform_id, 'Телефон У-200', 'Лучшая модель на рынке', 'UAH', prices, 'https://images11.popmeh.ru/cropped.jpg', 'phone_best', 0, 0, 1, 0, 1)
После выполнения функции, пользователю придет приглашение оплатить товар:
Пример с минимальным набором параметров
prices = [["курс супер", 20000]] result = tg_send_invoice('632593626:TEST:sandbox_i38014109763', platform_id, 'Курс - лучший бот', 'Супер курс, станешь мастером!', 'UAH', prices)
Пример с клавиатурой
prices = [["товар", 2000], ["НДС", 20.75], ["упаковка", 100]] result = tg_send_invoice('632593626:TEST:sandbox_i38014109763', platform_id, 'Телефон У-200', 'Лучшая модель на рынке', 'UAH', prices, 'https://helpix.ru/news/200405/181746/gf200_2.jpg', 'phone_best', 0, 0, 1, 1, 1, '', '{"inline_keyboard": [[{"text":"Оплатить", "pay":"True"}], [{"text":"Еще кнопка", "callback_data": "Еще кнопка"}]]}')
Полезные ссылки
- https://core.telegram.org/bots/payments#supported-currencies - Список поддерживаемых валют