Closed boraicho closed 5 years ago
CancelBill тоже кидает исключение, хотя отрабатывает. После вызова, если через postman дёрнуть запрос, то видно что статус изменился на REJECTED. Что самое интересное, 20-ю минутами ранее, этот метод отрабатывал нормально, и возвращал результат
Мы постарались улучшить раздел документации посвященный обработки исключений.
А можете объяснить в чем конкретно проблема в случае данной ошибки? Ничего в голову не приходит, кроме как роптать на API.
Изрядно поковырявшись в этой ошибке я осознал несколько моментов: На сколько западло разработчику данного sdk И на сколько меня бесят разрабочики, которые не соблюдают свои же контракты
Теперь к сути... Если коротко, то чаще всего данная ошибка возникает из за невозможности десериализовать тело респонса из json.
В моем случае проблема была следующая: Мне нужно было задать лайфтайм платежа. Меня не смутило отсутствие данного свойства в sdk, и я смело пошел наворачивать его в кверю. Но неожиданно для себя открыл, что больше я не могу сделать ни один запрос (понял я это ой как не сразу, и уж тем более что два этих события как то связаны) Как оказалось, в api lifetime платежа, который мы передаем в uri этого самого платежа, по которому ходит юзер, прям как есть записывается в expirationDate платежа и далее передается в том же виде во все респонсы, где нам возвращается bill.
И проблема тут в том, что формат даты lifetime и всех других приходящих дат отличаются
lifetime: ГГГГ-ММ-ДДTччмм все остальные: yyyy-MM-ddTHH\:mm\:ss.fffzzz
по итогу из за того, что конфигурация json может иметь только один формат даты, который она будет парсить, он не сможет распарсирить expirationDate, а мы получим максимально неинформативный exception.
По итогу имеем:
и да... почему lifetime'ом называется то, что по факту обрабатывается как experationDate, а не время жизни??
Подскажите, в чем может быть проблема? руками дёргаю запрос через postman, он все возвращает. https://api.qiwi.com/partner/bill/v1/bills/225983dd-d225-4100-b57c-bc8dc56201ab
2019-04-28
` 23:27:38.3068||ERROR|Business.Services.Qiwi.QiwiService|Exception of type 'Qiwi.BillPayments.Exception.BillPaymentsServiceException' was thrown. Qiwi.BillPayments.Exception.BillPaymentsServiceException: Exception of type 'Qiwi.BillPayments.Exception.BillPaymentsServiceException' was thrown. at Qiwi.BillPayments.Client.RequestMappingIntercessor.DeserializeResponseBody[T](ResponseData response) at Qiwi.BillPayments.Client.RequestMappingIntercessor.RequestAsync[T](String method, String url, Dictionary
2 headers, Object entityOpt) at Qiwi.BillPayments.Client.BillPaymentsClient.GetBillInfoAsync[T](String billId) at Qiwi.BillPayments.Client.BillPaymentsClient.GetBillInfoAsync(String billId) at Common.QiwiClient.GetPaymentInfo(String billId) in C:\GFFG\Services\Common\QiwiClient.cs:line 66 at Business.Services.Qiwi.QiwiService.GetPaymentWaitingByUserId(Int32 userId) in C:\GFFG\Services\Business\Services\Qiwi\QiwiService.cs:line 92Можно ли сделать более информативные ошибки? из экспешена нифига не понятно, что произошло.