WhiteApfel / pyQiwiP2P

Simple wrapper for comfortable work with the API of payment system for individuals QiwiP2P
Mozilla Public License 2.0
55 stars 12 forks source link

Выдает ошибку, хотя сделал все как в документации #2

Closed re-dream-it closed 3 years ago

re-dream-it commented 3 years ago
from pyqiwip2p import QiwiP2P
from pyqiwip2p.types import QiwiCustomer, QiwiDatetime

QIWI_PRIV_KEY = "eyJ2(специально убрал)ifX0"

p2p = QiwiP2P(auth_key = QIWI_PRIV_KEY)

# Выставим счет на сумму 228 рублей который будет работать 45 минут
new_bill = p2p.bill(bill_id = 212332030, amount = 228, lifetime = 45)
print(new_bill)

Вот мой элементарный код для выставления счета, ничего более... Выдает вот такую ошибку:

Traceback (most recent call last):
  File "G:\codes\qiwi.py", line 10, in <module>
    new_bill = p2p.bill(bill_id=212332030, amount=228, lifetime=45)
  File "C:\Users\Odekulles\AppData\Local\Programs\Python\Python39\lib\site-packages\pyqiwip2p\Qiwip2p.py", line 77, in bill
    qiwi_response = Bill(requests.put(f"https://api.qiwi.com/partner/bill/v1/bills/{bill_id}",
  File "C:\Users\Odekulles\AppData\Local\Programs\Python\Python39\lib\site-packages\pyqiwip2p\types\Responses.py", line 47, in init
    self.r_json = response.json() if type(response) is Response else response
  File "C:\Users\Odekulles\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\models.py", line 900, in json
    return complexjson.loads(self.text, **kwargs)
  File "C:\Users\Odekulles\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "C:\Users\Odekulles\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\Odekulles\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
WhiteApfel commented 3 years ago

Привет! Проблема со стороны Qiwi, они возвращают страницу ошибки, а не JSON с ошибкой, что указано в их доке. Уже работаю над обработчиком конкретно этого косяка, в одном из следующих коммитов появится отдельный экзепшн

WhiteApfel commented 3 years ago

https://pypi.org/project/pyQiwiP2P/1.0a8/

Теперь явно даю понять, что киви косячат

re-dream-it commented 3 years ago

Т.Е. проблемы у них? я все сделал правильно?

https://pypi.org/project/pyQiwiP2P/1.0a8/

Теперь явно даю понять, что киви косячат

WhiteApfel commented 3 years ago

Т.Е. проблемы у них? я все сделал правильно?

Я не компилятор, но код из примера работал. Не забудьте обновиться, это делается командой python -m pip install -U pyqiwip2p

WhiteApfel commented 3 years ago

Резюмирую проблему

Qiwi возвращает не JSON по непонятным причинам JSONDecoder не может декодировать не JSON JSONDecoder возвращал ошибку декодирования

Резюмирую действия со своей стороны

Добавил исключение на ошибку декодирования Исключение вызывает ValueError "Qiwi response is not JSON" Выпустил обновление 1.0a8 с исправлением

Что предстоит сделать

Написать в документации про ошибку

Проблему считаю закрытой.

Oven29 commented 1 year ago

Привет столкнулся с такой же ошибкой, ты сделал токен оплаты не там, киви может выдавать разные токены оплаты, с этим токеном работает другая библиотека киви симпл киви. Вот ссылка туда куда нужно https://qiwi.com/p2p-admin/transfers

Hi, I encountered the same error, you made the payment token in the wrong place, kiwi can issue different payment tokens, another kiwi simple kiwi library works with this token. Here is a link to where you need to go https://qiwi.com/p2p-admin/transfers