easyqiwi


Nameeasyqiwi JSON
Version 1.0.2 PyPI version JSON
download
home_pagehttps://github.com/DedInc/easyqiwi
SummaryАсинхронный Python модуль для работы с QIWI API.
upload_time2024-02-21 04:20:05
maintainer
docs_urlNone
authorMaehdakvan
requires_python>=3.6
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # EasyQiwi 🥝

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

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

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


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

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

```python
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

```python
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

```python
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`:

```bash
pip install easyqiwi
```

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

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

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

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

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

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

```python
from easyqiwi import RecaptchaException

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

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

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

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

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

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

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

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

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

```python
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}')
```

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

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

```python
await qiwi.close()
```

## Прокси

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

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

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

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

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

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

```python
sources = await qiwi_api.get_sources(person_id)
```

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

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

```python  
identification = await qiwi_api.get_identification(person_id)
```

### Счета

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

```python
checkouts = await qiwi_api.get_checkouts() 
```

### Карты

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

```python
cards = await qiwi_api.get_cards()
``` 

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

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

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

### Транзакция

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

```python
transaction = await qiwi_api.get_transactions(transaction_id) 
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/DedInc/easyqiwi",
    "name": "easyqiwi",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "",
    "author": "Maehdakvan",
    "author_email": "visitanimation@google.com",
    "download_url": "https://files.pythonhosted.org/packages/7d/8e/1158ade8af6e7a0fd495217bb5d08d56c25df243ff17b1bed628501fd5a9/easyqiwi-1.0.2.tar.gz",
    "platform": null,
    "description": "# EasyQiwi \ud83e\udd5d\r\n\r\n\u041c\u043e\u0434\u0443\u043b\u044c `easyqiwi` - \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 Python \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 QIWI API. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b QIWI \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0430 \u0432 \u0432\u0430\u0448\u0438 Python \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e `easyqiwi` \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0431\u0430\u043b\u0430\u043d\u0441 \u0441\u0447\u0435\u0442\u043e\u0432, \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0447\u0435\u0442\u0430 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435!\r\n\r\n## \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438\r\n\r\n- \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \ud83d\udc64\r\n- \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0447\u0435\u0442\u0430\u043c\u0438 \ud83d\udcb3\r\n- \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \ud83d\udd0d\r\n- \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0447\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u043e\u043f\u043b\u0430\u0442\u044b (\u0438\u043d\u0432\u043e\u0439\u0441\u043e\u0432) \ud83e\uddfe\r\n- \u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u2699\ufe0f\r\n- \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u043a\u0441\u0438 \ud83c\udf10\r\n- \u0415\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u0430\u043f\u0442\u0447\u0438 \ud83d\udd12\r\n- \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u0432 Selenium/Puppeteer \u0438 \u0442.\u0434. \ud83e\udd16\r\n\r\n\r\n## \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f `easyqiwi` \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 QIWI \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u0430 \u0434\u043b\u044f \u043e\u043f\u043b\u0430\u0442\u044b:\r\n\r\n```python\r\nimport asyncio\r\nfrom easyqiwi import EasyQiwiAuthCore, EasyQiwiAPI, setup_proxy\r\nfrom easyqiwi import AuthException\r\n\r\nasync def main():\r\n    phone = '+79228133736'\r\n    password = 'example'\r\n    proxy_tuple = await setup_proxy('socks5', '162.210.192.136', '25881')\r\n\r\n    qiwi = EasyQiwiAuthCore(phone, password, proxy_tuple)\r\n\r\n    try:\r\n        await qiwi.auth()\r\n    except AuthException as e:\r\n        print(e)\r\n        exit()\r\n\r\n    qiwi_api = EasyQiwiAPI(qiwi)\r\n    p2p_resp = await qiwi_api.generate_p2p_public()\r\n    p2p_key = p2p_resp['publicKey']\r\n    widget_code = p2p_resp['widgetAliasCode']\r\n    invoice_resp = await qiwi_api.create_invoice(p2p_key, widget_code, 100)\r\n    invoice_uid = invoice_resp['invoice_uid']\r\n\r\n    print(f'https://oplata.qiwi.com/form?invoiceUid={invoice_uid}')\r\n\r\n    await qiwi.close()\r\n\r\nif __name__ == '__main__':\r\n    asyncio.run(main())\r\n```\r\n\r\n\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 QIWI, \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0447\u0435\u0442 \u043d\u0430 \u043e\u043f\u043b\u0430\u0442\u0443 \u0432 100 \u0440\u0443\u0431\u043b\u0435\u0439.\r\n\r\n## \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438\r\n\r\n### Selenium\r\n\r\n```python\r\nimport asyncio\r\nfrom easyqiwi import EasyQiwiAuthCore\r\nfrom easyqiwi import AuthException\r\nfrom selenium import webdriver\r\n\r\nasync def main():\r\n    phone = '+79228133736'\r\n    password = 'example'\r\n\r\n    qiwi = EasyQiwiAuthCore(phone, password)\r\n\r\n    try:\r\n        await qiwi.auth()\r\n    except AuthException as e:\r\n        pass\r\n\r\n    cookies = qiwi.cookies\r\n    auth_data = qiwi.auth_data\r\n\r\n    await qiwi.close()\r\n\r\n    driver = webdriver.Chrome()\r\n    driver.get('https://qiwi.com/')\r\n\r\n    driver.get('https://qiwi.com/')\r\n\r\n    for cookie in cookies:\r\n        driver.add_cookie({\r\n            'name': cookie['name'],\r\n            'value': cookie['value'],\r\n            'domain': cookie['domain']\r\n        })\r\n\r\n    driver.execute_script(f\"localStorage.setItem('oauth-token-head', '{auth_data}');\")\r\n\r\n    driver.get('https://qiwi.com/main')\r\n    await asyncio.sleep(100)\r\n    driver.quit()\r\n\r\nif __name__ == '__main__':\r\n    asyncio.run(main())\r\n```\r\n\r\n### Pyppeteer\r\n\r\n```python\r\nimport asyncio\r\nfrom easyqiwi import EasyQiwiAuthCore\r\nfrom easyqiwi import AuthException\r\nfrom pyppeteer import launch\r\n\r\nasync def main():\r\n    phone = '+79228133736'\r\n    password = 'example'\r\n\r\n    qiwi = EasyQiwiAuthCore(phone, password)\r\n\r\n    try:\r\n        await qiwi.auth()\r\n    except AuthException as e:\r\n        pass\r\n\r\n    cookies = qiwi.cookies\r\n    auth_data = qiwi.auth_data\r\n\r\n    await qiwi.close()\r\n\r\n    browser = await launch(headless=False)\r\n    pages = await browser.pages()\r\n    page = pages[0]\r\n\r\n    for cookie in cookies:\r\n        await page.setCookie({'name': cookie['name'], 'value': cookie['value'], 'domain': cookie['domain']})\r\n\r\n    await page.goto('https://qiwi.com/')\r\n    await page.evaluate(f\"localStorage.setItem('oauth-token-head', '{auth_data}')\")\r\n    await page.goto('https://qiwi.com/main')\r\n    await asyncio.sleep(100)\r\n    await browser.close()\r\n\r\nif __name__ == '__main__':\r\n    asyncio.run(main())\r\n```\r\n\r\n\r\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\r\n\r\n\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c `easyqiwi` \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 `pip`:\r\n\r\n```bash\r\npip install easyqiwi\r\n```\r\n\r\n## \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\r\n\r\n### \u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 QIWI API, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442 QIWI \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0430:\r\n\r\n```python\r\nqiwi = EasyQiwiAuthCore(phone, password)\r\nawait qiwi.auth()\r\n```\r\n\r\n### \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u0430\u043f\u0442\u0447\u0438\r\n\r\n\u041c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043f\u0442\u0447\u0443, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0432\u044b\u0441\u043a\u0430\u043a\u0438\u0432\u0430\u0435\u0442:\r\n\r\n```python\r\nfrom easyqiwi import RecaptchaException\r\n\r\ntry:\r\n\tqiwi = EasyQiwiAuthCore(phone, password)\r\n\tawait qiwi.auth()\r\nexcept RecaptchaException as e:\r\n\t# \u0438 \u0442\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0430\u0442\u044c \u043a\u0430\u043f\u0442\u0447\u0443 \u0438 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0437\u0432\u0430\u0442\u044c\r\n\tawait qiwi.auth(recaptcha='\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u043a\u0430\u043f\u0442\u0447\u0430')\r\n```\r\n\r\n### \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f\r\n\r\n\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:\r\n\r\n```python\r\nqiwi_api = EasyQiwiAPI(qiwi)\r\nprofile = await qiwi_api.get_current_profile()\r\nprint(profile)\r\n```\r\n\r\n### \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439\r\n\r\n\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439:\r\n\r\n```python\r\npayments = await qiwi_api.get_payments(person_id, rows=10)\r\nprint(payments)\r\n```\r\n\r\n### \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u043d\u0432\u043e\u0439\u0441\u0430\r\n\r\n\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0438\u043d\u0432\u043e\u0439\u0441\u0430 \u0434\u043b\u044f \u043e\u043f\u043b\u0430\u0442\u044b:\r\n\r\n```python\r\ninvoice_resp = await qiwi_api.create_invoice(p2p_key, widget_code, 500, comment='\u0417\u0430 \u0443\u0441\u043b\u0443\u0433\u0438')\r\ninvoice_uid = invoice_resp['invoice_uid']\r\nprint(f'\u0421\u0441\u044b\u043b\u043a\u0430 \u0434\u043b\u044f \u043e\u043f\u043b\u0430\u0442\u044b: https://oplata.qiwi.com/form?invoiceUid={invoice_uid}')\r\n```\r\n\r\n### \u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0438\r\n\r\n\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0441\u0435\u0441\u0441\u0438\u044e \u043f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b:\r\n\r\n```python\r\nawait qiwi.close()\r\n```\r\n\r\n## \u041f\u0440\u043e\u043a\u0441\u0438\r\n\r\n\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u043a\u0441\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:\r\n\r\n```python\r\nproxy_tuple = await setup_proxy('socks5', 'proxy_ip', 'proxy_port', 'username', 'password')\r\n```\r\n\r\n## \u0414\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b API\r\n\r\n\u041f\u043e\u043c\u0438\u043c\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435, `easyqiwi` \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0438 \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u0430\u043c QIWI API:\r\n\r\n### \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\r\n\r\n\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:\r\n\r\n```python\r\nsources = await qiwi_api.get_sources(person_id)\r\n```\r\n\r\n### \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\r\n\r\n\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f: \r\n\r\n```python  \r\nidentification = await qiwi_api.get_identification(person_id)\r\n```\r\n\r\n### \u0421\u0447\u0435\u0442\u0430\r\n\r\n\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u043e\u043f\u043b\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u0447\u0435\u0442\u043e\u0432 \u043f\u043e \u0438\u0445 \u0441\u0442\u0430\u0442\u0443\u0441\u0430\u043c:\r\n\r\n```python\r\ncheckouts = await qiwi_api.get_checkouts() \r\n```\r\n\r\n### \u041a\u0430\u0440\u0442\u044b\r\n\r\n\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c \u043a\u0430\u0440\u0442\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:\r\n\r\n```python\r\ncards = await qiwi_api.get_cards()\r\n``` \r\n\r\n### \u041e\u0431\u0449\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439\r\n\r\n\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445/\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \u0437\u0430 \u043f\u0435\u0440\u0438\u043e\u0434:\r\n\r\n```python\r\ntotal_payments = await qiwi_api.get_total_payments(person_id, start_date, end_date)\r\n```\r\n\r\n### \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\r\n\r\n\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438:\r\n\r\n```python\r\ntransaction = await qiwi_api.get_transactions(transaction_id) \r\n```\r\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 Python \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 QIWI API.",
    "version": "1.0.2",
    "project_urls": {
        "Bug Tracker": "https://github.com/DedInc/easyqiwi/issues",
        "Homepage": "https://github.com/DedInc/easyqiwi"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "03e2c3ad79b8ef31eec3560afa345f89138788a22353ab71c4a2b3bd3975170d",
                "md5": "ceb172101524ac769f0db075803bea69",
                "sha256": "7c592c1d7bd1f7704e88b8732c866e10601542ab43c48b3c133d625f0a2f98f8"
            },
            "downloads": -1,
            "filename": "easyqiwi-1.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ceb172101524ac769f0db075803bea69",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 7297,
            "upload_time": "2024-02-21T04:20:03",
            "upload_time_iso_8601": "2024-02-21T04:20:03.932994Z",
            "url": "https://files.pythonhosted.org/packages/03/e2/c3ad79b8ef31eec3560afa345f89138788a22353ab71c4a2b3bd3975170d/easyqiwi-1.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7d8e1158ade8af6e7a0fd495217bb5d08d56c25df243ff17b1bed628501fd5a9",
                "md5": "d3b474b88a8b9eb0f7a3bd8f5400ec4c",
                "sha256": "a1c0c775c0deeb97a9c3273b96386fc4c130319da062964fe0cd2240fc975328"
            },
            "downloads": -1,
            "filename": "easyqiwi-1.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "d3b474b88a8b9eb0f7a3bd8f5400ec4c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 7558,
            "upload_time": "2024-02-21T04:20:05",
            "upload_time_iso_8601": "2024-02-21T04:20:05.883471Z",
            "url": "https://files.pythonhosted.org/packages/7d/8e/1158ade8af6e7a0fd495217bb5d08d56c25df243ff17b1bed628501fd5a9/easyqiwi-1.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-21 04:20:05",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "DedInc",
    "github_project": "easyqiwi",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "easyqiwi"
}
        
Elapsed time: 0.16958s