Skip to content

Обработка ошибок #149

Open
fonrit opened this issue Dec 3, 2022 · 11 comments
Open

Обработка ошибок #149

fonrit opened this issue Dec 3, 2022 · 11 comments

Comments

@fonrit
Copy link

fonrit commented Dec 3, 2022

Можно ли классифицировать полученный exeption для персональной обработки ?
В документации сказано что часть ошибок обрабатываются в самом sdk, остальные придется обрабатывать самим.
Не понятно как из AcquiringSdkException достать статус ошибки AUTH_FAIL для персональной обработки

exeption ru.tinkoff.acquiring.sdk.exceptions.AcquiringSdkException: PaymentState = AUTH_FAIL

@IlnarH
Copy link
Collaborator

IlnarH commented Dec 8, 2022

Может, просто достать статус из message ошибки?

@fonrit
Copy link
Author

fonrit commented Dec 8, 2022

Это да, а вот AcquiringSdkException возвращает только статус (Из этой страницы https://www.tinkoff.ru/kassa/develop/api/payments) который нужно обрабатывать самим, не может ли он вернуть клиенто ориентированную ошибку как AcquiringApiException:

message: Попробуйте повторить попытку позже Не получилось оплатить. Воспользуйтесь другой картой или обратитесь к продавцу

@IlnarH
Copy link
Collaborator

IlnarH commented Dec 13, 2022

Т.е. имеется в виду получение человекочитаемого сообщения от бэка для клиента?

@fonrit
Copy link
Author

fonrit commented Dec 13, 2022

Да. AcquiringApiException возвращает текст и код ошибки, с ним нет проблем кроме того что некоторый текст довольно кривой. А вот из AcquiringSdkException можно вытащить только message, который возвращается в таком виде "PaymentState = AUTH_FAIL", я могу сделать обработчик этих состояний локально, но хочется понимать подобная текстовка "PaymentState = AUTH_FAIL" будет возвращаться всегда с AcquiringSdkException, или он может вдруг вернуть уже текстовку с описанием ошибки

@IlnarH
Copy link
Collaborator

IlnarH commented Dec 13, 2022

Не могли бы вы приложить логи, включающие запрос и ответ при получении этой ошибки?

@fonrit
Copy link
Author

fonrit commented Dec 13, 2022

Речь идет о исключении которое выбрасывает AcquiringSdkException или ошибки AcquiringApiException ?

@IlnarH
Copy link
Collaborator

IlnarH commented Dec 13, 2022

Речь о запросе (насколько я понимаю, GetState), который возвращает ответ со статусом платежа AUTH_FAIL, т.е. network логи в которых присутствуют строки вида === Sending request и === Got server response:.

@fonrit
Copy link
Author

fonrit commented Dec 13, 2022

Я почему то вижу логи только с теста, с прода есть скрин дебага

Тест:

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
}

Прод:
Снимок экрана 2022-12-13 в 18 47 06

Судя по респонсу на тесте getState может вернуть более детальную информацию о ошибке, но толка от этого нет так как она не передается дальше в ThreeDsViewModel:
Снимок экрана 2022-12-13 в 18 56 10
Вы просто возвращаете message со статусом "PaymentState = AUTH_FAIL"

@fonrit
Copy link
Author

fonrit commented Dec 13, 2022

Было хорошо если AcquiringSdkException возвращал message (Опционально) и state, чтобы можно было локально Обработать ошибку в случае необходимости. А то сейчас в message возвращает state и не погрузившись не понятно state возвращается всегда или он может еще вернуть текст ошибки из getState

@fonrit
Copy link
Author

fonrit commented Dec 19, 2022

Можете пожалуйста ответить

@IlnarH
Copy link
Collaborator

IlnarH commented Dec 19, 2022

Думаю, можно реализовать что-то подобное, но не в ближайшее время; скорее всего вместе с редизайном (ориентировочно - Q1 2023).

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants