Как настроить платежи через бота в Telegram
Для кого эта инструкция
Инструкция подойдёт тем, кто уже написал бота самостоятельно или с помощью разработчика. Если вы используете конструктор (Manybot, Botobot, Botmaker или другой), настраивать платежи нужно будет по инструкции конструктора.
Важный момент: после настройки вы сможете принимать платежи в Telegram с российских банковских карт, из кошельков ЮMoney и с помощью SberPay. Если нужно больше способов, настройте платежи через API ЮKassa
Зарегистрируйте бота
- Придумайте боту имя и юзернейм. Пример:
- ЮKassa: платежи — имя бота
- YooKassaPaymentBot — это юзернейм бота
- Если юзернейм не занят, @BotFather пришлёт токен для доступа к боту. Не сообщайте его посторонним — даже службе поддержки ЮKassa или Telegram.Как только токен будет у вас, бот готов — можно переходить к следующему шагу.
Подключите своего бота к боту ЮKassa
Важный момент: перед подключением убедитесь, что ваш магазин работает на протоколе API — это можно проверить в настройках, в разделе Магазин
Если в настройках указан другой протокол (или поля с протоколом нет), напишите нам в чате — мы переведём магазин на API. Нужно будет указать ShopID магазина, к которому вы хотите привязать бота.
- Отправьте @BotFather команду
/mybots
. Нажмите на имя своего бота. - Откроется панель управления ботом. Выберите Payments.
- Если хотите сразу настроить реальные платежи, в меню выберите Connect ЮKassa: платежи. Если хотите сначала протестировать платежи, выберите Connect ЮKassa: тест (данные банковских карт для тестовых платежей есть на специальной странице).
- Откроется диалог с ботом ЮKassa — нажмите Запустить. После этого выберите Войти и выдать доступ, авторизуйтесь в ЮKassa и разрешите боту передавать данные из личного кабинета.
- Если захотите сменить магазин, введите
/settings
и нажмите Сменить магазин. Ещё через эту команду можно отозвать у бота доступ к ЮKassa — для этого выберите нужного бота и нажмите Удалить доступ к ЮKassa. - Вернитесь к диалогу с @BotFather. Он покажет вам токен, который нужен для приёма платежей. Токен всегда можно посмотреть через BotSettings → Payments.
Настройте бота для работы с платежами
- Реализуйте метод sendinvoice из платёжного API Telegram: в ответ на этот запрос ваш бот будет отправлять клиенту счёт на оплату. В счёте должна быть стоимость, название, описание товара, параметр
payload
и параметрprovider_token
— это тот самый токен, который выдал @BotFather после подключения вашего бота к боту ЮKassa.Посмотреть пример запроса sendinvoiceЕсли вам нужно получить от клиента адрес для доставки, реализуйте методShipping Query
. Когда пользователь укажет адрес, на этот запрос нужно ответить методомanswerShippingQuery
. В этом методе нужно передать способы доставки и их цены. - Когда пользователь подтвердит платёж, Telegram пришлёт вам webhook с Update, который содержит объект
PreCheckoutQuery
. На этот запрос нужно ответить в течение 10 секунд, вызвав методanswerPreCheckoutQuery
. - Если платёж пройдёт успешно, вы получите уведомление от Telegram (webhook с объектом
SuccessfulPayment
). Бота можно запрограммировать так, чтобы после успешного платежа он совершал определённое действие: например, подключал покупателю услугу или отправлял контент.В объектеSuccessfulPayment
из уведомления от Telegram найдите параметрprovider_payment_charge_id
: там будет номер транзакции в ЮKassa. Этот номер лучше сохранить: по нему можно будет найти платёж в личном кабинете.
Если настраивали отправку чеков через ЮKassa, нужно передавать в ЮKassa данные для фискализации
Для этого добавьте в запрос параметры:
need_phone_number
илиneed_email
send_email_to_provider
(если вы запрашивали у клиента эл. почту) илиsend_phone_number_to_provider
(если вы запрашивали у клиента телефон),provider_data
и в нём объектreceipt
. Подробности — в API ЮKassa (смотрите раздел Атрибуты — receipt).
Посмотреть пример
Телефон или почту вы можете запросить у клиента раньше, в диалоге с ботом. Тогда первые два параметра не нужны, достаточно
provider_data
с объектом receipt
.Посмотреть пример
Какими способами сможет заплатить покупатель
Банковской картой российского банка, кошельком ЮMoney или с помощью SberPay.
Как выглядит платёж через бота в Telegram
Чтобы пройти по пути покупателя, используйте бот @YooKassaTestShopBot
- Нажмите Начать (команда
/start
). Вам придёт сообщение с инструкцией и кнопкой оплаты. - Нажмите Заплатить — откроется платёжная форма.
- Нажмите Способ оплаты, введите данные карты и нажмите Заплатить.
- Подтвердите платёж — снова нажмите Заплатить.
Другие боты ЮKassa
Подходит тем, кто продаёт товары и услуги через мессенджеры или в соцсетях.
- Счёт и оплата — сразу в чате
- Детали и возврат платежей — в личном кабинете ЮKassa
- Когда покупатель оплатит счёт, бот пришлёт уведомление