Какие библиотеки для интеграции QIWI-оплаты на Python актуальны в контексте использования aiogram?

Какие библиотеки для интеграции платежей QIWI в телеграм-боте с использованием aiogram можно использовать на сегодняшний день? Или как можно реализовать процесс оплаты через QIWI с нуля в Python?
  • 8 января 2024 г. 10:18
Ответы на вопрос 1
На момент последнего обновления моих знаний, существуют различные подходы и библиотеки, которые позволяют интегрировать QIWI-оплату в телеграм-боты на Python с использованием фреймворка aiogram. Вот несколько подходов, которые вы можете рассмотреть:

### Библиотеки для интеграции с QIWI API

1. **QiwiApi** – библиотека для работы с QIWI API. Позволяет выполнять основные операции, такие как инициализация платежей, проверка статуса транзакций и т.д.

   ```bash
   pip install qiwi-api 
   ```

   Пример использования:
   
   ```python
   from qiwi_api import QiwiApi

   qiwi_token = 'ВАШ_ТОКЕН'
   wallet = QiwiApi(token=qiwi_token)

   # Статус кошелька
   status = wallet.wallet_info

   # Создание счета
   bill_id = wallet.create_bill(amount=100, currency='RUB', comment='Оплата товара')
   ```

2. **pyqiwi** – аналогичный инструмент для взаимодействия с QIWI Кошельком. Пример работы с pyqiwi:

   ```bash
   pip install pyqiwi 
   ```

   ```python
   from pyqiwi import Wallet

   wallet = Wallet(token='ВАШ_ТОКЕН')
   balance = wallet.balance()
   ```

### Реализация с нуля

Если вы не хотите использовать сторонние библиотеки, можете напрямую работать с QIWI API. Пример создания счета через QIWI API с использованием `requests`:

```python
import requests
import uuid

QIWI_TOKEN = 'ВАШ_ТОКЕН'
QIWI_WALLET = 'ВАШ_НОМЕР_ТЕЛЕФОНА'
s = requests.Session()
s.headers['authorization'] = 'Bearer ' + QIWI_TOKEN
bill_id = str(uuid.uuid4())

params = {
    'amount': '1.00',
    'currency': 'RUB',
    'comment': 'Пример оплаты',
    'expirationDateTime': '2023-12-31T23:59:59+03:00',
    'account': 'ВАШ_ИДЕНТИФИКАТОР_ПОЛЬЗОВАТЕЛЯ'
}

response = s.put(f'https://api.qiwi.com/partner/bill/v1/bills/{bill_id}', json=params)
if response.status_code == 200:
    bill = response.json()
    pay_url = bill['payUrl']
    print("Оплатите счет по ссылке:", pay_url)
```

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

### Интеграция с aiogram

Чтобы интегрировать платежный процесс в бота на aiogram, вы можете использовать приведенные выше подходы в асинхронном контексте (используя библиотеку `aiohttp` для асинхронных HTTP-запросов вместо `requests`).

```python
import aiohttp
import asyncio

async def create_qiwi_bill():
    async with aiohttp.ClientSession() as session:
        headers = {'Authorization': f'Bearer {QIWI_TOKEN}'}
        payload = {...}  # Данные для создания счета
        
        async with session.put('QIWI_API_URL', headers=headers, json=payload) as response:
            if response.status == 200:
                data = await response.json()
                return data['payUrl']

# В aiogram-обработчике
@dp.message_handler(commands=['pay'])
async def handle_payment(message: types.Message):
    pay_url = await create_qiwi_bill()
Похожие вопросы