sberbank-acquiring-client icon indicating copy to clipboard operation
sberbank-acquiring-client copied to clipboard

Ошибка с кодом ответа

Open custanator opened this issue 5 years ago • 4 comments

При оплате через связки (привязанная карта = bindings) и когда возникает ошибка шлюз отвечает вот таким вот образом: Array ( [error] => Операция отклонена. Проверьте введенные данные, достаточность средств на карте и повторите операцию.
[errorCode] => 0 [is3DSVer2] => [processingErrorType] => CLIENT_ERROR [errorMessage] => Операция отклонена. Проверьте введенные данные, достаточность средств на карте и повторите операцию.
)

Заметьте что [errorCode] => 0 и библиотека ошибку не замечает.

custanator avatar Feb 26 '19 10:02 custanator

@custanator, печальное зрелище :). В документации о коде 0 сказано:

0 Обработка запроса прошла без системных ошибок.

Я не очень представляю как выловить эту ошибку, которая с точки зрения документации ошибкой не является. У вас есть идеи?

voronkovich avatar Feb 26 '19 15:02 voronkovich

Ответ Сбера по этому поводу: "в данном случае 0 - это лишь указание на успешную обработку запроса, результат отображен в error" У себя я сделал следующим образом: первым делом в разборе ответа смотрю наличие параметра error. Дальше уже смотрю на errorCode

custanator avatar Feb 26 '19 16:02 custanator

private function handleErrors(array &$response) { // Server's response can contain an error code and an error message in differend fields. // Есть случай когда есть ошибка но код = 0 if (isset($response['error'])) { $errorCode = self::ACTION_ERROR; } elseif (isset($response['errorCode'])) { $errorCode = (int) $response['errorCode']; } elseif (isset($response['ErrorCode'])) { $errorCode = (int) $response['ErrorCode']; } elseif (isset($response['error']['code'])) { $errorCode = (int) $response['error']['code']; } else { $errorCode = self::ACTION_SUCCESS; }

custanator avatar Feb 26 '19 16:02 custanator

@custanator, Спасибо за сообщение, но я думаю что в ближайшее время не смогу исправить эту ошибку. Проблема в том, что для некоторых запросов Сбербанк добавляет в ответ поля errorMessage, error и т .д. которые содержат текст наподобии Запрос обработан успешно. Т.е. они добавляют поле с текстом ошибки, даже если ошибки нет. Поэтому, по наличию поля errorMessage нельзя определить точно - была ли ошибка на самом деле.

voronkovich avatar Feb 26 '19 17:02 voronkovich