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

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

Тема в разделе Python создана пользователем MeXo
  • Теги
    python yoomoney yoomoney api автооплата бот
  • 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, зеленый = номер покупки, синий = ранд. символы
    примерно также делал

    Сверху