# aiomoney — простая асинхронная библиотека для работы с API ЮMoney
### Авторизация приложения
1. Зарегистрируйте новое приложение YooMoney по ссылке https://yoomoney.ru/myservices/new
(без указания чекбокса OAuth2!).
2. Получите и скопируйте `client_id` после создания приложения
3. Создайте запрос на получение api-токена.
[О правах приложения](https://yoomoney.ru/docs/wallet/using-api/authorization/protocol-rights)
```python
import asyncio
from os import environ
from aiomoney import authorize_app
async def main():
await authorize_app(
client_id=environ.get("CLIENT_ID"),
redirect_uri=environ.get("REDIRECT_URI"),
app_permissions=[
"account-info",
"operation-history",
"operation-details",
"incoming-transfers",
"payment-p2p",
"payment-shop",
]
)
if __name__ == "__main__":
asyncio.run(main())
```
4. Во время перенаправления по `redirect_uri` в адресной строке появится параметр `code=`.
Скопируйте значение и вставьте его в консоль
5. Если авторизация прошла успешно, в консоли отобразится Ваш api-token.
Сохраните его в переменную окружения (рекомендация)
### Получение основной информации об аккаунте
```python
import asyncio
from aiomoney.types import AccountInfo, Operation, OperationDetails
from aiomoney.wallet import YooMoneyWallet
async def main():
wallet = YooMoneyWallet(access_token="ACCESS_TOKEN")
account_info: AccountInfo = await wallet.account_info
operation_history: list[Operation] = await wallet.get_operation_history()
operation_details: OperationDetails = await wallet.get_operation_details(operation_id="999")
if __name__ == "__main__":
asyncio.run(main())
```
### Создание платёжной формы и проверка оплаты
```python
import asyncio
from aiomoney.wallet import YooMoneyWallet, PaymentSource
async def main():
wallet = YooMoneyWallet(access_token="ACCESS_TOKEN")
payment_form = await wallet.create_payment_form(
amount_rub=990,
unique_label="myproject_second_unicorn",
payment_source=PaymentSource.YOOMONEY_WALLET,
success_redirect_url="https://t.me/fofmow (nonono =/)"
)
# проверка платежа по label
payment_is_completed: bool = await wallet.check_payment_on_successful(payment_form.payment_label)
print(f"Ссылка на оплату:\n{payment_form.link_for_customer}\n\n"
f"Форма оплачена: {'Да' if payment_is_completed else 'Нет'}")
if __name__ == "__main__":
asyncio.run(main())
```
Raw data
{
"_id": null,
"home_page": "https://github.com/fofmow/aiomoney",
"name": "aiomoney",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "",
"keywords": "yoomoney python async",
"author": "fofmow",
"author_email": "fofmow@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/cd/bd/4d6eb3d4617184ababaf5685464a5ea8e636ef9a5974611b9cca76168083/aiomoney-1.0.11.tar.gz",
"platform": null,
"description": "# aiomoney \u2014 \u043f\u0440\u043e\u0441\u0442\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 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API \u042eMoney\r\n\r\n### \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\r\n\r\n1. \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0439\u0442\u0435 \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 YooMoney \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 https://yoomoney.ru/myservices/new\r\n (\u0431\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u0430 OAuth2!).\r\n2. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 `client_id` \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\r\n3. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 api-\u0442\u043e\u043a\u0435\u043d\u0430.\r\n [\u041e \u043f\u0440\u0430\u0432\u0430\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f](https://yoomoney.ru/docs/wallet/using-api/authorization/protocol-rights)\r\n\r\n ```python\r\n import asyncio\r\n from os import environ\r\n from aiomoney import authorize_app\r\n \r\n \r\n async def main():\r\n await authorize_app(\r\n client_id=environ.get(\"CLIENT_ID\"),\r\n redirect_uri=environ.get(\"REDIRECT_URI\"),\r\n app_permissions=[\r\n \"account-info\",\r\n \"operation-history\",\r\n \"operation-details\",\r\n \"incoming-transfers\",\r\n \"payment-p2p\",\r\n \"payment-shop\",\r\n ]\r\n )\r\n \r\n \r\n if __name__ == \"__main__\":\r\n asyncio.run(main())\r\n ```\r\n\r\n4. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e `redirect_uri` \u0432 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `code=`.\r\n \u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0435\u0433\u043e \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\r\n5. \u0415\u0441\u043b\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0441\u044f \u0412\u0430\u0448 api-token.\r\n \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0435\u0433\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f)\r\n\r\n### \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0435\r\n\r\n```python\r\nimport asyncio\r\nfrom aiomoney.types import AccountInfo, Operation, OperationDetails\r\nfrom aiomoney.wallet import YooMoneyWallet\r\n\r\n\r\nasync def main():\r\n wallet = YooMoneyWallet(access_token=\"ACCESS_TOKEN\")\r\n \r\n account_info: AccountInfo = await wallet.account_info\r\n operation_history: list[Operation] = await wallet.get_operation_history()\r\n operation_details: OperationDetails = await wallet.get_operation_details(operation_id=\"999\")\r\n\r\n\r\nif __name__ == \"__main__\":\r\n asyncio.run(main())\r\n```\r\n\r\n### \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u0451\u0436\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u043f\u043b\u0430\u0442\u044b\r\n\r\n```python\r\nimport asyncio\r\nfrom aiomoney.wallet import YooMoneyWallet, PaymentSource\r\n\r\n\r\nasync def main():\r\n wallet = YooMoneyWallet(access_token=\"ACCESS_TOKEN\")\r\n \r\n payment_form = await wallet.create_payment_form(\r\n amount_rub=990,\r\n unique_label=\"myproject_second_unicorn\",\r\n payment_source=PaymentSource.YOOMONEY_WALLET,\r\n success_redirect_url=\"https://t.me/fofmow (nonono =/)\"\r\n )\r\n # \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043b\u0430\u0442\u0435\u0436\u0430 \u043f\u043e label\r\n payment_is_completed: bool = await wallet.check_payment_on_successful(payment_form.payment_label)\r\n \r\n print(f\"\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u043f\u043b\u0430\u0442\u0443:\\n{payment_form.link_for_customer}\\n\\n\"\r\n f\"\u0424\u043e\u0440\u043c\u0430 \u043e\u043f\u043b\u0430\u0447\u0435\u043d\u0430: {'\u0414\u0430' if payment_is_completed else '\u041d\u0435\u0442'}\")\r\n\r\n\r\nif __name__ == \"__main__\":\r\n asyncio.run(main())\r\n\r\n```\r\n\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "\u041f\u0440\u043e\u0441\u0442\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 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API \u042eMoney",
"version": "1.0.11",
"split_keywords": [
"yoomoney",
"python",
"async"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "cdbd4d6eb3d4617184ababaf5685464a5ea8e636ef9a5974611b9cca76168083",
"md5": "e8d2aceaa1e2d5e50e45df1b440c9e81",
"sha256": "c8097ff6016efab9322b0b4085a4293799ff65f4b04cb824165b9bab2c7f82a0"
},
"downloads": -1,
"filename": "aiomoney-1.0.11.tar.gz",
"has_sig": false,
"md5_digest": "e8d2aceaa1e2d5e50e45df1b440c9e81",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 7108,
"upload_time": "2023-04-10T06:43:54",
"upload_time_iso_8601": "2023-04-10T06:43:54.690328Z",
"url": "https://files.pythonhosted.org/packages/cd/bd/4d6eb3d4617184ababaf5685464a5ea8e636ef9a5974611b9cca76168083/aiomoney-1.0.11.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-10 06:43:54",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "fofmow",
"github_project": "aiomoney",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "aiomoney"
}