{"_id":"58b95371759c201900abfdfd","parentDoc":null,"__v":0,"version":{"_id":"575aeffae12cf20e002f306f","project":"575aeffae12cf20e002f306c","__v":30,"createdAt":"2016-06-10T16:51:06.080Z","releaseDate":"2016-06-10T16:51:06.080Z","categories":["575aeffae12cf20e002f3070","575af039a083950e004487f7","575af5c7ba4ed70e000ca288","57602fe5b82256240055c657","57602ff6c811102000cef302","576030909b1a9a220067ca40","57604518b82256240055c722","5761a63d207db7170022fc14","5761b9a2b65324200072d79e","576832939f0bf4190014ffdf","576832c09f0bf4190014ffe1","576832cba151c10e004316f0","576832d5bb15f40e00a288ec","576832e107b1f30e0039c645","577680bf3cee3a0e00a000bc","577ff3b1ff48990e000c6806","5783f78c5cbce30e0074e2b7","5783f86292edb92200e6101c","5783f86dbfbba719003f0d8b","5783f8755cbce30e0074e2b8","5783f8b65cbce30e0074e2b9","5783f8bf5cbce30e0074e2ba","5783f8d8ce802f0e0087d574","578529f887c9280e0090394b","57852aeb87c9280e0090394d","57866e72b2f4060e00fa39ca","57ab6d5c39c2fd1900191879","57f39451ab0ee12000bef915","582499a0d90fa027009b259e","58c29df1258e5a1900b60478"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"2016","version_clean":"1.0.0","version":"1"},"project":"575aeffae12cf20e002f306c","user":"57601a13af3e090e00108059","category":{"_id":"575aeffae12cf20e002f3070","version":"575aeffae12cf20e002f306f","__v":0,"project":"575aeffae12cf20e002f306c","sync":{"url":"","isSync":false},"reference":true,"createdAt":"2016-06-10T16:51:06.098Z","from_sync":false,"order":0,"slug":"documentation","title":"Visão Geral da API"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-03-03T11:28:49.903Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":true,"order":4,"body":"Esta página tem como objetivo apresentar o *\"Histórico de Requisições\"*, que permite ao integrador visualizar todas as requisições realizadas por sua aplicação à nossa API. Assim, você vai aprender a interpretar os retornos da API Gerencianet e, claro, corrigir possíveis erros de validação de dados ou outros similares e identificar consumos/requisições realizadas por sua aplicação aos nossos *webservices*.\n\nA Gerencianet utiliza respostas HTTP para indicar sucesso ou falha nas requisições. Comumente, quando retornamos respostas com status <code>2xx</code> significa que houve sucesso na requisição; status <code>4xx</code> indicam falhas no envio de dados por parte do cliente; status <code>5xx</code> indicam erros internos de servidor.\n\n  * **200 Ok** - Requisição ocorreu com sucesso;\n  * **400 Bad Request** - Algum parâmetro obrigatório não foi enviado ou é inválido;\n  * **401 Unauthorized** - Sem autorização ([confira credenciais](https://dev.gerencianet.com.br/docs/pagar-boleto-problemas-frequentes#section-1-estou-me-deparando-com-a-mensagem-de-unauthorized-sem-autoriza-o-por-que-) Client_Id, Client_Secret e \"sandbox\");\n  * **404 Not Found** - O recurso requisitado não foi encontrado;\n  * **500 Internal Server Error** - Erro interno do servidor.\n\nA API da Gerencianet efetua a validação dos dados contidos na requisição que seu sistema envia aos nossos webservices. Dessa forma, conforme o endpoint que seu sistema está tentando consumir, podem ser retornados erros em determinadas situações.\n\nConfira o vídeo em que ensinamos a utilizar o *\"Histórico de Requisições\":* \n[block:html]\n{\n  \"html\": \"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/ad0SYoeGAZs\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"\n}\n[/block]\n\n[block:html]\n{\n  \"html\": \"<p>Para acessar o <em>\\\"Histórico de Requisições\\\"</em>, <a href=\\\"https://gerencianet.com.br/#login\\\" target=\\\"_blank\\\" title=\\\"Efetue Login\\\">efetue login</a> em sua conta Gerencianet, acesse o menu superior <code>API</code>, depois clique em <code>Minhas Aplicações > Sua Aplicação</code>. <abbr title=\\\"Produção (ambiente real) e Desenvolvimento (ambiente de testes)\\\">Escolha o ambiente</abbr> (<a href=\\\"https://dev.gerencianet.com.br/docs/glossario\\\" target=\\\"_blank\\\" title=\\\"Link Interno\\\">?</a>) que estiver utilizando (aba <code>produção</code> ou <code>desenvolvimento</code>), desça a barra de rolagem e confira a sub-aba <code>Histórico de Requisições</code>.</p>\"\n}\n[/block]\nA seguir, apresentamos alguns exemplos corriqueiros de erros retornados pela API devido a algum dado não estar no formato correto:\n\n# Exemplo 1 - Criar transação/cobrança\n\nAo enviar um <code>POST</code> para a rota <code>/charge</code>, o integrador estará criando uma cobrança (ou \"transação\") com o status <code>new</code>, ou seja, a cobrança foi gerada e está aguardando a definição da forma de pagamento.\n\nAo criar uma transação, podem ser definidos, por exemplo: nome do item, valor, se é item de marketplace, se tem frete, informar uma URL de notificação, etc.\n\nPara este exemplo, vamos tentar criar uma cobrança cujo valor total seja inferior a R$ 5,00:\n[block:html]\n{\n  \"html\": \"<img src=\\\"https://files.readme.io/458ddb8-exemplo-01_1.png\\\">\"\n}\n[/block]\nAgora, após o envio do código acima, vamos através da sub-aba \"Histórico de Requisições\" conferir qual foi a resposta fornecida pela API:\n[block:html]\n{\n  \"html\": \"<img src=\\\"https://files.readme.io/2d65084-exemplo-01_2.png\\\">\"\n}\n[/block]\nConforme pode observar na imagem acima, a resposta possui <code>code</code> diferente de <code>200</code>, ou seja, o consumo não teve sucesso. Neste caso, a API exige que o valor mínimo de uma cobrança seja de R$ 5,00 - portanto, neste caso, você deve fornecer <code>500</code>, sem pontos nem vírgulas (lembrando que <code>500</code> equivale a R$ 5,00).\n\n# Exemplo 2 - Associar à forma de pagamento\n\nAo enviar um <code>POST</code> para a rota <code>/charge/:id/pay</code>, onde <code>:id</code> é o <code>charge_id</code> da transação desejada, o integrador estará associando a cobrança à uma forma de pagamento.\n\nNeste momento, podem ser definidos, por exemplo: dados do cliente final, endereço, data de vencimento (em caso de boleto), se há desconto, se há cobrança de multa/juros após o vencimento, etc.\n\nPara este exemplo, vamos tentar associar uma cobrança à forma de pagamento \"boleto bancário\" e com uma data de vencimento em um formato não aceito pela API:\n[block:html]\n{\n  \"html\": \"<img src=\\\"https://files.readme.io/8c1e09e-exemplo-02_1.png\\\">\"\n}\n[/block]\nAgora, após o envio do código acima, vamos através da sub-aba \"Histórico de Requisições\" conferir qual foi a resposta fornecida pela API:\n[block:html]\n{\n  \"html\": \"<img src=\\\"https://files.readme.io/8afebbf-exemplo-02_2.png\\\">\"\n}\n[/block]\nConforme pode observar na imagem acima, a resposta possui <code>code</code> diferente de <code>200</code>, ou seja, o consumo não teve sucesso. Neste caso, a API exige que a data de vencimento do boleto seja informado no formato correto: YYYY-MM-DD, ou seja, <code>2018-10-20</code>.\n\n# Exemplo 3 - Criar carnê\n\nAo enviar um <code>POST</code> para a rota <code>/carnet</code>, o integrador estará criando um carnê com as configurações que definiu.\n\nNeste momento, podem ser definidos, por exemplo: nome do item, valor, quantidade, dados do cliente, endereço, quantidade de parcelas, data de vencimento, etc.\n\nPara este exemplo, vamos tentar criar um carnê de 20 parcelas:\n[block:html]\n{\n  \"html\": \"<img src=\\\"https://files.readme.io/1c1140f-exemplo-03_1.png\\\">\"\n}\n[/block]\nAgora, após o envio do código acima, vamos através da sub-aba \"Histórico de Requisições\" conferir qual foi a resposta fornecida pela API:\n[block:html]\n{\n  \"html\": \"<img src=\\\"https://files.readme.io/d71ac4c-exemplo-03_2.png\\\">\"\n}\n[/block]\nConforme pode observar na imagem acima, a resposta possui <code>code</code> diferente de <code>200</code>, ou seja, o consumo não teve sucesso. Neste caso, o carnê deve possuir no máximo 12 (doze) parcelas.","excerpt":"Você está em: *\"Visão Geral da API > Interpretando Erros na API\"*","slug":"interpretando-erros-api","type":"basic","title":"Interpretando Erros na API"}

Interpretando Erros na API

Você está em: *"Visão Geral da API > Interpretando Erros na API"*

Esta página tem como objetivo apresentar o *"Histórico de Requisições"*, que permite ao integrador visualizar todas as requisições realizadas por sua aplicação à nossa API. Assim, você vai aprender a interpretar os retornos da API Gerencianet e, claro, corrigir possíveis erros de validação de dados ou outros similares e identificar consumos/requisições realizadas por sua aplicação aos nossos *webservices*. A Gerencianet utiliza respostas HTTP para indicar sucesso ou falha nas requisições. Comumente, quando retornamos respostas com status <code>2xx</code> significa que houve sucesso na requisição; status <code>4xx</code> indicam falhas no envio de dados por parte do cliente; status <code>5xx</code> indicam erros internos de servidor. * **200 Ok** - Requisição ocorreu com sucesso; * **400 Bad Request** - Algum parâmetro obrigatório não foi enviado ou é inválido; * **401 Unauthorized** - Sem autorização ([confira credenciais](https://dev.gerencianet.com.br/docs/pagar-boleto-problemas-frequentes#section-1-estou-me-deparando-com-a-mensagem-de-unauthorized-sem-autoriza-o-por-que-) Client_Id, Client_Secret e "sandbox"); * **404 Not Found** - O recurso requisitado não foi encontrado; * **500 Internal Server Error** - Erro interno do servidor. A API da Gerencianet efetua a validação dos dados contidos na requisição que seu sistema envia aos nossos webservices. Dessa forma, conforme o endpoint que seu sistema está tentando consumir, podem ser retornados erros em determinadas situações. Confira o vídeo em que ensinamos a utilizar o *"Histórico de Requisições":* [block:html] { "html": "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/ad0SYoeGAZs\" frameborder=\"0\" allowfullscreen></iframe>" } [/block] [block:html] { "html": "<p>Para acessar o <em>\"Histórico de Requisições\"</em>, <a href=\"https://gerencianet.com.br/#login\" target=\"_blank\" title=\"Efetue Login\">efetue login</a> em sua conta Gerencianet, acesse o menu superior <code>API</code>, depois clique em <code>Minhas Aplicações > Sua Aplicação</code>. <abbr title=\"Produção (ambiente real) e Desenvolvimento (ambiente de testes)\">Escolha o ambiente</abbr> (<a href=\"https://dev.gerencianet.com.br/docs/glossario\" target=\"_blank\" title=\"Link Interno\">?</a>) que estiver utilizando (aba <code>produção</code> ou <code>desenvolvimento</code>), desça a barra de rolagem e confira a sub-aba <code>Histórico de Requisições</code>.</p>" } [/block] A seguir, apresentamos alguns exemplos corriqueiros de erros retornados pela API devido a algum dado não estar no formato correto: # Exemplo 1 - Criar transação/cobrança Ao enviar um <code>POST</code> para a rota <code>/charge</code>, o integrador estará criando uma cobrança (ou "transação") com o status <code>new</code>, ou seja, a cobrança foi gerada e está aguardando a definição da forma de pagamento. Ao criar uma transação, podem ser definidos, por exemplo: nome do item, valor, se é item de marketplace, se tem frete, informar uma URL de notificação, etc. Para este exemplo, vamos tentar criar uma cobrança cujo valor total seja inferior a R$ 5,00: [block:html] { "html": "<img src=\"https://files.readme.io/458ddb8-exemplo-01_1.png\">" } [/block] Agora, após o envio do código acima, vamos através da sub-aba "Histórico de Requisições" conferir qual foi a resposta fornecida pela API: [block:html] { "html": "<img src=\"https://files.readme.io/2d65084-exemplo-01_2.png\">" } [/block] Conforme pode observar na imagem acima, a resposta possui <code>code</code> diferente de <code>200</code>, ou seja, o consumo não teve sucesso. Neste caso, a API exige que o valor mínimo de uma cobrança seja de R$ 5,00 - portanto, neste caso, você deve fornecer <code>500</code>, sem pontos nem vírgulas (lembrando que <code>500</code> equivale a R$ 5,00). # Exemplo 2 - Associar à forma de pagamento Ao enviar um <code>POST</code> para a rota <code>/charge/:id/pay</code>, onde <code>:id</code> é o <code>charge_id</code> da transação desejada, o integrador estará associando a cobrança à uma forma de pagamento. Neste momento, podem ser definidos, por exemplo: dados do cliente final, endereço, data de vencimento (em caso de boleto), se há desconto, se há cobrança de multa/juros após o vencimento, etc. Para este exemplo, vamos tentar associar uma cobrança à forma de pagamento "boleto bancário" e com uma data de vencimento em um formato não aceito pela API: [block:html] { "html": "<img src=\"https://files.readme.io/8c1e09e-exemplo-02_1.png\">" } [/block] Agora, após o envio do código acima, vamos através da sub-aba "Histórico de Requisições" conferir qual foi a resposta fornecida pela API: [block:html] { "html": "<img src=\"https://files.readme.io/8afebbf-exemplo-02_2.png\">" } [/block] Conforme pode observar na imagem acima, a resposta possui <code>code</code> diferente de <code>200</code>, ou seja, o consumo não teve sucesso. Neste caso, a API exige que a data de vencimento do boleto seja informado no formato correto: YYYY-MM-DD, ou seja, <code>2018-10-20</code>. # Exemplo 3 - Criar carnê Ao enviar um <code>POST</code> para a rota <code>/carnet</code>, o integrador estará criando um carnê com as configurações que definiu. Neste momento, podem ser definidos, por exemplo: nome do item, valor, quantidade, dados do cliente, endereço, quantidade de parcelas, data de vencimento, etc. Para este exemplo, vamos tentar criar um carnê de 20 parcelas: [block:html] { "html": "<img src=\"https://files.readme.io/1c1140f-exemplo-03_1.png\">" } [/block] Agora, após o envio do código acima, vamos através da sub-aba "Histórico de Requisições" conferir qual foi a resposta fornecida pela API: [block:html] { "html": "<img src=\"https://files.readme.io/d71ac4c-exemplo-03_2.png\">" } [/block] Conforme pode observar na imagem acima, a resposta possui <code>code</code> diferente de <code>200</code>, ou seja, o consumo não teve sucesso. Neste caso, o carnê deve possuir no máximo 12 (doze) parcelas.