wirecardBrasil / moip-sdk-php

Cliente em PHP para integração server-side com APIs Moip v2
MIT License
124 stars 90 forks source link

Tratamento de erros fora do padrão #211

Closed kpilon closed 7 years ago

kpilon commented 7 years ago

Em alguns casos como o da issue #190 a API retorna um erro fora do padrão citado na documentação e a SDK retorna a excessão em branco: image

Então queria levantar a discussão, se também não seria interessante tratar esses erros (individuais), que aparentemente vem no seguinte formato JSON { "error": "..." }.

Uma possível solução seria alterar o seguinte trecho do arquivo Exceptions/Error.php:

if (!empty($error_obj->errors)) {
    foreach ($error_obj->errors as $error) {
        $errors[] = new self($error->code, $error->path, $error->description);
    }
}

Para:

if (!empty($error_obj->errors)) {
    foreach ($error_obj->errors as $error) {
        $errors[] = new self($error->code, $error->path, $error->description);
    }
} else if (!empty($error_obj->error)) {
    $errors[] = new self('', '', $error_obj->error);
}

Assim retornando o erro ao executar a SDK: image

Vocês acreditam que seria uma boa opção para facilitar no tratamento de erros? Ou é melhor apenas tratar os erros que vierem no formato correto (da forma que é hoje)? A parte "ruim" é que as informações de code e path vão ser retornadas em branco, mas ao menos a description poderia ser visualizada, ajudando na identificação de alguns erros que ainda não são tratados.

mbnakaya commented 7 years ago

Boa tarde, @kleytonbp! Tudo bem?

Sim, realmente, isto é uma boa opção. Testei a solução apresentada e está funcionando corretamente. :+1: Já estamos aplicando a correção à nossa SDK.

Agradecemos muito pela sua contribuição! :rocket:

Forte abraço.