Skip to main content

This is an unofficial YooMoney API python library.

Summary

Introduction

This repository is based on the official documentation of YooMoney.

Features

Implemented methods:

  • Access token - Getting an access token

  • Account information - Getting information about the status of the user account.

  • Operation history - This method allows viewing the full or partial history of operations in page mode. History records are displayed in reverse chronological order (from most recent to oldest).

  • Operation details - Provides detailed information about a particular operation from the history.

  • Quickpay forms - The YooMoney form is a set of fields with information about a transfer. You can embed payment form into your interface (for instance, a website or blog). When the sender pushes the button, the details from the form are sent to YooMoney and an order for a transfer to your wallet is initiated.

Installation

You can install with:

pip install AsyncYoomoney --upgrade

You can install from source with:

git clone https://github.com/vxjnc/async-yoomoney-api.git --recursive
cd async-yoomoney-api
python setup.py install

Quick start

Access token

First of all we need to receive an access token.

token.gif
  1. Log in to your YooMoney wallet with your username. If you do not have a wallet, create it.

  2. Go to the App registration page.

  3. Set the application parameters. Save CLIENT_ID and YOUR_REDIRECT_URI for net steps

  4. Click the Confirm button.

  5. Paste CLIENT_ID, REDIRECT_URI and CLIENT_SECRET insted of YOUR_CLIENT_ID, YOUR_REDIRECT_URI and YOUR_CLIENT_SECRET. Choose scopes and run code.

  6. Follow all steps from the program.

import asyncio
from AsyncYoomoney import Authorize

asyncio.run(Authorize.create(
    client_id="YOUR_CLIENT_ID",
    redirect_uri="YOUR_REDIRECT_URI",
    client_secret="YOUR_CLIENT_SECRET",
    scope=["account-info",
           "operation-history",
           "operation-details",
           "incoming-transfers",
           "payment-p2p",
           "payment-shop",
          ]
))

You are done with the most difficult part!

Account information

Paste YOUR_TOKEN and run this code:

import asyncio
from AsyncYoomoney import Client

token = "YOUR_TOKEN"

client = Client(token)

user = asyncio.run(client.account_info())

print("Account number:", user.account)
print("Account balance:", user.balance)
print("Account currency code in ISO 4217 format:", user.currency)
print("Account status:", user.account_status)
print("Account type:", user.account_type)

print("Extended balance information:")
for pair in vars(user.balance_details):
    print("\t-->", pair, ":", vars(user.balance_details).get(pair))

print("Information about linked bank cards:")
cards = user.cards_linked

if len(cards) != 0:
    for card in cards:
        print(card.pan_fragment, " - ", card.type)
else:
    print("No card is linked to the account")

Output:

Account number: 410019014512803
Account balance: 999999999999.99
Account currency code in ISO 4217 format: 643
Account status: identified
Account type: personal
Extended balance information:
--> total : 999999999999.99
--> available : 999999999999.99
--> deposition_pending : None
--> blocked : None
--> debt : None
--> hold : None
Information about linked bank cards:
No card is linked to the account

Operation history

Paste YOUR_TOKEN and run this code:

import asyncio
from AsyncYoomoney import Client

token = "YOUR_TOKEN"

client = Client(token)

history = asyncio.run(client.operation_history())

print("List of operations:")
print("Next page starts with: ", history.next_record)

for operation in history.operations:
    print()
    print("Operation:",operation.operation_id)
    print("\tStatus     -->", operation.status)
    print("\tDatetime   -->", operation.datetime)
    print("\tTitle      -->", operation.title)
    print("\tPattern id -->", operation.pattern_id)
    print("\tDirection  -->", operation.direction)
    print("\tAmount     -->", operation.amount)
    print("\tLabel      -->", operation.label)
    print("\tType       -->", operation.type)

Output:

List of operations:
Next page starts with:  None

Operation: 670278348725002105
Status     --> success
Datetime   --> 2021-10-10 10:10:10
Title      --> Пополнение с карты ****4487
Pattern id --> None
Direction  --> in
Amount     --> 100500.0
Label      --> 3784030974
Type       --> deposition

Operation: 670244335488002313
Status     --> success
Datetime   --> 2021-10-10 10:10:10
Title      --> Перевод от 410019014512803
Pattern id --> p2p
Direction  --> in
Amount     --> 100500.0
Label      --> 7920963969
Type       --> incoming-transfer

Operation details

Paste YOUR_TOKEN with an OPERATION_ID (example: 670244335488002312) from previous example output and run this code:

import asyncio
from AsyncYoomoney import Client

token = "YOUR_TOKEN"

client = Client(token)

details = asyncio.run(client.operation_details(operation_id="OPERATION_ID"))

properties = [i for i in details.__dict__.keys() if i[:1] != '_']

max_size = len(max(properties, key=len))

for prop in properties:
    print(prop, " " * (max_size - len(prop)), "-->", str(details.__getattribute__(prop)).replace('\n', ' '))

Output:

operation_id     --> 670244335488002312
status           --> success
pattern_id       --> p2p
direction        --> in
amount           --> 100500.0
amount_due       --> None
fee              --> None
datetime         --> 2021-10-10 10:10:10
title            --> Перевод от 410019014512803
sender           --> 410019014512803
recipient        --> None
recipient_type   --> None
message          --> Justtext
comment          --> None
codepro          --> False
protection_code  --> None
expires          --> None
answer_datetime  --> None
label            --> 7920963969
details          --> Justtext
type             --> incoming-transfer
digital_goods    --> None

Quickpay forms

Run this code:

import asyncio
from AsyncYoomoney import Quickpay

quickpay = asyncio.run(Quickpay.create(
    receiver="410019014512803",
    quickpay_form="shop",
    targets="Sponsor this project",
    paymentType="SB",
    sum=150,
))

print(quickpay.base_url)
print(quickpay.redirected_url)

Output:

https://yoomoney.ru/quickpay/confirm.xml?receiver=410019014512803&quickpay-form=shop&targets=Sponsor%20this%20project&paymentType=SB&sum=150
https://yoomoney.ru/transfer/quickpay?requestId=343532353937313933395f66326561316639656131626539326632616434376662373665613831373636393537613336383639

Metadata

Release files for AsyncYoomoney 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for AsyncYoomoney 0.1.4
File Size Uploaded Provenance
AsyncYoomoney-0.1.4.tar.gz 25.0 kB Without provenance Details

Release files / AsyncYoomoney-0.1.4.tar.gz

Download URL AsyncYoomoney-0.1.4.tar.gz
Size 25.0 kB
Tags Source
SHA-256 checksum
How to use checksums
562dae369222982d80ed936f0ad28d5d848b07afd05a3903427ecbc53f61b97a
BLAKE2b-256 checksum
How to use checksums
fa526c6e83196a94c52c9b38f2d926ecca0e2b37bbcc3fc0e2392fdef1861353
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.10.11

Security for AsyncYoomoney 0.1.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page