Open fonrit opened 1 year ago
Может, просто достать статус из message
ошибки?
Это да, а вот AcquiringSdkException возвращает только статус (Из этой страницы https://www.tinkoff.ru/kassa/develop/api/payments) который нужно обрабатывать самим, не может ли он вернуть клиенто ориентированную ошибку как AcquiringApiException:
message: Попробуйте повторить попытку позже Не получилось оплатить. Воспользуйтесь другой картой или обратитесь к продавцу
Т.е. имеется в виду получение человекочитаемого сообщения от бэка для клиента?
Да. AcquiringApiException возвращает текст и код ошибки, с ним нет проблем кроме того что некоторый текст довольно кривой. А вот из AcquiringSdkException можно вытащить только message, который возвращается в таком виде "PaymentState = AUTH_FAIL", я могу сделать обработчик этих состояний локально, но хочется понимать подобная текстовка "PaymentState = AUTH_FAIL" будет возвращаться всегда с AcquiringSdkException, или он может вдруг вернуть уже текстовку с описанием ошибки
Не могли бы вы приложить логи, включающие запрос и ответ при получении этой ошибки?
Речь идет о исключении которое выбрасывает AcquiringSdkException или ошибки AcquiringApiException ?
Речь о запросе (насколько я понимаю, GetState
), который возвращает ответ со статусом платежа AUTH_FAIL
, т.е. network логи в которых присутствуют строки вида === Sending request
и === Got server response:
.
Я почему то вижу логи только с теста, с прода есть скрин дебага
Тест:
https://rest-api-test.tinkoff.ru/v2/GetState
Response: { "Success": true, "ErrorCode": "1014", "Message": "Карта недействительна", "TerminalKey": "TestSDK", "Status": "REJECTED", "PaymentId": "4072210335", "OrderId": "1323658787", "Params": [ { "Key": "Route", "Value": "ACQ" }, { "Key": "Source", "Value": "cards" } ], "Details": "Неправильные реквизиты — проверьте их или воспользуйтесь другой картой", "Amount": 1620 }
Прод:
Судя по респонсу на тесте getState может вернуть более детальную информацию о ошибке, но толка от этого нет так как она не передается дальше в ThreeDsViewModel:
Вы просто возвращаете message со статусом "PaymentState = AUTH_FAIL"
Было хорошо если AcquiringSdkException возвращал message (Опционально) и state, чтобы можно было локально Обработать ошибку в случае необходимости. А то сейчас в message возвращает state и не погрузившись не понятно state возвращается всегда или он может еще вернуть текст ошибки из getState
Можете пожалуйста ответить
Думаю, можно реализовать что-то подобное, но не в ближайшее время; скорее всего вместе с редизайном (ориентировочно - Q1 2023).
Можно ли классифицировать полученный exeption для персональной обработки ? В документации сказано что часть ошибок обрабатываются в самом sdk, остальные придется обрабатывать самим. Не понятно как из AcquiringSdkException достать статус ошибки AUTH_FAIL для персональной обработки
exeption ru.tinkoff.acquiring.sdk.exceptions.AcquiringSdkException: PaymentState = AUTH_FAIL