WhiteApfel/pyQiwiP2P

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

re-dream-it opened this issue · 6 comments

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Привет столкнулся с такой же ошибкой, ты сделал токен оплаты не там, киви может выдавать разные токены оплаты, с этим токеном работает другая библиотека киви симпл киви. Вот ссылка туда куда нужно 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