Russian | English
Клиент для работы по Протоколу массовых выплат
С помощью этого SDK вы можете:
- Генерировать сертификат для взаимодействия с ЮKassa.
- Переводить деньги физическим лицам на кошельки в ЮMoney, номера мобильных телефонов, банковские карты и счета (makeDeposition).
- Проверять возможность зачисления переводов на кошельки в ЮMoney (testDeposition).
- Отслеживать баланс выплат (balance).
- Получать уведомления о неуспешном статусе переводов на банковский счет, карту, мобильный телефон (errorDepositionNotification).
- Python 3.5 (и выше)
- pip
- Установите pip.
- В консоли выполните команду
pip install yookassa-payout
- Установите easy_install.
- В консоли выполните команду
easy_install --upgrade yookassa-payout
- В консоли выполните команды:
wget https://github.com/yoomoney/yookassa-payout-sdk-python/archive/master.zip
tar zxf yookassa-payout-sdk-python-master.tar.gz
cd yookassa-payout-sdk-python-master
python setup.py install
- Установите easy_install.
- В консоли выполните команду
easy_install --upgrade yookassa_payout
- В консоли выполните команды:
wget https://github.com/yoomoney/yookassa-payout-sdk-python/archive/master.zip
tar zxf yookassa-payout-sdk-python-master.tar.gz
cd yookassa-payout-sdk-python-master
python setup.py install
Для взаимодействия с ЮKassa необходимо получить сертификат. Для этого:
- Создайте приватный ключ и запрос на получение сертификата (CSR).
- Заполните заявку на сертификат.
- Обменяйтесь данными с ЮKassa.
- Импортируйте классы для создания CSR
from yookassa_payout.domain.models.organization import Organization
from yookassa_payout.payout import Payout
- Создайте экземпляр класса
Organization
с данными для создания заявки. Все данные нужно вводить латиницей.
org = Organization({
"org_name": "YooMoney", # Название вашей организации (латиницей)
"common_name": "/business/yoomoney", # Имя сервера без пробелов, например название вашей организации; должно начинаться с «/business/»
"email": "cms@yoomoney.ru" # Адрес электронной почты
})
- Создайте CSR и приватный ключ.
# Укажите место, куда должны сохраниться файлы, и пароль для приватного ключа (при необходимости)
Payout.get_csr(org, './files/output', '12345')
В результате SDK сгенерирует приватный ключ, CSR и текстовый файл с электронной подписью (нужно для дальнейших шагов).
- В консоли перейдите в папку вашего проекта.
cd '<путь к проекту>'
- Выполните команду:
yookassa-payout -getcsr
- Введите данные для сертификата, следуя указаниям на экране. Текст необходимо вводить латинскими буквами. В результате SDK сгенерирует приватный ключ, CSR и текстовый файл с электронной подписью (нужно для дальнейших шагов).
Скачайте заявку на сертификат, заполните и распечатайте. Поставьте подпись и печать. Отсканируйте.
Параметр | Описание |
---|---|
CN | Должно соответствовать значению параметра Common Name (eg, YOUR name). Например, /business/predpriyatie. |
Электронная подпись запроса на сертификат | Текстовое представление, полученное на предыдущем шаге. |
Наименование организации латинскими буквами | Должно соответствовать значению параметра Organization Name (eg, company) Internet Widgits Pty Ltd. |
Причина запроса | Возможные варианты:
|
Контактное лицо (ФИО, телефон, e-mail) | Контакты специалиста для связи при возникновении вопросов по выданному сертификату. |
Отправьте файл запроса на сертификат (request.csr) и скан заявки по электронной почте своему менеджеру ЮKassa. В ответ на заявку менеджер в течение 2 рабочих дней пришлет файл с сертификатом. Срок действия сертификата 1 год. Разместите полученный сертификат на своем сервере
- Определите, какие виды выплат вам нужны и хотите ли вы проверять баланс.
- Импортируйте обязательные классы
from yookassa_payout.domain.common.keychain import KeyChain
from yookassa_payout.configuration import Configuration
from yookassa_payout.payout import Payout
- Импортируйте классы, необходимые для решения ваших задач.
- Создайте экземпляр класса
KeyChain
, передав в него путь к публичному ключу, путь к приватному ключу и, при необходимости, пароль приватного ключа.
keychain = KeyChain('publicCert.cer', 'privateCert.pem', 'password')
- Создайте экземпляр класса
Client
и передайте идентификатор шлюза из личного кабинета ЮKassa и экземпляр классаKeyChain
.
Configuration.configure('000000', keychain)
- Вызовите нужный метод. Подробнее о проведении выплат
# Импорт классов
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
# Создание ключницы и сохранение настроек
keychain = KeyChain('./files/250000.cer', './files/privateKey.pem', '12345')
Configuration.configure(250000, keychain)
# Получение текущего баланса
balance = Payout.get_balance()
# Подготовка данных о получателе выплаты
recipient = BankAccountRecipient()
recipient.pof_offer_accepted = True
recipient.bank_name = 'ПАО Сбербанк'
recipient.bank_city = 'г.Москва'
recipient.bank_cor_account = '30101810400000000225'
recipient.customer_account = '40817810255030943620'
recipient.bank_bik = '042809679'
recipient.payment_purpose = 'Возврат по договору 25-001, без НДС'
recipient.pdr_first_name = 'Владимир'
recipient.pdr_middle_name = 'Владимирович'
recipient.pdr_last_name = 'Владимиров'
recipient.pdr_doc_number = '4002109067'
recipient.pdr_doc_issue_date = '1999-07-30'
recipient.pdr_address = 'пос.Большие Васюки, ул.Комиссара Козявкина, д.4'
recipient.pdr_birth_date = '1987-05-24'
recipient.sms_phone_number = '79653457676'
# Подготовка запроса на создание выплаты
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
# Проведение выплаты
result = Payout.create_deposition(request)