Подключение Yoomoney к Telegram bot на python

Подключение Yoomoney к Telegram bot на python

Тема в разделе Python создана пользователем MeXo
MeXo Автор темы
Кто не знал, у яндекса имеется аналог кивасу в виде . Энтузиасты уже давно выкатили собсвтенный API для приёма платежей через данную кассу, и на самом деле это проще чем кажется. Сегодня мы ответим на вопрос "Как подключить yoomoney с помощью python?", простым и понятным языком.

1) Перед началом создания кассы создайте свой кошелек и пройдите идентификацию, помогать я с этим не буду, там всё и так понятно.

Прежде чем создавать API, нам потребуется зарегистрировать приложение (телеграм бот к примеру)
1.png


В этих пунктах указывайте данные куда прикручиваете кассу, оставьте ссылки на вашего бота, а в название для пользователей напишите имя проекта, например "Lozerix, BloodLust"

После регистрации, мы получим client_id, он нам понадобится далее. Сохраните его!
2.png

2) После того как мы получили client_id, мы начинаем выпускать API.

Для работы с API, нам понадобится библиотека кассы. Открываем CMD на своем компьютере и прописываем команду:

pip install yoomoney

После установки модуля, мы готовы к выпуску токена.
1 - Открываем редактор кода (любой)
2 - Пишем код ниже
3 - Заполняем данные

Код:
from yoomoney import Authorize

Authorize(
      client_id="YOUR_CLIENT_ID", # client_id полученный при регистрации приложения (B7598786A657D9CB4F455468BE00C2BD1590A07453456784F85133098E0D9)
      redirect_uri="YOUR_REDIRECT_URI", # redirect_uri указанный при регистрации приложения (https://lozerix.com/)
      scope=["account-info","operation-history","operation-details","incoming-transfers","payment-p2p","payment-shop",])

Запустив наш код, мы видем следующую картину:

Visit this website and confirm the application authorization request: https://yoomoney.ru/oauth2/authorize?requestid=31363837375f66373393230653537646630626538643437643163313632 Enter redirected url (https://yourredirect_uri?code=XXXXXXXXXXXXX) or just code:

Мы не боимся, открываем ссылку (h2/authorize?requestid=31363) и видим "Подтвердите, что вы разрешаете приложению «Testapp»:", жмем продолжить, получаем код, и в браузере ловим редирект. Вас перебросило в ваш телеграм бот? Всё прошло успешно! Возвращаемся в браузер и во вкладке редиректа открываем адресною строку, это и будет пункт "Enter redirected url (https://yourredirect_uri?code=XXXXXXXXXXXXX) or just code:"
6.png

3.png

Вводим всю ссылку в консоль и получаем access token
4.png

3) Выставление счета и его проверка

Для выставление счета воспользуемся доп. модулем. Пишем код:

Python:
from yoomoney import Client, Quickpay

token = "4900668167177708.8DAA1D1DD1B71256721C3C84783830FC8019948BB55F8C16D144DCC9FF4A31EB4D3D91F15C2606B97B6B4BE8D9C4B85B9DADFC21E4957A79E584CBB1762E16C634089911EFF29D3B676DA840A6FBE18A"
client = Client(token)

В токене есть значение до точки, "4900668167177708". Это номер нашего кошелька, запомните его.

Теперь то самое интересное, создание ссылки на оплату. Нам потребуется код:

quickpay = Quickpay(receiver="4900668167177708",quickpay_form="shop",targets="Sponsor this project",paymentType="SB",sum="Сумма пополнения",label="Уникальный комментарий плательщика"

По нашему уникальному комментарию мы будем находить платеж, поскольку у Яда нет плейсхолдеров при переводе, все ваши данные будут заморожены, я про коммент и сумму платежа. По этому платеж по sum сверять не нужно.

url = quickpay.redirected_url

Наша переменная url и будет ссылкой на оплату вашего счета.


5.png
Для проверки платежа пишем простой код (обязательно передавайте ваш уникальный комментарий!)

Python:
async def check_pay(message, comment):
    try:
        history = client.operation_history(label=str(comment))
        if history.operations == []:
            await main.bot.send_message(message.chat.id, f"⚜️Сожалеем но платеж не был обнаружен...")
        else:
            for operation in history.operations:
                if operation.status == 'success':
                    pass

    except Exception as e:
        print(e)

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

Ну а на этом всё, старался метод создания кассы максимально адаптировать на понятный язык, что бы новички тоже справились и смогли подключать кассу. Если чет не ясно, в обсуждении темы всегда подскажут. :pepecool:

yoomoney.ru, касса yoomoney, оплата на yoomoney, автооплата на yoomoney, касса yoomoney, подключение yoomoney, телеграм бот yoomoney, yoomoney API, yoomoney помогите, выебите меня

7
Асинхрон методы есть?


doger
label="Уникальный комментарий плательщика" должен каждому вызову оплаты присваивать разные рандомные значение? или обычный комментарий из набора букв вписывать?
MeXo
лучше к каждому вызову новые комменты создавать
Kleget
Что за ошибка? yoomoney.exceptions.EmptyToken: Response token is empty. Repeated request for an authorization token
лучше к каждому вызову новые комменты создавать
Можно айди пользователя запихнуть в label, он же у всех разный


MeXo
и из-за кривого кода потом абузить. Лучше всегда уник
vaznyoleg
у меня так: id + номер заказа + 5 рандомных символов.
выглядит так: 55467401114d8H1c
желтый = id, зеленый = номер покупки, синий = ранд. символы
примерно также делал

Сверху