GenEraser Bot. Добавление оплаты на примере ЮКасса
Доброго времени суток! Сегодня расскажу о боте, который создавал больше для себя, а также для тестирования оплаты в телеграм. GenEraser Bot - бот, который имеет две функции:
1. Удалять фон с изображений.
2. Генерировать изображение (на основе модели Kandinsky 3.0)
На коде бота останавливаться особо не будем, кому интересно, можете посмотреть по ссылке ниже. Сегодня же нас интересует другой момент, а именно момент оплаты.
Начинаем с того, что выбираем платежную систему, через которую будем производить платежи и регистрируемся там. Я выбрал ЮКасса. Осуществляем обработку платежей в коде.
Бота пишу с использованием библиотеки pyTelegramBotAPI, для начала нам нужно создать счет на оплату, для этого я создал отдельную функцию send_invoice, в котором создается счёт.
в ней мы уже вызываем метод bot.send_invoice, который имеет такие параметры:
chat.id - id чата с текущим пользователем
title - название платежа
description - описание платежа
invoice_payload - payload платежа
provider_token -токен платёжной системы, покажу позже, как мы его получим
currency - валюта
prices - цена, где label - название, amount - цена, в самой маленькой единице валюты, например, у меня в копейках, так как валюта рубль
start_parameter - параметры платежа (произвольная строка)
Итак, когда пользователь подтвердит платёж, Telegram пришлёт вам webhook с Update, который содержит объект PreCheckoutQuery. На этот запрос нужно ответить в течение 10 секунд, вызвав метод answerPreCheckoutQuery. (Из документации ЮКасса).
Можно также в этой функции реализовать проверку заказа, но у меня просто ответ. После успешного платежа, бот пришлет следующий вебхук SuccessfulPayment. Мы теперь можем отследить это событие и сделать нужные действия. У меня, к примеру, это начисление монеток.
На этом моменте с кодом мы разобрались, теперь покажу, как получить токен для платежной системы.
Переходим в телеграм в @botfather. Там выбираем своего бота, кнопка "Payments":
Выбираем нужную систему для оплаты, у меня это ЮКасса:
Коннектимся, если нужно протестировать систему, выбираем ТЕСТ, если уже есть готовый магазин на сервисе ЮКасса, то выбираем LIVE. Магазин должен работать по API в документации от ЮКасса это подробно описано.
Дальше, вас перебросит в бота от ЮКассы, где вы должны дать доступ к своим данным. Даём доступ и возвращаемся в @BotFather, имеем тот самый платёжный токен.
Как раз его нужно скопировать и вставить в наш код. На этом всё, всем хорошего кодинга, а я буду браться за свой новый пет-проект.
Следите за новостями, подписывайтесь на мой телеграм-канал. Заходите на мой сайт, там много интересного.
P.S. Кому интересно, бота можно глянуть по ссылке.