gerencianet / gn-api-sdk-php

SDK em PHP integrada às APIs da Gerencianet preparada para emissão de cobranças Pix com QR Code e Pix Copia e Cola, split/divisão de Pix, boletos, carnês, cartão de crédito, assinatura, link de pagamento, marketplance, iniciação de pagamento Pix via Open Finance, pagamento de boletos, dentre outras funcionalidades.
https://dev.gerencianet.com.br/docs/instalacao-sdk-php
MIT License
86 stars 45 forks source link

Mensagem de erro na resposta da SDK #40

Closed bruno-silva5 closed 3 years ago

bruno-silva5 commented 3 years ago

Bom dia!

Gostaria de saber como obter uma mensagem de erro mais descritiva ao utilizar a SDK.

Por exemplo, o erro de quando não utilizo uma das chaves pix do Gerencianet (caso eu insira uma chave qualquer propositalmente, apenas para fins de testar o erro),

O que ele vai me retornar, pela SDK , por meio do throw é: "Bad request", apenas.

Trecho do código utilizado: (o mesmo do exemplo)

} catch (GerencianetException $e) {
    print_r($e->code);
    print_r($e->error);
    print_r($e->errorDescription);

    throw new Error($e->error);
} catch (Exception $e) {
    throw new Error($e->getMessage());
}

Porém, caso eu vá na classe "Request" da SDK, localizada em "vendor/gerencianet/gerencianet-sdk-php/src/Gerencianet/Request.php"

e alterar, no método send, o trecho do código para:

} catch (ClientException $e) {
            throw $e; // Linnha adicionada por mim
            throw new AuthorizationException($e->getResponse()->getStatusCode(),
                       $e->getResponse()->getReasonPhrase(),
                       $e->getResponse()->getBody());
        } catch (ServerException $se) {
            throw new GerencianetException($se->getResponse()->getBody());
        }

Eu consigo obter uma mensagem de erro mais detalhada, como se estivesse fazendo a requisição sem o uso da SDK. Como obter essa mensagem de erro por meio da SDK sem essa alteração de código que fiz?

OBS: Estou utilizando Laravel 4.2

Obrigado.

guilhermecotaGn commented 3 years ago

Olá, @bruno-silva5. Como vai?

Compreendi. Qual versão da SDK está sendo utilizada por você?

Realizamos uma correção em relação a estes retornos na versão 4.0.2. Como pode ver nesta imagem, está sendo retornado a falha devido a inserção de uma chave Pix inválida.

bruno-silva5 commented 3 years ago

Opa @guilhermecotaGn, estou bem e você?

Sim!! É exatamente um retorno igual desta imagem que eu gostaria.

Estou utilizando a SDK versão 3.x

guilhermecotaGn commented 3 years ago

Vou bem também!! 😀

Perfeito! Verifique a possibilidade de você atualizar a SDK para a versão atual (4.0.2), que você terá estes retornos corretamente. Obs: a partir da versão 4.0.0 é necessário possuir versões do PHP >= 7.2 e Guzzle >= 7.0

bruno-silva5 commented 3 years ago

Ok, não tenho certeza se tenho essa possibilidade, é um projeto bem grande, um pouco antigo em algumas coisas, pode quebrar algumas dependencias se eu atualizar o PHP e o Guzzle.

Há a possibilidade de vocês atualizarem esse problema na 3.x assim como na 4.x?

guilhermecotaGn commented 3 years ago

Entendido, @bruno-silva5. Irei verificar esta possibilidade e lhe darei um retorno! 😉

bruno-silva5 commented 3 years ago

Ok, Obrigado!

guilhermecotaGn commented 3 years ago

Olá, @bruno-silva5. Venho com boas notícias!

Criamos release 3.1.1, onde está corrigida a falha na verificação das solicitações, lhe retornando as mensagens corretamente como deveria. Você pode atualizar para esta versão utilizando o Composer também.

Um detalhe é que, para que você tenha um retorno de chave inválida no momento da criação da cobrança, como no exemplo que citou, você terá de fazer um else na validação do txid. Veja como ficou em nosso exemplo.

Caso tenha mais dúvidas, estarei à disposição! 😉