yoomoney / yookassa-payout-sdk-python

Python SDK for YooKassa Payouts API
https://yookassa.ru/developers
MIT License
4 stars 3 forks source link

Запрос завершается по таймауту #1

Open serker72 opened 3 years ago

serker72 commented 3 years ago

Доброго времени суток. При отправке запроса он долго висит и завершается по таймауту. В документации ЮКасса указан адрес сервера https://payouts.yookassa.ru:9094 Если исправить в файле yookassa-payout-sdk-python-master/src/yookassa_payout/configuration.py ссылку, данная проблема уходит.

Но при выполнении create_deposition возникает ошибка TypeError: argument of type 'NoneType' is not iterable

Traceback (most recent call last):
  File "yookassa-payout.py", line 133, in <module>
    yookassa_payout_phone(body={'phone_number': args.phone, 'amount': args.amount})
  File "yookassa-payout.py", line 98, in yookassa_payout_phone
    test_result = Payout.create_deposition(test_request)
  File "/home/ec2-user/yookassa-payout/library/yookassa-payout-sdk-python-master/src/yookassa_payout/payout.py", line 114, in create_deposition
    return DepositionResponseBuilder.build(response)
  File "/home/ec2-user/yookassa-payout/library/yookassa-payout-sdk-python-master/src/yookassa_payout/domain/response/deposition_response_builder.py", line 14, in build
    if cls.RESPONSE_TEST + 'Response' in data:
TypeError: argument of type 'NoneType' is not iterable

Блок кода:

test_request = TestDepositionRequest(
        agent_id=cfg['agent_id'],
        client_order_id=client_order_id,
        request_dt=request_dt,
        dst_account='41001614575714',
        amount='10.00',
        contract='Тестовая выплата',
        currency='643',
        payment_params={'pof_offer_accepted': True}
    )
    test_result = Payout.create_deposition(test_request)
ostulov commented 3 years ago

Добрый день!

Внесли небольшие изменения в SDK. Попробуйте проверить еще раз с самой последней версией SDK.

serker72 commented 3 years ago

Доброго времени суток.

Изменения частично помогли, выплаты стали попадать в ЛК тестового шлюза со статусом "Успешная выплата". Но на стороне скрипта python по прежнему возникает ошибка "TypeError: argument of type 'NoneType' is not iterable"

Блок кода:

request = MakeDepositionRequest()
request.agent_id = cfg['agent_id']
request.client_order_id = client_order_id
request.request_dt = request_dt
request.dst_account = '41001614575714'
request.amount = body['amount']
request.amount = '20'
request.contract = 'Тестовая выплата 2.1.0'
request.currency = '643'
request.payment_params = {'pof_offer_accepted': True}
print('MakeDepositionRequest: {}'.format(repr(request.__dict__)))
result = Payout.create_deposition(request)

Вывод скрипта:

MakeDepositionRequest: {'_RequestObject__request_dt': datetime.datetime(2021, 2, 19, 20, 46, 36, 683306), '_RequestObject__request_name': 'makeDeposition', '_DepositionRequest__agent_id': 500447, '_DepositionRequest__client_order_id': '5901b8f2-5c79-4815-b784-0ebddc663049', '_DepositionRequest__dst_account': '41001614575714', '_DepositionRequest__amount': 20.0, '_DepositionRequest__contract': 'Тестовая выплата 2.1.0', '_DepositionRequest__currency': 643, '_MakeDepositionRequest__payment_params': <yookassa_payout.domain.models.recipients.recipient.Recipient object at 0x7f1b207d98d0>}
Traceback (most recent call last):
  File "yookassa-payout.py", line 143, in <module>
    yookassa_payout_phone(body={'phone_number': args.phone, 'amount': args.amount})
  File "yookassa-payout.py", line 131, in yookassa_payout_phone
    result = Payout.create_deposition(request)
  File "/home/ec2-user/yookassa-payout/env/lib64/python3.6/site-packages/yookassa_payout/payout.py", line 114, in create_deposition
    return DepositionResponseBuilder.build(response)
  File "/home/ec2-user/yookassa-payout/env/lib64/python3.6/site-packages/yookassa_payout/domain/response/deposition_response_builder.py", line 14, in build
    if cls.RESPONSE_TEST + 'Response' in data:
TypeError: argument of type 'NoneType' is not iterable

pip list

Package         Version
--------------- ---------
certifi         2020.12.5
cffi            1.14.5
chardet         4.0.0
cryptography    3.4.5
idna            2.10
lxml            4.6.2
pip             21.0.1
pycparser       2.20
pyOpenSSL       20.0.1
python-dateutil 2.8.1
requests        2.25.1
setuptools      39.2.0
six             1.15.0
urllib3         1.26.3
yookassa-payout 2.1.0
ostulov commented 3 years ago

Добрый день!

Ошибка возникает из-за того, что не получается расшифровать ответ, полученный от ЮKassa на запрос выплаты. Проверьте, что расшифровка ответа производится с помощью правильного сертификата (публичного).

ostulov commented 3 years ago

Сделали еще одно обновление SDK, оно должно помочь решить возникающую у Вас проблему.