Подключение платежного бота в Telegram
Введение
Вы можете создать платежный бот Telegram, который позволит вашим клиентам безопасно оплачивать товары и услуги прямо в приложении. Ваш бот подключается к боту-провайдеру платежей, который взаимодействует с Платежным шлюзом и позволяет выполнять необходимые платежные операции.
Типовой сценарий использования бота такой:
- Вы передаете клиенту ссылку на чат вашего бота в Telegram.
- Клиент заходит в чат бота и выбирает товары, а затем нажимает кнопку оплаты.
- Открывается страница оплаты.
- Клиент оплачивает товар.
Создание и подключение бота
Чтобы начать получать платежи в Telegram, выполните следующие шаги:
- Создайте приложение для реализации бота с помощью Bot Payments API (см. обзорную документацию и подробное описание API).
- Перейдите в Telegram и зарегистрируйте бота с помощью бота @BotFather, используя команду
/newbot.- Вам будет выдано сообщение:
Alright, a new bot. How are we going to call it? Please choose a name for your bot.
Введите имя бота, которое будет отображаться в Telegram, напримерBank Acquiring Test Bot. - Вам будет выдано сообщение:
Good. Now let's choose a username for your bot. It must end in bot. Like this, for example: TetrisBot or tetris_bot.
Введите внутреннее имя бота, оканчивающееся наbot, например,bank_acquiring_test_bot. - В ответ вы получите токен бота в Telegram (
BOT_TOKEN), который нужно будет передать в URL запроса на выставление счетаsendInvoice(См. Запрос на выставление счета).
- Вам будет выдано сообщение:
- Подключите свой бот к боту-провайдеру. Для этого в @BotFather введите команду
/mybots, выберите своего бота, а затем в меню Payments выберите из списка платежный метод "Alfa Bank Belarus". - Нажмите соответствующую кнопку для подключения к боевому или тестовому серверу. См. также Адреса ботов-провайдеров.
- Вы будете перенаправлены в чат бота-провайдера, где нужно будет ввести значение
merchantLogin- логин вашей учетной записи в Платежном шлюзе. - Перейдите в @BotFather – в разделе Payments созданного ранее бота будет отображаться токен платежей (
PROVIDER_TOKEN), который нужно будет передать в запросе на выставление счетаsendInvoice(См. Запрос на выставление счета). - Ваш бот может использоваться для тестирования, либо приема платежей в соответствии с реализованным в боте сценарием.
Адреса ботов-провайдеров
Адрес бота-провайдера на тестовом сервере: @AlfaBankBYPaymentUATBot.

Адрес бота-провайдера на боевом сервере: @AlfaBankBYPaymentBot.

Запрос на выставление счета
При отправке запроса на выставление счета sendInvoice из приложения для вашего бота в Telegram API необходимо передать:
- Значение
BOT_TOKEN, полученное на шаге 2 - в URL запроса, - Значение
PROVIDER_TOKEN, полученное на шаге 6 - в параметреprovider_tokenзапроса.
Пример:
POST https://api.telegram.org/bot<BOT_TOKEN>/sendInvoice
Content-Type: application/json
{
"chat_id": 123456789,
"title": "Item name",
"description": "Item description",
"payload": "Unique ID",
"provider_token": "PROVIDER_TOKEN",
....
}Telegram после вызова sendInvoice присылает в бот магазина два ключевых события:
-
pre_checkout_query- его нужно подтвердить методомanswerPreCheckoutQuery, чтобы Telegram продолжил процесс оплаты. -
successful_payment- сообщение, которое подтверждает завершение транзакции и должно быть зафиксировано у вас в бэкенде (например, для выдачи товара или регистрации заказа).
Если эти события не обрабатываются вашим ботом, то:
- Telegram покажет пользователю таймаут,
- На шлюз данные о заказе не поступят.
Необходимые доработки со стороны мерчанта:
- Убедиться, что Telegram-бот имеет настроенный webhook.
- Реализовать обработку событий
pre_checkout_queryиsuccessful_payment.
На платежном шлюзе настроена интеграция с Telegram только в части приема sendInvoice, остальная логика (включая postback и подтверждение платежей) должна быть реализована на стороне мерчанта.
Если Telegram-бот не реагирует на события, или webhook работает нестабильно, рекомендуем обратиться в поддержку Telegram или привлечь разработчиков, которые смогут реализовать корректную интеграцию с Telegram Payments API.