[](https://pepy.tech/project/aioyookassa)
[](https://pepy.tech/project/aioyookassa)
[](https://pepy.tech/project/aioyookassa)

# aioyookassa
**Асинхронная Python библиотека для работы с API YooKassa**
`aioyookassa` — это современная асинхронная библиотека для интеграции с платежным сервисом YooKassa. Библиотека предоставляет удобный интерфейс для работы с платежами, возвратами, чеками и другими функциями YooKassa API.
## ✨ Особенности
- 🚀 **Асинхронность** — полная поддержка `asyncio` для высокопроизводительных приложений
- 🛡️ **Типизация** — полная поддержка типов с использованием Pydantic моделей
- 🔧 **Простота** — интуитивно понятный API для быстрой интеграции
- 📚 **Документация** — подробная документация с примерами использования
- 🧪 **Тестирование** — 92% покрытие кода тестами
- ⚡ **Производительность** — оптимизированная работа с HTTP запросами
## 🔗 Links
- 🎓 **Documentation:** [_CLICK_](https://aioyookassa.readthedocs.io/en/latest/)
- 🖱️ **Developer contacts:** [](https://t.me/masaasibaata)
- 💝 **Support project:** [](https://t.me/tribute/app?startapp=dzqR)
## 🐦 Dependencies
| Library | Description |
| :------: | :-----------------------------------------------------: |
| aiohttp | Asynchronous HTTP Client/Server for asyncio and Python. |
| pydantic | JSON Data Validator |
## 📁 Project Structure
```
aioyookassa/
├── core/ # Core functionality
│ ├── client.py # Main YooKassa client
│ ├── api/ # API client implementations
│ │ ├── payments.py # Payment operations
│ │ ├── receipts.py # Fiscal receipt operations
│ │ ├── invoices.py # Invoice operations
│ │ ├── refunds.py # Refund operations
│ │ └── payment_methods.py # Payment method management
│ ├── methods/ # API method definitions
│ └── abc/ # Abstract base classes
├── types/ # Pydantic models and enums
├── exceptions/ # Custom exceptions
└── __init__.py # Package exports
```
## ⚠️ Breaking Changes в версии 2.0.0
**Версия 2.0.0 содержит breaking changes:**
- **Удалены дублирующиеся типы:**
- `RefundCancellationDetails` → используйте `CancellationDetails`
- `RefundSettlement` → используйте `Settlement`
- `ReceiptSettlement` → используйте `Settlement`
**Миграция:**
```python
# До версии 2.0.0
from aioyookassa.types import RefundCancellationDetails, RefundSettlement, ReceiptSettlement
# Версия 2.0.0+
from aioyookassa.types import CancellationDetails, Settlement
```
Подробности в [Changelog](https://aioyookassa.readthedocs.io/en/latest/changelog.html).
## 🚀 Quick Start
### Установка
```bash
pip install aioyookassa>=2.0.0
```
### Базовое использование
```python
import asyncio
from datetime import datetime
from aioyookassa import YooKassa
from aioyookassa.types.payment import PaymentAmount, Confirmation
from aioyookassa.types.enum import PaymentStatus, ConfirmationType, Currency
from aioyookassa.types.params import CreatePaymentParams, GetPaymentsParams
async def main():
# Инициализация клиента
client = YooKassa(api_key="your_api_key", shop_id=12345)
# Создание платежа (используем Pydantic модель)
params = CreatePaymentParams(
amount=PaymentAmount(value=100.00, currency=Currency.RUB),
confirmation=Confirmation(type=ConfirmationType.REDIRECT, return_url="https://example.com/return"),
description="Тестовый платеж"
)
payment = await client.payments.create_payment(params)
print(f"Payment created: {payment.id}")
print(f"Confirmation URL: {payment.confirmation.confirmation_url}")
# Получение информации о платеже
payment_info = await client.payments.get_payment(payment.id)
print(f"Payment status: {payment_info.status}")
# Получение списка платежей за сегодня (используем Pydantic модель)
today = datetime.now()
params = GetPaymentsParams(
created_at=today,
status=PaymentStatus.SUCCEEDED
)
payments = await client.payments.get_payments(params)
print(f"Found {len(payments.list)} successful payments today")
# Закрытие клиента
await client.close()
# Запуск
asyncio.run(main())
```
## 📋 Основные методы
### 💳 Платежи (Payments)
```python
from datetime import datetime
from aioyookassa.types.enum import PaymentStatus, ConfirmationType, Currency
from aioyookassa.types.params import CreatePaymentParams, GetPaymentsParams
# Создание платежа (используем Pydantic модель)
params = CreatePaymentParams(
amount=PaymentAmount(value=1000.00, currency=Currency.RUB),
confirmation=Confirmation(type=ConfirmationType.REDIRECT, return_url="https://example.com/return"),
description="Оплата заказа #12345"
)
payment = await client.payments.create_payment(params)
# Получение списка платежей (используем Pydantic модель)
params = GetPaymentsParams(
created_at=datetime(2023, 1, 1, 12, 0, 0),
status=PaymentStatus.SUCCEEDED,
limit=10
)
payments = await client.payments.get_payments(params)
# Получение конкретного платежа
payment = await client.payments.get_payment("payment_id")
# Подтверждение платежа (используем Pydantic модель)
from aioyookassa.types.params import CapturePaymentParams
params = CapturePaymentParams(amount=PaymentAmount(value=1000.00, currency=Currency.RUB))
payment = await client.payments.capture_payment("payment_id", params)
# Отмена платежа
payment = await client.payments.cancel_payment("payment_id")
```
### 💰 Возвраты (Refunds)
```python
from aioyookassa.types.params import CreateRefundParams
# Создание возврата (используем Pydantic модель)
params = CreateRefundParams(
payment_id="payment_id",
amount=PaymentAmount(value=500.00, currency=Currency.RUB),
description="Частичный возврат"
)
refund = await client.refunds.create_refund(params)
# Получение информации о возврате
refund_info = await client.refunds.get_refund("refund_id")
```
### 🧾 Чеки (Receipts)
```python
from aioyookassa.types.payment import Customer, Settlement
from aioyookassa.types.enum import ReceiptType
from aioyookassa.types.params import CreateReceiptParams
from aioyookassa.types.receipt_registration import ReceiptRegistrationItem
# Регистрация чека (используем Pydantic модель)
params = CreateReceiptParams(
type=ReceiptType.PAYMENT,
payment_id="payment_id",
customer=Customer(email="customer@example.com"),
items=[
ReceiptRegistrationItem(
description="Товар",
quantity=1,
amount=PaymentAmount(value=1000.00, currency=Currency.RUB),
vat_code=1,
payment_subject="commodity",
payment_mode="full_payment"
)
],
settlements=[
Settlement(type="prepayment", amount=PaymentAmount(value=1000.00, currency=Currency.RUB))
],
tax_system_code=1
)
receipt = await client.receipts.create_receipt(params)
# Получение информации о чеке
receipt_info = await client.receipts.get_receipt("receipt_id")
```
### 📄 Счета (Invoices)
```python
from aioyookassa.types.params import CreateInvoiceParams
# Создание счета (используем Pydantic модель)
params = CreateInvoiceParams(
amount=PaymentAmount(value=2000.00, currency=Currency.RUB),
description="Счет на оплату"
)
invoice = await client.invoices.create_invoice(params)
# Получение информации о счете
invoice_info = await client.invoices.get_invoice("invoice_id")
```
## 🔧 Контекстный менеджер
```python
from datetime import datetime
from aioyookassa.types.enum import PaymentStatus, ConfirmationType, Currency
from aioyookassa.types.params import CreatePaymentParams, GetPaymentsParams
async with YooKassa(api_key="your_key", shop_id=12345) as client:
# Создание платежа (используем Pydantic модель)
params = CreatePaymentParams(
amount=PaymentAmount(value=100.00, currency=Currency.RUB),
confirmation=Confirmation(type=ConfirmationType.REDIRECT, return_url="https://example.com/return")
)
payment = await client.payments.create_payment(params)
# Получение платежей за последний час (используем Pydantic модель)
params = GetPaymentsParams(
created_at=datetime.now(),
status=PaymentStatus.SUCCEEDED,
limit=5
)
recent_payments = await client.payments.get_payments(params)
# Клиент автоматически закроется
```
## 🛠️ Установка и настройка
### Требования
- Python 3.8.1+
- aiohttp
- pydantic
### Установка через pip
```bash
pip install aioyookassa
```
### Установка через Poetry
```bash
poetry add aioyookassa
```
## 📖 Документация
Полная документация доступна по адресу: [aioyookassa.readthedocs.io](https://aioyookassa.readthedocs.io/en/latest/)
## 🤝 Поддержка проекта
Если библиотека оказалась полезной, вы можете поддержать проект:
- 💝 **[Tribute](https://t.me/tribute/app?startapp=dzqR)** — поддержка через Telegram
- 🐛 **Сообщить об ошибке** — [GitHub Issues](https://github.com/masasibata/aioyookassa/issues)
- 💬 **Связаться с разработчиком** — [@masaasibaata](https://t.me/masaasibaata)
## 🚀 Вклад в развитие
Мы приветствуем вклад в развитие библиотеки! Вот как вы можете помочь:
### Быстрый старт для разработчиков
```bash
# Клонирование репозитория
git clone https://github.com/masasibata/aioyookassa.git
cd aioyookassa
# Установка зависимостей для разработки
make install-dev
# Установка pre-commit хуков
make pre-commit
# Запуск всех проверок
make all-checks
```
### Доступные команды
```bash
# Тестирование
make test # Запуск тестов
make test-cov # Тесты с покрытием кода
make test-fast # Быстрые тесты без покрытия
# Качество кода
make lint # Линтинг (Black)
make format # Форматирование кода
make type-check # Проверка типов (MyPy)
make all-checks # Все проверки качества
# Сборка и публикация
make build # Сборка пакета
make clean # Очистка артефактов
# Документация
make docs # Сборка документации
make docs-serve # Локальный сервер документации
# Локальная разработка
make dev # Запуск пайплайна разработки локально
```
### Процесс внесения изменений
1. **Форкните репозиторий** на GitHub
2. **Создайте ветку** для ваших изменений:
```bash
git checkout -b feature/your-feature-name
```
3. **Внесите изменения** и убедитесь, что все проверки проходят:
```bash
make all-checks
```
4. **Зафиксируйте изменения**:
```bash
git add .
git commit -m "feat: add new feature"
```
5. **Отправьте изменения**:
```bash
git push origin feature/your-feature-name
```
6. **Создайте Pull Request** на GitHub
### Требования к Pull Request
- ✅ **Все тесты проходят** (`make test`)
- ✅ **Покрытие кода не менее 92%** (`make test-cov`)
- ✅ **Код отформатирован** (`make format`)
- ✅ **Форматирование проходит** (`make lint`)
- ✅ **Проверка типов проходит** (`make type-check`)
- ✅ **Документация обновлена** (если необходимо)
- ✅ **Описательное сообщение коммита**
### Типы вкладов
- 🐛 **Исправление багов** — исправление ошибок в коде
- ✨ **Новые функции** — добавление новой функциональности
- 📚 **Документация** — улучшение документации и примеров
- ⚡ **Оптимизация** — улучшение производительности
- 🧪 **Тесты** — добавление или улучшение тестов
- 🔧 **Инфраструктура** — улучшение инструментов разработки
### Соглашения о коммитах
Используйте [Conventional Commits](https://www.conventionalcommits.org/):
```bash
feat: add new payment method support
fix: resolve timeout issue in payment creation
docs: update API documentation
test: add tests for refund functionality
refactor: improve error handling
```
### Получение помощи
- 💬 **Вопросы** — [@masaasibaata](https://t.me/masaasibaata)
- 🐛 **Проблемы** — [GitHub Issues](https://github.com/masasibata/aioyookassa/issues)
## 📄 Лицензия
Проект распространяется под лицензией MIT. Подробности в файле [LICENSE](LICENSE).
---
Raw data
{
"_id": null,
"home_page": null,
"name": "aioyookassa",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8.1",
"maintainer_email": null,
"keywords": "yookassa, asyncio, aiohttp, pydantic, aioyookassa, async, asynchronous",
"author": "Masa",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/fb/06/d9228d4df449ff9fb6b53f02c31eeece35fca71b2b697cc7a842bb69ac41/aioyookassa-2.0.0.tar.gz",
"platform": null,
"description": "[](https://pepy.tech/project/aioyookassa)\n[](https://pepy.tech/project/aioyookassa)\n[](https://pepy.tech/project/aioyookassa)\n\n\n\n# aioyookassa\n\n**\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f Python \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API YooKassa**\n\n`aioyookassa` \u2014 \u044d\u0442\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u043f\u043b\u0430\u0442\u0435\u0436\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c YooKassa. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u043b\u0430\u0442\u0435\u0436\u0430\u043c\u0438, \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430\u043c\u0438, \u0447\u0435\u043a\u0430\u043c\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 YooKassa API.\n\n## \u2728 \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438\n\n- \ud83d\ude80 **\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c** \u2014 \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 `asyncio` \u0434\u043b\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439\n- \ud83d\udee1\ufe0f **\u0422\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f** \u2014 \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0438\u043f\u043e\u0432 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Pydantic \u043c\u043e\u0434\u0435\u043b\u0435\u0439\n- \ud83d\udd27 **\u041f\u0440\u043e\u0441\u0442\u043e\u0442\u0430** \u2014 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 API \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438\n- \ud83d\udcda **\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f** \u2014 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n- \ud83e\uddea **\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435** \u2014 92% \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u043a\u043e\u0434\u0430 \u0442\u0435\u0441\u0442\u0430\u043c\u0438\n- \u26a1 **\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c** \u2014 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438\n\n## \ud83d\udd17 Links\n\n- \ud83c\udf93 **Documentation:** [_CLICK_](https://aioyookassa.readthedocs.io/en/latest/)\n- \ud83d\uddb1\ufe0f **Developer contacts:** [](https://t.me/masaasibaata)\n- \ud83d\udc9d **Support project:** [](https://t.me/tribute/app?startapp=dzqR)\n\n## \ud83d\udc26 Dependencies\n\n| Library | Description |\n| :------: | :-----------------------------------------------------: |\n| aiohttp | Asynchronous HTTP Client/Server for asyncio and Python. |\n| pydantic | JSON Data Validator |\n\n## \ud83d\udcc1 Project Structure\n\n```\naioyookassa/\n\u251c\u2500\u2500 core/ # Core functionality\n\u2502 \u251c\u2500\u2500 client.py # Main YooKassa client\n\u2502 \u251c\u2500\u2500 api/ # API client implementations\n\u2502 \u2502 \u251c\u2500\u2500 payments.py # Payment operations\n\u2502 \u2502 \u251c\u2500\u2500 receipts.py # Fiscal receipt operations\n\u2502 \u2502 \u251c\u2500\u2500 invoices.py # Invoice operations\n\u2502 \u2502 \u251c\u2500\u2500 refunds.py # Refund operations\n\u2502 \u2502 \u2514\u2500\u2500 payment_methods.py # Payment method management\n\u2502 \u251c\u2500\u2500 methods/ # API method definitions\n\u2502 \u2514\u2500\u2500 abc/ # Abstract base classes\n\u251c\u2500\u2500 types/ # Pydantic models and enums\n\u251c\u2500\u2500 exceptions/ # Custom exceptions\n\u2514\u2500\u2500 __init__.py # Package exports\n```\n\n## \u26a0\ufe0f Breaking Changes \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 2.0.0\n\n**\u0412\u0435\u0440\u0441\u0438\u044f 2.0.0 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 breaking changes:**\n\n- **\u0423\u0434\u0430\u043b\u0435\u043d\u044b \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0442\u0438\u043f\u044b:**\n - `RefundCancellationDetails` \u2192 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `CancellationDetails`\n - `RefundSettlement` \u2192 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `Settlement`\n - `ReceiptSettlement` \u2192 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `Settlement`\n\n**\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f:**\n\n```python\n# \u0414\u043e \u0432\u0435\u0440\u0441\u0438\u0438 2.0.0\nfrom aioyookassa.types import RefundCancellationDetails, RefundSettlement, ReceiptSettlement\n\n# \u0412\u0435\u0440\u0441\u0438\u044f 2.0.0+\nfrom aioyookassa.types import CancellationDetails, Settlement\n```\n\n\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0432 [Changelog](https://aioyookassa.readthedocs.io/en/latest/changelog.html).\n\n## \ud83d\ude80 Quick Start\n\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n\n```bash\npip install aioyookassa>=2.0.0\n```\n\n### \u0411\u0430\u0437\u043e\u0432\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\n\n```python\nimport asyncio\nfrom datetime import datetime\nfrom aioyookassa import YooKassa\nfrom aioyookassa.types.payment import PaymentAmount, Confirmation\nfrom aioyookassa.types.enum import PaymentStatus, ConfirmationType, Currency\nfrom aioyookassa.types.params import CreatePaymentParams, GetPaymentsParams\n\nasync def main():\n # \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430\n client = YooKassa(api_key=\"your_api_key\", shop_id=12345)\n\n # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u0435\u0436\u0430 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Pydantic \u043c\u043e\u0434\u0435\u043b\u044c)\n params = CreatePaymentParams(\n amount=PaymentAmount(value=100.00, currency=Currency.RUB),\n confirmation=Confirmation(type=ConfirmationType.REDIRECT, return_url=\"https://example.com/return\"),\n description=\"\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436\"\n )\n payment = await client.payments.create_payment(params)\n\n print(f\"Payment created: {payment.id}\")\n print(f\"Confirmation URL: {payment.confirmation.confirmation_url}\")\n\n # \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u043b\u0430\u0442\u0435\u0436\u0435\n payment_info = await client.payments.get_payment(payment.id)\n print(f\"Payment status: {payment_info.status}\")\n\n # \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \u0437\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Pydantic \u043c\u043e\u0434\u0435\u043b\u044c)\n today = datetime.now()\n params = GetPaymentsParams(\n created_at=today,\n status=PaymentStatus.SUCCEEDED\n )\n payments = await client.payments.get_payments(params)\n print(f\"Found {len(payments.list)} successful payments today\")\n\n # \u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\n await client.close()\n\n# \u0417\u0430\u043f\u0443\u0441\u043a\nasyncio.run(main())\n```\n\n## \ud83d\udccb \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b\n\n### \ud83d\udcb3 \u041f\u043b\u0430\u0442\u0435\u0436\u0438 (Payments)\n\n```python\nfrom datetime import datetime\nfrom aioyookassa.types.enum import PaymentStatus, ConfirmationType, Currency\nfrom aioyookassa.types.params import CreatePaymentParams, GetPaymentsParams\n\n# \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u0435\u0436\u0430 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Pydantic \u043c\u043e\u0434\u0435\u043b\u044c)\nparams = CreatePaymentParams(\n amount=PaymentAmount(value=1000.00, currency=Currency.RUB),\n confirmation=Confirmation(type=ConfirmationType.REDIRECT, return_url=\"https://example.com/return\"),\n description=\"\u041e\u043f\u043b\u0430\u0442\u0430 \u0437\u0430\u043a\u0430\u0437\u0430 #12345\"\n)\npayment = await client.payments.create_payment(params)\n\n# \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Pydantic \u043c\u043e\u0434\u0435\u043b\u044c)\nparams = GetPaymentsParams(\n created_at=datetime(2023, 1, 1, 12, 0, 0),\n status=PaymentStatus.SUCCEEDED,\n limit=10\n)\npayments = await client.payments.get_payments(params)\n\n# \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0442\u0435\u0436\u0430\npayment = await client.payments.get_payment(\"payment_id\")\n\n# \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u0435\u0436\u0430 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Pydantic \u043c\u043e\u0434\u0435\u043b\u044c)\nfrom aioyookassa.types.params import CapturePaymentParams\n\nparams = CapturePaymentParams(amount=PaymentAmount(value=1000.00, currency=Currency.RUB))\npayment = await client.payments.capture_payment(\"payment_id\", params)\n\n# \u041e\u0442\u043c\u0435\u043d\u0430 \u043f\u043b\u0430\u0442\u0435\u0436\u0430\npayment = await client.payments.cancel_payment(\"payment_id\")\n```\n\n### \ud83d\udcb0 \u0412\u043e\u0437\u0432\u0440\u0430\u0442\u044b (Refunds)\n\n```python\nfrom aioyookassa.types.params import CreateRefundParams\n\n# \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Pydantic \u043c\u043e\u0434\u0435\u043b\u044c)\nparams = CreateRefundParams(\n payment_id=\"payment_id\",\n amount=PaymentAmount(value=500.00, currency=Currency.RUB),\n description=\"\u0427\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\"\n)\nrefund = await client.refunds.create_refund(params)\n\n# \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0435\nrefund_info = await client.refunds.get_refund(\"refund_id\")\n```\n\n### \ud83e\uddfe \u0427\u0435\u043a\u0438 (Receipts)\n\n```python\nfrom aioyookassa.types.payment import Customer, Settlement\nfrom aioyookassa.types.enum import ReceiptType\nfrom aioyookassa.types.params import CreateReceiptParams\nfrom aioyookassa.types.receipt_registration import ReceiptRegistrationItem\n\n# \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0447\u0435\u043a\u0430 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Pydantic \u043c\u043e\u0434\u0435\u043b\u044c)\nparams = CreateReceiptParams(\n type=ReceiptType.PAYMENT,\n payment_id=\"payment_id\",\n customer=Customer(email=\"customer@example.com\"),\n items=[\n ReceiptRegistrationItem(\n description=\"\u0422\u043e\u0432\u0430\u0440\",\n quantity=1,\n amount=PaymentAmount(value=1000.00, currency=Currency.RUB),\n vat_code=1,\n payment_subject=\"commodity\",\n payment_mode=\"full_payment\"\n )\n ],\n settlements=[\n Settlement(type=\"prepayment\", amount=PaymentAmount(value=1000.00, currency=Currency.RUB))\n ],\n tax_system_code=1\n)\nreceipt = await client.receipts.create_receipt(params)\n\n# \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0447\u0435\u043a\u0435\nreceipt_info = await client.receipts.get_receipt(\"receipt_id\")\n```\n\n### \ud83d\udcc4 \u0421\u0447\u0435\u0442\u0430 (Invoices)\n\n```python\nfrom aioyookassa.types.params import CreateInvoiceParams\n\n# \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0447\u0435\u0442\u0430 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Pydantic \u043c\u043e\u0434\u0435\u043b\u044c)\nparams = CreateInvoiceParams(\n amount=PaymentAmount(value=2000.00, currency=Currency.RUB),\n description=\"\u0421\u0447\u0435\u0442 \u043d\u0430 \u043e\u043f\u043b\u0430\u0442\u0443\"\n)\ninvoice = await client.invoices.create_invoice(params)\n\n# \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0447\u0435\u0442\u0435\ninvoice_info = await client.invoices.get_invoice(\"invoice_id\")\n```\n\n## \ud83d\udd27 \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\n\n```python\nfrom datetime import datetime\nfrom aioyookassa.types.enum import PaymentStatus, ConfirmationType, Currency\nfrom aioyookassa.types.params import CreatePaymentParams, GetPaymentsParams\n\nasync with YooKassa(api_key=\"your_key\", shop_id=12345) as client:\n # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u0435\u0436\u0430 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Pydantic \u043c\u043e\u0434\u0435\u043b\u044c)\n params = CreatePaymentParams(\n amount=PaymentAmount(value=100.00, currency=Currency.RUB),\n confirmation=Confirmation(type=ConfirmationType.REDIRECT, return_url=\"https://example.com/return\")\n )\n payment = await client.payments.create_payment(params)\n\n # \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0447\u0430\u0441 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Pydantic \u043c\u043e\u0434\u0435\u043b\u044c)\n params = GetPaymentsParams(\n created_at=datetime.now(),\n status=PaymentStatus.SUCCEEDED,\n limit=5\n )\n recent_payments = await client.payments.get_payments(params)\n # \u041a\u043b\u0438\u0435\u043d\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043a\u0440\u043e\u0435\u0442\u0441\u044f\n```\n\n## \ud83d\udee0\ufe0f \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\n\n### \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\n\n- Python 3.8.1+\n- aiohttp\n- pydantic\n\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 pip\n\n```bash\npip install aioyookassa\n```\n\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 Poetry\n\n```bash\npoetry add aioyookassa\n```\n\n## \ud83d\udcd6 \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\n\n\u041f\u043e\u043b\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: [aioyookassa.readthedocs.io](https://aioyookassa.readthedocs.io/en/latest/)\n\n## \ud83e\udd1d \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\n\n\u0415\u0441\u043b\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442:\n\n- \ud83d\udc9d **[Tribute](https://t.me/tribute/app?startapp=dzqR)** \u2014 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 Telegram\n- \ud83d\udc1b **\u0421\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435** \u2014 [GitHub Issues](https://github.com/masasibata/aioyookassa/issues)\n- \ud83d\udcac **\u0421\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c** \u2014 [@masaasibaata](https://t.me/masaasibaata)\n\n## \ud83d\ude80 \u0412\u043a\u043b\u0430\u0434 \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\n\n\u041c\u044b \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u043c \u0432\u043a\u043b\u0430\u0434 \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438! \u0412\u043e\u0442 \u043a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043c\u043e\u0447\u044c:\n\n### \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432\n\n```bash\n# \u041a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\ngit clone https://github.com/masasibata/aioyookassa.git\ncd aioyookassa\n\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\nmake install-dev\n\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 pre-commit \u0445\u0443\u043a\u043e\u0432\nmake pre-commit\n\n# \u0417\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a\nmake all-checks\n```\n\n### \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b\n\n```bash\n# \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\nmake test # \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432\nmake test-cov # \u0422\u0435\u0441\u0442\u044b \u0441 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u043a\u043e\u0434\u0430\nmake test-fast # \u0411\u044b\u0441\u0442\u0440\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0431\u0435\u0437 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f\n\n# \u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430\nmake lint # \u041b\u0438\u043d\u0442\u0438\u043d\u0433 (Black)\nmake format # \u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430\nmake type-check # \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0438\u043f\u043e\u0432 (MyPy)\nmake all-checks # \u0412\u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430\n\n# \u0421\u0431\u043e\u0440\u043a\u0430 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\nmake build # \u0421\u0431\u043e\u0440\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430\nmake clean # \u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432\n\n# \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\nmake docs # \u0421\u0431\u043e\u0440\u043a\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438\nmake docs-serve # \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438\n\n# \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430\nmake dev # \u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\n```\n\n### \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439\n\n1. **\u0424\u043e\u0440\u043a\u043d\u0438\u0442\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439** \u043d\u0430 GitHub\n2. **\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432\u0435\u0442\u043a\u0443** \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439:\n ```bash\n git checkout -b feature/your-feature-name\n ```\n3. **\u0412\u043d\u0435\u0441\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f** \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442:\n ```bash\n make all-checks\n ```\n4. **\u0417\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0439\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f**:\n ```bash\n git add .\n git commit -m \"feat: add new feature\"\n ```\n5. **\u041e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f**:\n ```bash\n git push origin feature/your-feature-name\n ```\n6. **\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 Pull Request** \u043d\u0430 GitHub\n\n### \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a Pull Request\n\n- \u2705 **\u0412\u0441\u0435 \u0442\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442** (`make test`)\n- \u2705 **\u041f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u043a\u043e\u0434\u0430 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 92%** (`make test-cov`)\n- \u2705 **\u041a\u043e\u0434 \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d** (`make format`)\n- \u2705 **\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442** (`make lint`)\n- \u2705 **\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0438\u043f\u043e\u0432 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442** (`make type-check`)\n- \u2705 **\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430** (\u0435\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e)\n- \u2705 **\u041e\u043f\u0438\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u0430**\n\n### \u0422\u0438\u043f\u044b \u0432\u043a\u043b\u0430\u0434\u043e\u0432\n\n- \ud83d\udc1b **\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0433\u043e\u0432** \u2014 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u043a\u043e\u0434\u0435\n- \u2728 **\u041d\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438** \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438\n- \ud83d\udcda **\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f** \u2014 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432\n- \u26a1 **\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f** \u2014 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438\n- \ud83e\uddea **\u0422\u0435\u0441\u0442\u044b** \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\n- \ud83d\udd27 **\u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430** \u2014 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\n\n### \u0421\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f \u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u0445\n\n\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 [Conventional Commits](https://www.conventionalcommits.org/):\n\n```bash\nfeat: add new payment method support\nfix: resolve timeout issue in payment creation\ndocs: update API documentation\ntest: add tests for refund functionality\nrefactor: improve error handling\n```\n\n### \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043c\u043e\u0449\u0438\n\n- \ud83d\udcac **\u0412\u043e\u043f\u0440\u043e\u0441\u044b** \u2014 [@masaasibaata](https://t.me/masaasibaata)\n- \ud83d\udc1b **\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b** \u2014 [GitHub Issues](https://github.com/masasibata/aioyookassa/issues)\n\n## \ud83d\udcc4 \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\n\n\u041f\u0440\u043e\u0435\u043a\u0442 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 MIT. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 [LICENSE](LICENSE).\n\n---\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Asynchronous YooKassa API client library for Python using aiohttp and pydantic.",
"version": "2.0.0",
"project_urls": {
"Documentation": "https://aioyookassa.readthedocs.io/en/latest/",
"Repository": "https://github.com/masasibata/aioyookassa"
},
"split_keywords": [
"yookassa",
" asyncio",
" aiohttp",
" pydantic",
" aioyookassa",
" async",
" asynchronous"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b42df9f9e614cf0ec3c8ca2da363afb34c4dc3f445205622388c0bce96c9bcd1",
"md5": "cfdfc74f7a87c73c605aa4c4dd6a267d",
"sha256": "d5c379ca07625fb29ff6922964c4672b9678ac0fa4ffaf8ebdbcb00dcc6f1777"
},
"downloads": -1,
"filename": "aioyookassa-2.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "cfdfc74f7a87c73c605aa4c4dd6a267d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8.1",
"size": 37469,
"upload_time": "2025-11-06T10:50:02",
"upload_time_iso_8601": "2025-11-06T10:50:02.838100Z",
"url": "https://files.pythonhosted.org/packages/b4/2d/f9f9e614cf0ec3c8ca2da363afb34c4dc3f445205622388c0bce96c9bcd1/aioyookassa-2.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fb06d9228d4df449ff9fb6b53f02c31eeece35fca71b2b697cc7a842bb69ac41",
"md5": "538216d9a9500af15eefde8f66ed03f5",
"sha256": "d8eae47e5bd2f361065cdf79e6d2d7bf806895ea46474a325daa911875e0cd6b"
},
"downloads": -1,
"filename": "aioyookassa-2.0.0.tar.gz",
"has_sig": false,
"md5_digest": "538216d9a9500af15eefde8f66ed03f5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8.1",
"size": 27633,
"upload_time": "2025-11-06T10:50:04",
"upload_time_iso_8601": "2025-11-06T10:50:04.149199Z",
"url": "https://files.pythonhosted.org/packages/fb/06/d9228d4df449ff9fb6b53f02c31eeece35fca71b2b697cc7a842bb69ac41/aioyookassa-2.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-06 10:50:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "masasibata",
"github_project": "aioyookassa",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "aioyookassa"
}