# YooMoney Payout API Python Client Library
[![Build Status](https://travis-ci.org/yoomoney/yookassa-payout-sdk-python.svg?branch=master)](https://travis-ci.org/yoomoney/yookassa-payout-sdk-python)
[![Latest Stable Version](https://img.shields.io/pypi/v/yookassa-payout.svg)](https://pypi.org/project/yookassa-payout/)
[![Total Downloads](https://img.shields.io/pypi/dm/yookassa-payout.svg)](https://pypi.org/project/yookassa-payout/)
[![License](https://img.shields.io/pypi/l/yookassa-payout.svg)](https://git.yoomoney.ru/projects/SDK/repos/yookassa-payout-sdk-python)
[Russian](README.md) | English
Client to work on the [Protocol for mass payouts](https://yookassa.ru/docs/payouts/api/using-api/basics?lang=en)
## Opportunities
You can with this SDK:
1. [Generate a certificate](https://yookassa.ru/docs/payment-solution/supplementary/security?lang=en) for interaction with YooMoney.
2. [Transfer money](https://yookassa.ru/docs/payouts/api/make-deposition/basics?lang=en) to individuals for wallets in YooMoney, mobile phone numbers, Bank cards and accounts (makeDeposition).
3. [To test the possibility of transfer of remittances](https://yookassa.ru/docs/payouts/api/make-deposition/basics?lang=en#test-deposition) to wallets in YooMoney (testDeposition).
4. [Keep track of the balance of payouts](https://yookassa.ru/docs/payouts/api/balance?lang=en) (balance).
5. [Receive notifications](https://yookassa.ru/docs/payouts/api/error-deposition-notification?lang=en) the unsuccessful status of transfers to a Bank account, card, or mobile phone (errorDepositionNotification).
## Requirements
* Python 3.5 (or later version)
* pip
## Installation
### Under console using pip
1. Install pip.
2. In the console, run the following command:
```bash
pip install yookassa-payout
```
### Under console using easy_install
1. Install easy_install.
2. In the console, run the following command:
```bash
easy_install --upgrade yookassa-payout
```
### Manually
1. In the console, run the following command:
```bash
wget https://git.yoomoney.ru/rest/api/latest/projects/SDK/repos/yookassa-payout-sdk-python/archive?format=zip -O yookassa-payout-sdk-python-master.zip
unzip yookassa-payout-sdk-python-master.zip -d yookassa-payout-sdk-python-master
cd yookassa-payout-sdk-python-master
python setup.py install
```
## Getting a certificate for authenticating requests
To interact with YooMoney.The cashier must obtain a certificate. For this:
1. Create a private key and a certificate request (CSR).
2. Fill out the certificate application form.
3. Exchange data with YooMoney.
### Step 1. Creating a private key and CSR
#### Using the SDK method
1. Import classes to create CSR
```python
from yookassa_payout.domain.models.organization import Organization
from yookassa_payout.payout import Payout
```
2. Create an instance of the `Organization` class with data for creating the request. All data must be entered in Latin.
```python
org = Organization({
"org_name": "YooMoney", # Organization Name (Latin)
"common_name": "/business/yoomoney", # Common Name, for example the name of your organization; must start with В«/business/В»
"email": "cms@yoomoney.ru" # Email
})
```
3. Create a CSR and a private key.
```python
# Specify the location where the files should be saved and the password for the private key (if necessary)
Payout.get_csr(org, './files/output', '12345')
```
As a result, the SDK will generate a private key, CSR, and a text file with an electronic signature (necessary for further steps).
#### Via the console
1. In the console, go to your project folder.
```bash
cd '<your project folder>'
```
2. Execute the command:
```
yookassa-payout -getcsr
```
3. Enter data for the certificate, following the instructions on the screen. The text must be entered in Latin letters.
As a result, the SDK will generate a private key, CSR, and a text file with an electronic signature (necessary for further steps).
### Step 2. Filling out the certificate application
[Download the application](https://yoomoney.ru/i/forms/ssl_cert_form.doc) to the certificate, fill it out and print it out. Sign and seal the document. Scan.
| **Parameter** | **Description** |
|:-------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| CN | Must match the value of the Common Name parameter (eg, YOUR name). For example, */business/predpriyatie*. |
| Electronic signature of the certificate request | The text view obtained in the previous step. |
| Organization name in Latin letters | Must match the value of the Organization Name parameter (eg, company) *Internet Widgits Pty Ltd*. |
| The reason for the request | Possible options: <ul><li>*initial* — to get the first certificate;</li><li>*scheduled replacement* — to replace a certificate that has expired;</li><li>*replacement of a compromised* — to replace a previously issued certificate in the event of a security breach;</li><li>*adding a server* — to use the new certificate on additional servers or services.</li></ul> |
| Contact person (full name, phone number, e-mail) | Contact a specialist to contact you if you have any questions about the issued certificate. |
### Step 3. Data exchange with YooMoney
Send the certificate request file (request.csr) and a scan of the request by email to your YooMoney Manager.Box office.
In response to the request, the Manager will send a file with the certificate within 2 business days. The certificate is valid for 1 year.
Place the received certificate on your server
## Start of work
1. Determine what types of payouts you need and whether you want to check your balance.
2. Import required classes
```python
from yookassa_payout.domain.common.keychain import KeyChain
from yookassa_payout.configuration import Configuration
from yookassa_payout.payout import Payout
```
3. Import the classes you need to solve your problems.
4. Create an instance of the `KeyChain` class by passing the path to the public key, the path to the private key, and, if necessary, the password for the private key.
```python
keychain = KeyChain('publicCert.cer', 'privateCert.pem', 'password')
```
5. Create an instance of the `Client` class and pass the gateway ID from the [merchant profile](https://yookassa.ru/my) YooMoney and instance of the `KeyChain` class.
```python
Configuration.configure('000000', keychain)
```
6. Call the appropriate method. [More information about making payouts](https://yookassa.ru/docs/payouts/api/using-api/basics?lang=en)
#### Example of payout to a Bank account
```python
# Importing classes
from yookassa_payout.configuration import Configuration
from yookassa_payout.payout import Payout
from yookassa_payout.domain.common.keychain import KeyChain
from yookassa_payout.domain.models.recipients.bank_account_recipient import BankAccountRecipient
from yookassa_payout.domain.request.make_deposition_request import MakeDepositionRequest
# Creating a housekeeper and saving settings
keychain = KeyChain('./files/250000.cer', './files/privateKey.pem', '12345')
Configuration.configure(250000, keychain)
# Getting the current balance
balance = Payout.get_balance()
# The compilation of data on the beneficiary
recipient = BankAccountRecipient()
recipient.pof_offer_accepted = True
recipient.bank_name = 'Barclays'
recipient.bank_city = 'London'
recipient.bank_cor_account = '30101810400000000225'
recipient.customer_account = '40817810255030943620'
recipient.bank_bik = '042809679'
recipient.payment_purpose = 'Refund under the agreement 25-001, without VAT'
recipient.pdr_first_name = 'John'
recipient.pdr_last_name = 'Watson'
recipient.pdr_doc_number = '4002109067'
recipient.pdr_doc_issue_date = '1999-07-30'
recipient.pdr_address = 'Baker street, 221'
recipient.pdr_birth_date = '1987-05-24'
recipient.sms_phone_number = '79653457676'
# Preparing a request to create a payout
request = MakeDepositionRequest()
request.agent_id = 250000
request.client_order_id = '215d8da0-000f-50be-b000-0003308c89be'
request.request_dt = '2020-03-04T15:39:45.456+03:00'
request.payment_params = recipient
# The carrying out of the payout
result = Payout.create_deposition(request)
```
Raw data
{
"_id": null,
"home_page": "https://git.yoomoney.ru/projects/SDK/repos/yookassa-payout-sdk-python",
"name": "yookassa-payout",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.5",
"maintainer_email": "",
"keywords": "yoomoney,yookassa,payout,sdk,python",
"author": "YooMoney",
"author_email": "cms@yoomoney.ru",
"download_url": "https://files.pythonhosted.org/packages/6b/09/cae432bf25e21554e2769e7bc3260d4514d20bf633d220850038e3ad7c20/yookassa-payout-2.5.2.tar.gz",
"platform": null,
"description": "# YooMoney Payout API Python Client Library\n\n[![Build Status](https://travis-ci.org/yoomoney/yookassa-payout-sdk-python.svg?branch=master)](https://travis-ci.org/yoomoney/yookassa-payout-sdk-python)\n[![Latest Stable Version](https://img.shields.io/pypi/v/yookassa-payout.svg)](https://pypi.org/project/yookassa-payout/)\n[![Total Downloads](https://img.shields.io/pypi/dm/yookassa-payout.svg)](https://pypi.org/project/yookassa-payout/)\n[![License](https://img.shields.io/pypi/l/yookassa-payout.svg)](https://git.yoomoney.ru/projects/SDK/repos/yookassa-payout-sdk-python)\n\n[Russian](README.md) | English\n\nClient to work on the [Protocol for mass payouts](https://yookassa.ru/docs/payouts/api/using-api/basics?lang=en)\n\n## Opportunities\nYou can with this SDK:\n1. [Generate a certificate](https://yookassa.ru/docs/payment-solution/supplementary/security?lang=en) for interaction with YooMoney.\n2. [Transfer money](https://yookassa.ru/docs/payouts/api/make-deposition/basics?lang=en) to individuals for wallets in YooMoney, mobile phone numbers, Bank cards and accounts (makeDeposition).\n3. [To test the possibility of transfer of remittances](https://yookassa.ru/docs/payouts/api/make-deposition/basics?lang=en#test-deposition) to wallets in YooMoney (testDeposition).\n4. [Keep track of the balance of payouts](https://yookassa.ru/docs/payouts/api/balance?lang=en) (balance).\n5. [Receive notifications](https://yookassa.ru/docs/payouts/api/error-deposition-notification?lang=en) the unsuccessful status of transfers to a Bank account, card, or mobile phone (errorDepositionNotification).\n\n## Requirements\n* Python 3.5 (or later version)\n* pip\n\n## Installation\n### Under console using pip\n\n1. Install pip.\n2. In the console, run the following command:\n```bash\npip install yookassa-payout\n```\n\n### Under console using easy_install\n1. Install easy_install.\n2. In the console, run the following command:\n```bash\neasy_install --upgrade yookassa-payout\n```\n\n### Manually\n1. In the console, run the following command:\n```bash\nwget https://git.yoomoney.ru/rest/api/latest/projects/SDK/repos/yookassa-payout-sdk-python/archive?format=zip -O yookassa-payout-sdk-python-master.zip\nunzip yookassa-payout-sdk-python-master.zip -d yookassa-payout-sdk-python-master\ncd yookassa-payout-sdk-python-master\npython setup.py install\n```\n\n## Getting a certificate for authenticating requests\nTo interact with YooMoney.The cashier must obtain a certificate. For this:\n1. Create a private key and a certificate request (CSR).\n2. Fill out the certificate application form.\n3. Exchange data with YooMoney.\n\n### Step 1. Creating a private key and CSR\n\n#### Using the SDK method\n1. Import classes to create CSR\n```python\nfrom yookassa_payout.domain.models.organization import Organization\nfrom yookassa_payout.payout import Payout\n```\n\n2. Create an instance of the `Organization` class with data for creating the request. All data must be entered in Latin.\n```python\norg = Organization({\n \"org_name\": \"YooMoney\", # Organization Name (Latin)\n \"common_name\": \"/business/yoomoney\", # Common Name, for example the name of your organization; must start with \u0412\u00ab/business/\u0412\u00bb\n \"email\": \"cms@yoomoney.ru\" # Email\n})\n```\n3. Create a CSR and a private key.\n```python\n# Specify the location where the files should be saved and the password for the private key (if necessary)\nPayout.get_csr(org, './files/output', '12345')\n```\nAs a result, the SDK will generate a private key, CSR, and a text file with an electronic signature (necessary for further steps).\n\n#### Via the console\n1. In the console, go to your project folder.\n```bash\ncd '<your project folder>'\n```\n\n2. Execute the command:\n```\nyookassa-payout -getcsr\n```\n\n3. Enter data for the certificate, following the instructions on the screen. The text must be entered in Latin letters.\nAs a result, the SDK will generate a private key, CSR, and a text file with an electronic signature (necessary for further steps).\n\n### Step 2. Filling out the certificate application\n[Download the application](https://yoomoney.ru/i/forms/ssl_cert_form.doc) to the certificate, fill it out and print it out. Sign and seal the document. Scan.\n\n| **Parameter** | **Description** |\n|:-------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| CN | Must match the value of the Common Name parameter (eg, YOUR name). For example, */business/predpriyatie*. |\n| Electronic signature of the certificate request | The text view obtained in the previous step. |\n| Organization name in Latin letters | Must match the value of the Organization Name parameter (eg, company) *Internet Widgits Pty Ltd*. |\n| The reason for the request | Possible options: <ul><li>*initial* \u0432\u0402\u201d to get the first certificate;</li><li>*scheduled replacement* \u0432\u0402\u201d to replace a certificate that has expired;</li><li>*replacement of a compromised* \u0432\u0402\u201d to replace a previously issued certificate in the event of a security breach;</li><li>*adding a server* \u0432\u0402\u201d to use the new certificate on additional servers or services.</li></ul> |\n| Contact person (full name, phone number, e-mail) | Contact a specialist to contact you if you have any questions about the issued certificate. |\n\n### Step 3. Data exchange with YooMoney\nSend the certificate request file (request.csr) and a scan of the request by email to your YooMoney Manager.Box office.\nIn response to the request, the Manager will send a file with the certificate within 2 business days. The certificate is valid for 1 year.\nPlace the received certificate on your server\n\n## Start of work\n1. Determine what types of payouts you need and whether you want to check your balance.\n2. Import required classes\n```python\nfrom yookassa_payout.domain.common.keychain import KeyChain\nfrom yookassa_payout.configuration import Configuration\nfrom yookassa_payout.payout import Payout\n```\n\n3. Import the classes you need to solve your problems.\n4. Create an instance of the `KeyChain` class by passing the path to the public key, the path to the private key, and, if necessary, the password for the private key.\n```python\nkeychain = KeyChain('publicCert.cer', 'privateCert.pem', 'password')\n```\n\n5. Create an instance of the `Client` class and pass the gateway ID from the [merchant profile](https://yookassa.ru/my) YooMoney and instance of the `KeyChain` class.\n```python\nConfiguration.configure('000000', keychain)\n```\n\n6. Call the appropriate method. [More information about making payouts](https://yookassa.ru/docs/payouts/api/using-api/basics?lang=en)\n\n#### Example of payout to a Bank account\n```python\n# Importing classes\nfrom yookassa_payout.configuration import Configuration\nfrom yookassa_payout.payout import Payout\nfrom yookassa_payout.domain.common.keychain import KeyChain\nfrom yookassa_payout.domain.models.recipients.bank_account_recipient import BankAccountRecipient\nfrom yookassa_payout.domain.request.make_deposition_request import MakeDepositionRequest\n\n# Creating a housekeeper and saving settings\nkeychain = KeyChain('./files/250000.cer', './files/privateKey.pem', '12345')\nConfiguration.configure(250000, keychain)\n\n# Getting the current balance\nbalance = Payout.get_balance()\n\n# The compilation of data on the beneficiary\nrecipient = BankAccountRecipient()\nrecipient.pof_offer_accepted = True\nrecipient.bank_name = 'Barclays'\nrecipient.bank_city = 'London'\nrecipient.bank_cor_account = '30101810400000000225'\nrecipient.customer_account = '40817810255030943620'\nrecipient.bank_bik = '042809679'\nrecipient.payment_purpose = 'Refund under the agreement 25-001, without VAT'\nrecipient.pdr_first_name = 'John'\nrecipient.pdr_last_name = 'Watson'\nrecipient.pdr_doc_number = '4002109067'\nrecipient.pdr_doc_issue_date = '1999-07-30'\nrecipient.pdr_address = 'Baker street, 221'\nrecipient.pdr_birth_date = '1987-05-24'\nrecipient.sms_phone_number = '79653457676'\n\n# Preparing a request to create a payout\nrequest = MakeDepositionRequest()\nrequest.agent_id = 250000\nrequest.client_order_id = '215d8da0-000f-50be-b000-0003308c89be'\nrequest.request_dt = '2020-03-04T15:39:45.456+03:00'\nrequest.payment_params = recipient\n\n# The carrying out of the payout\nresult = Payout.create_deposition(request)\n```",
"bugtrack_url": null,
"license": "MIT",
"summary": "YooKassa Payout API SDK Python Library",
"version": "2.5.2",
"project_urls": {
"Homepage": "https://git.yoomoney.ru/projects/SDK/repos/yookassa-payout-sdk-python"
},
"split_keywords": [
"yoomoney",
"yookassa",
"payout",
"sdk",
"python"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6b09cae432bf25e21554e2769e7bc3260d4514d20bf633d220850038e3ad7c20",
"md5": "4a6b9a35c2eed5dc55ef8bbc39352339",
"sha256": "c0370f23f92aab587ef4e4bb34221466a50e5a3ca5ce80634f08c9677e95dbdd"
},
"downloads": -1,
"filename": "yookassa-payout-2.5.2.tar.gz",
"has_sig": false,
"md5_digest": "4a6b9a35c2eed5dc55ef8bbc39352339",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.5",
"size": 39539,
"upload_time": "2023-09-27T08:27:06",
"upload_time_iso_8601": "2023-09-27T08:27:06.261119Z",
"url": "https://files.pythonhosted.org/packages/6b/09/cae432bf25e21554e2769e7bc3260d4514d20bf633d220850038e3ad7c20/yookassa-payout-2.5.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-09-27 08:27:06",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "yookassa-payout"
}