Урок №12. Подключение системы оплаты в telegram боте

Урок №12. Подключение системы оплаты в telegram боте IT, Python, Программирование, Telegram, Telegram бот, Бот, Программист, Чат-бот, Windows, Длиннопост, Telegram (ссылка)

В этом уроке мы добавим платежную систему для оформления платежей внутри нашего telegram бота.

Интеграция системы оплаты.

Для подключения системы оплаты мы должны перейти в BotFather и прописать команду /mybots. За счет этой команды мы можем выполнить редактирование наших ботов. Выбираем нашего бота. Тут мы можем узнать токен нашего бота, отредактировать его и так далее. Нас же интересует такая кнопка, как Payments, то есть настройка платежей в боте.

Урок №12. Подключение системы оплаты в telegram боте IT, Python, Программирование, Telegram, Telegram бот, Бот, Программист, Чат-бот, Windows, Длиннопост, Telegram (ссылка)

Telegram позволяет настроить сразу несколько различных систем оплаты для вашего бота. Также важно, что для настройки какой-либо систем платежей вы должны быть зарегистрированы в самой этой системе. Я буду регистрировать такую систему как ЮKassa. Если мы хотим подключить основную систему оплаты, то заходите на сайт ЮKassa, в организации и вводите свои данные, и буквально через 1 день вам пришлют договор с подписанием контракта с ЮKassa. Мы же пока подключим с вами тестовый магазин в нашем боте. Для этого в BotFather мы выбираем ЮKassa.

Урок №12. Подключение системы оплаты в telegram боте IT, Python, Программирование, Telegram, Telegram бот, Бот, Программист, Чат-бот, Windows, Длиннопост, Telegram (ссылка)

Теперь если у вас уже подключена основная система оплаты, то нажимаем на кнопку Connect ЮKassa Live. В моем случае я подключаю тестовый магазин, поэтому нажимаю на кнопку Connect ЮKassa Test. Далее нас перебрасывает в бота юкассы. Нажимаем кнопку start. Далее бот нас просит отправить ему идентификатор нашего магазина. Бот сформирует вам его и останется только переслать это число ему в ответ. Далее он попросит скинуть ваш shopArticleId, который он также сам сгенерирует. После чего ЮKassa зарегистрирует ваш тестовый магазин в BotFather.

Урок №12. Подключение системы оплаты в telegram боте IT, Python, Программирование, Telegram, Telegram бот, Бот, Программист, Чат-бот, Windows, Длиннопост, Telegram (ссылка)

Теперь возвращаемся в BotFather, где уже зарегистрирована наша платежная система. Он выводит нам токен, по которому м теперь сможем проводить оплату.

Урок №12. Подключение системы оплаты в telegram боте IT, Python, Программирование, Telegram, Telegram бот, Бот, Программист, Чат-бот, Windows, Длиннопост, Telegram (ссылка)

Импортируем токен в программу

Добавляем наш токен в файл token.csv, где у нас уже храниться token нашего бота. Сохраняем его в переменную, например, PAYMENT_TOKEN.

Урок №12. Подключение системы оплаты в telegram боте IT, Python, Программирование, Telegram, Telegram бот, Бот, Программист, Чат-бот, Windows, Длиннопост, Telegram (ссылка)

Теперь мы можем описать код, за счет которого мы будем высылать счет на оплату пользователю и при нажатии на специальную кнопку пользователь сможет перейти на систему оплаты и выполнить платеж через нашего бота.

Создание счета (invoice).

  • Давайте теперь напишем код, за счет которого мы будем высылать invoice пользователю. По сути это будет счет для оплаты и при нажатии на специальную кнопку, пользователь будет переходить на систему оплаты и выполнить платеж. Давайте будет отправлять пользователю счет для оплаты, когда нам будет приходить такая команда, как /pay. Так как в прошлом уроке мы работали с библиотекой aiogram, чтобы закрепить то, что мы узнали, продолжим работать на ней.
    Мы обращаемся к диспетчеру (то есть объекту dis), затем обращаемся к message_handler() и также указываем commands = ['pay']. Затем мы должны создать функцию, например, payment. В функции мы указываем параметр message и указываем тип этого параметра. Для этого ставим двоеточие, затем указываем types и тип этого параметра, то есть message. Теперь давайте отправим счет нашему пользователю. Для этого прописываем await bot.send_invoise. Данная функция принимает много параметров, давайте разберемся в них.
    Первым параметром передаем message.chat.id.

  • Title, где указываем название нашего товара.

  • Description - в нем мы пишем описание к нашему товару.(является не обязательным в передаче)

  • Provider_token, тут же мы обращаемся к нашему csv файлу и берем из него PAYMENT_TOKEN.

  • Currency необходимо передать трехзначный код валюты в формате ISO 4217. Полный список валют можно найти здесь.

  • Photo_url мы должны передать ссылку на наше фото(является не обязательным в передаче)
    Если вы добавили фото, то нужно указать параметры photo_height и photo_width, иначе изображение либо вообще не отобразится, либо отобразится некорректно.

  • Is_flexible отвечает за то, что финальная цена зависит от способа доставки (когда передаем True). При значении False этот параметр можно не писать.

  • Prices принимает массив из цен, поэтому передаем туда [price]. Переменную price мы напишем чуть позже.

  • Start_parameter является обязательным, документация утверждает, что можно использовать уникальный диплинкинг параметр, чтобы создать эту квитанцию.

  • Payload. Объем 1-128 байт. Рекомендуется использовать его для того чтобы идентифицировать инвойсы - он не показывается пользователю, но мы можем его прочитать при получении успешной оплаты.

Сейчас при запуске у нас будет выдаваться ошибка, так как у нас неизвестная переменная price. Давайте создадим ее. Для этого перед диспетчером мы пишем переменную price, куда должны указать цену товара. Мы обращаемся к types, к LabeledPrice(). Далее в label мы указываем название товара, а в amount передаем стоимость.
ВАЖНО! Нужно передавать целочисленное значение в минимально возможных единицах валюты. То есть если мы говорим о рублях, то передавать нужно копейки (123руб. как 123* 100).

Урок №12. Подключение системы оплаты в telegram боте IT, Python, Программирование, Telegram, Telegram бот, Бот, Программист, Чат-бот, Windows, Длиннопост, Telegram (ссылка)

Теперь при запуске бота и отправке команды /pay, нашему пользователю будет отправляться счет на оплату.

Урок №12. Подключение системы оплаты в telegram боте IT, Python, Программирование, Telegram, Telegram бот, Бот, Программист, Чат-бот, Windows, Длиннопост, Telegram (ссылка)

Сообщение пользователю после оплаты.

Теперь давайте будет отправлять сообщение пользователю после того, как он оплатит покупку. Для этого обращаемся к диспетчеру, далее обращаемся к message_handler. Указываем content_types и в качестве значение передаем types.ContentType.SUCCESSFUL_PAYMENT. Это означает, что наш метод будет срабатывать только в случае, если будет выполняться успешная оплата.
Далее в нем мы создаем асинхронную функцию и в ней отправляем некое сообщение пользователю.

Также если вы не хотите долго ждать, то все уроки и коды с уроков уже есть в моем telegram канале.

Также каждый день в telegram канале появляются полезные книги и пособия с материалом по программированию, а также выходят эффективные фишки, которые значительно упрощают вашу работу с программированием.