Skip to main content

Асинхронный Python модуль для работы с QIWI API.

Project description

EasyQiwi 🥝

Модуль easyqiwi - асинхронный Python модуль для работы с QIWI API. Он позволяет легко интегрировать функционал QIWI кошелька в ваши Python приложения. С помощью easyqiwi вы можете получать профиль пользователя, баланс счетов, историю платежей, генерировать счета и многое другое!

Основные возможности

  • Получение профиля пользователя 👤
  • Управление счетами 💳
  • Просмотр истории платежей 🔍
  • Создание счетов для оплаты (инвойсов) 🧾
  • Асинхронная работа ⚙️
  • Поддержка прокси 🌐
  • Есть обработка каптчи 🔒
  • Использование аутентифицированной сессии в Selenium/Puppeteer и т.д. 🤖

Быстрый старт

Пример асинхронного использования easyqiwi для аутентификации в QIWI и создания счета для оплаты:

import asyncio
from easyqiwi import EasyQiwiAuthCore, EasyQiwiAPI, setup_proxy
from easyqiwi import AuthException

async def main():
    phone = '+79228133736'
    password = 'example'
    proxy_tuple = await setup_proxy('socks5', '162.210.192.136', '25881')

    qiwi = EasyQiwiAuthCore(phone, password, proxy_tuple)

    try:
        await qiwi.auth()
    except AuthException as e:
        print(e)
        exit()

    qiwi_api = EasyQiwiAPI(qiwi)
    p2p_resp = await qiwi_api.generate_p2p_public()
    p2p_key = p2p_resp['publicKey']
    widget_code = p2p_resp['widgetAliasCode']
    invoice_resp = await qiwi_api.create_invoice(p2p_key, widget_code, 100)
    invoice_uid = invoice_resp['invoice_uid']

    print(f'https://oplata.qiwi.com/form?invoiceUid={invoice_uid}')

    await qiwi.close()

if __name__ == '__main__':
    asyncio.run(main())

В этом примере мы создаем асинхронное соединение с QIWI, аутентифицируемся и создаем счет на оплату в 100 рублей.

Использование аутентифицированной сессии

Selenium

import asyncio
from easyqiwi import EasyQiwiAuthCore
from easyqiwi import AuthException
from selenium import webdriver

async def main():
    phone = '+79228133736'
    password = 'example'

    qiwi = EasyQiwiAuthCore(phone, password)

    try:
        await qiwi.auth()
    except AuthException as e:
        pass

    cookies = qiwi.cookies
    auth_data = qiwi.auth_data

    await qiwi.close()

    driver = webdriver.Chrome()
    driver.get('https://qiwi.com/')

    driver.get('https://qiwi.com/')

    for cookie in cookies:
        driver.add_cookie({
            'name': cookie['name'],
            'value': cookie['value'],
            'domain': cookie['domain']
        })

    driver.execute_script(f"localStorage.setItem('oauth-token-head', '{auth_data}');")

    driver.get('https://qiwi.com/main')
    await asyncio.sleep(100)
    driver.quit()

if __name__ == '__main__':
    asyncio.run(main())

Pyppeteer

import asyncio
from easyqiwi import EasyQiwiAuthCore
from easyqiwi import AuthException
from pyppeteer import launch

async def main():
    phone = '+79228133736'
    password = 'example'

    qiwi = EasyQiwiAuthCore(phone, password)

    try:
        await qiwi.auth()
    except AuthException as e:
        pass

    cookies = qiwi.cookies
    auth_data = qiwi.auth_data

    await qiwi.close()

    browser = await launch(headless=False)
    pages = await browser.pages()
    page = pages[0]

    for cookie in cookies:
        await page.setCookie({'name': cookie['name'], 'value': cookie['value'], 'domain': cookie['domain']})

    await page.goto('https://qiwi.com/')
    await page.evaluate(f"localStorage.setItem('oauth-token-head', '{auth_data}')")
    await page.goto('https://qiwi.com/main')
    await asyncio.sleep(100)
    await browser.close()

if __name__ == '__main__':
    asyncio.run(main())

Установка

Установить модуль easyqiwi можно через pip:

pip install easyqiwi

Небольшая документация

Аутентификация

Чтобы начать работу с QIWI API, необходимо произвести аутентификацию, используя номер телефона и пароль от QIWI кошелька:

qiwi = EasyQiwiAuthCore(phone, password)
await qiwi.auth()

Обработка каптчи

Можно обработать каптчу, если она выскакивает:

from easyqiwi import RecaptchaException

try:
	qiwi = EasyQiwiAuthCore(phone, password)
	await qiwi.auth()
except RecaptchaException as e:
	# и тут можно решать каптчу и затем вызвать
	await qiwi.auth(recaptcha='обработанная каптча')

Получение профиля

Получение данных профиля пользователя:

qiwi_api = EasyQiwiAPI(qiwi)
profile = await qiwi_api.get_current_profile()
print(profile)

История платежей

Получение истории платежей:

payments = await qiwi_api.get_payments(person_id, rows=10)
print(payments)

Создание инвойса

Генерация и отправка инвойса для оплаты:

invoice_resp = await qiwi_api.create_invoice(p2p_key, widget_code, 500, comment='За услуги')
invoice_uid = invoice_resp['invoice_uid']
print(f'Ссылка для оплаты: https://oplata.qiwi.com/form?invoiceUid={invoice_uid}')

Закрытие сессии

Не забудьте закрыть сессию при завершении работы:

await qiwi.close()

Прокси

Если вам необходимо использовать прокси, вы можете настроить его следующим образом:

proxy_tuple = await setup_proxy('socks5', 'proxy_ip', 'proxy_port', 'username', 'password')

Другие методы API

Помимо описанных выше, easyqiwi предоставляет доступ и к другим методам QIWI API:

Источники финансирования

Получить список источников финансирования пользователя:

sources = await qiwi_api.get_sources(person_id)

Идентификация

Получить данные по идентификации пользователя:

identification = await qiwi_api.get_identification(person_id)

Счета

Получить количество неоплаченных счетов по их статусам:

checkouts = await qiwi_api.get_checkouts() 

Карты

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

cards = await qiwi_api.get_cards()

Общая сумма платежей

Получить общую сумму входящих/исходящих платежей за период:

total_payments = await qiwi_api.get_total_payments(person_id, start_date, end_date)

Транзакция

Получить информацию по конкретной транзакции:

transaction = await qiwi_api.get_transactions(transaction_id) 

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

easyqiwi-1.0.2.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

easyqiwi-1.0.2-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file easyqiwi-1.0.2.tar.gz.

File metadata

  • Download URL: easyqiwi-1.0.2.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for easyqiwi-1.0.2.tar.gz
Algorithm Hash digest
SHA256 a1c0c775c0deeb97a9c3273b96386fc4c130319da062964fe0cd2240fc975328
MD5 d3b474b88a8b9eb0f7a3bd8f5400ec4c
BLAKE2b-256 7d8e1158ade8af6e7a0fd495217bb5d08d56c25df243ff17b1bed628501fd5a9

See more details on using hashes here.

File details

Details for the file easyqiwi-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: easyqiwi-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for easyqiwi-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7c592c1d7bd1f7704e88b8732c866e10601542ab43c48b3c133d625f0a2f98f8
MD5 ceb172101524ac769f0db075803bea69
BLAKE2b-256 03e2c3ad79b8ef31eec3560afa345f89138788a22353ab71c4a2b3bd3975170d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page