{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","settings":"","results":{"codes":[]},"params":[]},"next":{"description":"","pages":[]},"title":"Endpoints","type":"basic","slug":"endpoints-pagamentos","excerpt":"","body":"Nesta página você encontrará todos os endpoints disponíveis da API de Pagamentos Gerencianet. Recomendamos que [participe da nossa comunidade no Discord](https://discord.gg/ptGHMtczcV) para acompanhar a evolução da API, incluindo a disponibilização de novos endpoints.\n\nUtilize o sumário abaixo para navegar rapidamente entre os grupos de endpoints da API.\n\n**Sumário**\na. [Consultar código de barras para pagamento](#section-consultar-c-digo-de-barras-para-pagamento)\nb. [Solicitar pagamento de código de barras](#section-solicitar-pagamento-de-c-digo-de-barras)\nc. [Consultar solicitação de pagamento](#section-consultar-solicita-o-de-pagamento)\nd. [Consultar resumo de solicitações de pagamento](#section-consultar-resumo-de-solicita-es-de-pagamento)\n\n<br>\n[block:api-header]\n{\n  \"title\": \"Obter Autorização\"\n}\n[/block]\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method post\\\">POST</span>\\n  \\t<span class=\\\"endpoint\\\">\\n        /oauth/token\\n    </span>\\n</div>\"\n}\n[/block]\nEste endpoint é utilizado para autorizar as credenciais de uma aplicação e obter os escopos que a aplicação possui para acessar os outros endpoints da API. É necessário que o certificado P12/PEM esteja presente na requisição de autorização a fim de que o *handshake* com o servidor da API seja permitido.\n\n### Exemplos de autorização utilizando o certificado .P12\n\nPara a utilização da API de Pagamentos é necessário que o cliente e o servidor se comuniquem em uma conexão verificada um com o outro. A verificação é feita pelo certificado bidirecional (.PEM ou .P12), isto é, o servidor e o cliente implementaram um certificado de chave privada e um certificado de chave pública que permite que um possa assegurar-se da identidade do outro.\n\nPor isso para fazer qualquer requisição HTTP à API Pagamentos, incluindo a requisição de autorização junto ao OAuth2, é necessário que o certificado .P12, ou .PEM, esteja presente nos cabeçalhos da requisição.\n\nAbaixo, trazemos exemplos de como consumir a autorização da API Pagamentos Gerencianet, incorporando esse certificado na requisição.\n\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php //Desenvolvido pela Consultoria Técnica da Gerencianet\\n\\n$config = [\\n  \\\"certificado\\\" => \\\"./certificado.pem\\\",\\n  \\\"client_id\\\" => \\\"YOUR-CLIENT-ID\\\",\\n  \\\"client_secret\\\" => \\\"YOUR-CLIENT-SECRET\\\"\\n];\\n$autorizacao =  base64_encode($config[\\\"client_id\\\"] . \\\":\\\" . $config[\\\"client_secret\\\"]);\\n\\n$curl = curl_init();\\n\\ncurl_setopt_array($curl, array(\\n    CURLOPT_URL => \\\"https://apis.gerencianet.com.br/oauth/token\\\", // Rota base, homologação ou produção\\n    CURLOPT_RETURNTRANSFER => true,\\n    CURLOPT_ENCODING => \\\"\\\",\\n    CURLOPT_MAXREDIRS => 10,\\n    CURLOPT_TIMEOUT => 0,\\n    CURLOPT_FOLLOWLOCATION => true,\\n    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\\n    CURLOPT_CUSTOMREQUEST => \\\"POST\\\",\\n    CURLOPT_POSTFIELDS => '{\\\"grant_type\\\": \\\"client_credentials\\\"}',\\n    CURLOPT_SSLCERT => $config[\\\"certificado\\\"], // Caminho do certificado\\n    CURLOPT_SSLCERTPASSWD => \\\"\\\",\\n    CURLOPT_HTTPHEADER => array(\\n        \\\"Authorization: Basic $autorizacao\\\",\\n        \\\"Content-Type: application/json\\\"\\n    ),\\n));\\n\\n$response = curl_exec($curl);\\n\\ncurl_close($curl);\\n\\necho \\\"<pre>\\\";\\necho $response;\\necho \\\"</pre>\\\";\",\n      \"language\": \"php\",\n      \"name\": \"PHP\"\n    },\n    {\n      \"code\": \"//Desenvolvido pela Consultoria Técnica da Gerencianet\\n\\n\\\"use strict\\\";\\nconst https = require(\\\"https\\\");\\nvar axios = require(\\\"axios\\\");\\nvar fs = require(\\\"fs\\\");\\n\\n//Insira o caminho de seu certificado .p12 dentro de seu projeto\\nvar certificado = fs.readFileSync(\\\"./certificado.p12\\\");\\n\\n//Insira os valores de suas credenciais em desenvolvimento do pix\\nvar credenciais = {\\n  client_id: \\\"YOUR-CLIENT-ID\\\",\\n  client_secret: \\\"YOUR-CLIENT-SECRET\\\",\\n};\\n\\nvar data = JSON.stringify({ grant_type: \\\"client_credentials\\\" });\\nvar data_credentials = credenciais.client_id + \\\":\\\" + credenciais.client_secret;\\n\\n// Codificando as credenciais em base64\\nvar auth = Buffer.from(data_credentials).toString(\\\"base64\\\");\\n\\nconst agent = new https.Agent({\\n  pfx: certificado,\\n  passphrase: \\\"\\\",\\n});\\n//Consumo em desenvolvimento da rota post oauth/token\\nvar config = {\\n  method: \\\"POST\\\",\\n  url: \\\"https://apis.gerencianet.com.br/oauth/token\\\",\\n  headers: {\\n    Authorization: \\\"Basic \\\" + auth,\\n    \\\"Content-Type\\\": \\\"application/json\\\",\\n  },\\n  httpsAgent: agent,\\n  data: data,\\n};\\n\\naxios(config)\\n  .then(function (response) {\\n    console.log(JSON.stringify(response.data));\\n  })\\n  .catch(function (error) {\\n    console.log(error);\\n  });\",\n      \"language\": \"javascript\",\n      \"name\": \"Node\"\n    },\n    {\n      \"code\": \"#Desenvolvido pela Consultoria Técnica da Gerencianet\\n\\nimport requests\\nimport base64\\n\\ncredentials = {\\n    \\\"client_id\\\": \\\"YOUR-CLIENT-ID\\\",\\n    \\\"client_secret\\\": \\\"YOUR-CLIENT-SECRET\\\",\\n}\\n\\ncertificado = './certificado.pem'  # A variável certificado é o diretório em que seu certificado em formato .pem deve ser inserido\\n\\nauth = base64.b64encode(\\n    (f\\\"{credentials['client_id']}:{credentials['client_secret']}\\\"\\n     ).encode()).decode()\\n\\nurl = \\\"https://apis.gerencianet.com.br/oauth/token\\\"  #Para ambiente de Desenvolvimento\\n\\npayload=\\\"{\\\\r\\\\n    \\\\\\\"grant_type\\\\\\\": \\\\\\\"client_credentials\\\\\\\"\\\\r\\\\n}\\\"\\nheaders = {\\n    'Authorization': f\\\"Basic {auth}\\\",\\n    'Content-Type': 'application/json'\\n}\\n\\nresponse = requests.request(\\\"POST\\\",\\n                            url,\\n                            headers=headers,\\n                            data=payload,\\n                            cert=certificado)\\n\\nprint(response.text)\",\n      \"language\": \"python\",\n      \"name\": \"Python\"\n    },\n    {\n      \"code\": \"//Desenvolvido pela Consultoria Técnica da Gerencianet\\n\\nusing System;\\nusing System.Security.Cryptography.X509Certificates;\\nusing System.Collections.Generic;\\nusing RestSharp;\\n\\nnamespace PixGerencianet\\n{\\n    class Authorize\\n    {\\n        public static string Base64Encode(string plainText)\\n        {\\n            var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);\\n            return System.Convert.ToBase64String(plainTextBytes);\\n        }\\n\\n        static void Main(string[] args)\\n        {\\n\\n            var credencials = new Dictionary<string, string>{\\n                {\\\"client_id\\\", \\\"YOUR-CLIENT-ID\\\"},\\n                {\\\"client_secret\\\", \\\"YOUR-CLIENT-SECRET\\\"}\\n            };\\n            var authorization = Base64Encode(credencials[\\\"client_id\\\"] + \\\":\\\" + credencials[\\\"client_secret\\\"]);\\n            var client = new RestSharp.RestClient(\\\"https://apis.gerencianet.com.br/oauth/token\\\");\\n            var request = new RestRequest(Method.POST);\\n\\n            X509Certificate2 uidCert = new X509Certificate2(\\\"./certificado.p12\\\", \\\"\\\");\\n            client.ClientCertificates = new X509CertificateCollection() { uidCert };\\n\\n            request.AddHeader(\\\"Authorization\\\", \\\"Basic \\\" + authorization);\\n            request.AddHeader(\\\"Content-Type\\\", \\\"application/json\\\");\\n            request.AddParameter(\\\"application/json\\\", \\\"{\\\\r\\\\n    \\\\\\\"grant_type\\\\\\\": \\\\\\\"client_credentials\\\\\\\"\\\\r\\\\n}\\\", ParameterType.RequestBody);\\n            \\n            IRestResponse restResponse = client.Execute(request);\\n            string response = restResponse.Content;\\n\\n            Console.WriteLine(response);\\n        }\\n    }\\n}\",\n      \"language\": \"csharp\",\n      \"name\": \"C#\"\n    },\n    {\n      \"code\": \"#Desenvolvido pela Consultoria Técnica da Gerencianet\\n\\nrequire \\\"uri\\\"\\nrequire \\\"net/http\\\"\\nrequire \\\"openssl\\\"\\n\\nclient_id = \\\"YOUR-CLIENT-ID\\\";\\nclient_secret = \\\"YOUR-CLIENT-SECRET\\\";\\n\\ncertfile = File.read(\\\"certificado.pem\\\") # A variável certfile é o diretório em que seu certificado em formato .pem deve ser inserido\\n\\nurl = URI(\\\"https://apis.gerencianet.com.br/oauth/token\\\") #Para ambiente de Desenvolvimento\\n\\nhttps = Net::HTTP.new(url.host, url.port);\\nhttps.use_ssl = true\\nhttps.cert = OpenSSL::X509::Certificate.new(certfile)\\nhttps.key = OpenSSL::PKey::RSA.new(certfile)\\n\\nrequest = Net::HTTP::Post.new(url)\\nrequest.basic_auth(client_id, client_secret)\\nrequest[\\\"Content-Type\\\"] = \\\"application/json\\\"\\nrequest.body = \\\"{\\\\r\\\\n    \\\\\\\"grant_type\\\\\\\": \\\\\\\"client_credentials\\\\\\\"\\\\r\\\\n}\\\"\\n\\nresponse = https.request(request)\\nputs response.read_body\",\n      \"language\": \"ruby\",\n      \"name\": \"Ruby\"\n    },\n    {\n      \"code\": \"//Desenvolvido pela Consultoria Técnica da Gerencianet\\n\\nimport java.io.BufferedReader;\\nimport java.io.InputStreamReader;\\nimport java.io.OutputStream;\\nimport java.net.URL;\\nimport java.util.Base64;\\n\\nimport javax.net.ssl.HttpsURLConnection;\\nimport javax.net.ssl.SSLSocketFactory;\\n\\npublic class Auth {\\n    public static void main(String[] args) throws Exception {\\n        String client_id = \\\"YOUR-CLIENT-ID\\\";\\n        String client_secret = \\\"YOUR-CLIENT-SECRET\\\";;\\n        String basicAuth = Base64.getEncoder().encodeToString(((client_id+':'+client_secret).getBytes()));\\n      \\n      \\t//Diretório em que seu certificado em formato .p12 deve ser inserido\\n        System.setProperty(\\\"javax.net.ssl.keyStore\\\", \\\"certificado.p12\\\"); \\n        SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();\\n        \\n        URL url = new URL (\\\"https://apis.gerencianet.com.br/oauth/token\\\"); //Para ambiente de Desenvolvimento              \\n        HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();\\n        conn.setDoOutput(true);\\n        conn.setRequestMethod(\\\"POST\\\");\\n        conn.setRequestProperty(\\\"Content-Type\\\", \\\"application/json\\\");\\n        conn.setRequestProperty(\\\"Authorization\\\", \\\"Basic \\\"+ basicAuth);\\n        conn.setSSLSocketFactory(sslsocketfactory);\\n        String input = \\\"{\\\\\\\"grant_type\\\\\\\": \\\\\\\"client_credentials\\\\\\\"}\\\";\\n       \\n        OutputStream os = conn.getOutputStream();\\n        os.write(input.getBytes());\\n        os.flush();\\t\\t\\n\\n        InputStreamReader reader = new InputStreamReader(conn.getInputStream());\\n        BufferedReader br = new BufferedReader(reader);\\n\\n        String response;\\n        while ((response = br.readLine()) != null) {\\n          System.out.println(response);\\n        }\\n        conn.disconnect();\\n\\n    }\\n}\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"//Desenvolvido pela Consultoria Técnica da Gerencianet\\npackage main\\n\\nimport (\\n  \\\"fmt\\\"\\n  \\\"strings\\\"\\n  \\\"net/http\\\"\\n  \\\"io/ioutil\\\"\\n  \\\"crypto/tls\\\"\\n)\\n\\nconst(\\n  client_id = \\\"YOUR-CLIENT-ID\\\"\\n  client_secret = \\\"YOUR-CLIENT-SECRET\\\"\\n)\\n\\nfunc main() {\\n\\n  url := \\\"https://apis.gerencianet.com.br/oauth/token\\\"// Rota base, homologação ou produção\\n  method := \\\"POST\\\"\\n\\n  payload := strings.NewReader(`{\\\"grant_type\\\": \\\"client_credentials\\\"}`)\\n\\n\\n  cert, _ := tls.LoadX509KeyPair(\\\"CA.crt.pem\\\", \\\"KEY.crt.pem\\\")// Seu certificado e chave privada gerada a partir dos comandos de conversão OpenSSL\\n\\n  client := &http.Client{\\n    Transport: &http.Transport{\\n        TLSClientConfig: &tls.Config{\\n            Certificates: []tls.Certificate{cert},\\n        },\\n    },\\n}\\n\\n  req, err := http.NewRequest(method, url, payload)\\n\\n  if err != nil {\\n    fmt.Println(err)\\n    return\\n  }\\n  req.SetBasicAuth(client_id, client_secret)\\n  req.Header.Add(\\\"Content-Type\\\", \\\"application/json\\\")\\n\\n  res, err := client.Do(req)\\n  if err != nil {\\n    fmt.Println(err)\\n    return\\n  }\\n  defer res.Body.Close()\\n\\n  body, err := ioutil.ReadAll(res.Body)\\n  if err != nil {\\n    fmt.Println(err)\\n    return\\n  }\\n  fmt.Println(string(body))\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n#### Exemplo de resposta da autorização\n\nO trecho de código abaixo representa um exemplo de resposta do OAuth à sua requisição de autorização.\n\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n    \\\"access_token\\\": \\\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\\\",\\n    \\\"token_type\\\": \\\"Bearer\\\",\\n    \\\"expires_in\\\": 3600,\\n    \\\"scope\\\": \\\"gn.barcode.read gn.barcode.pay.write gn.barcode.pay.read\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Resposta\"\n    }\n  ]\n}\n[/block]\n<br>\n[block:api-header]\n{\n  \"title\": \"Rota base\"\n}\n[/block]\n Rota base ou URL's base para ambientes, utilize a rota abaixo para realizar a comunicação da sua aplicação com o ambiente de produção oferecido pela Gerencianet.\n\n\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ambiente\",\n    \"h-1\": \"Rota base\",\n    \"0-1\": \"`https://apis.gerencianet.com.br/`\",\n    \"0-0\": \"**Produção**\"\n  },\n  \"cols\": 2,\n  \"rows\": 1\n}\n[/block]\n<br>\n[block:api-header]\n{\n  \"title\": \"Pagamentos\"\n}\n[/block]\n### Consultar código de barras para pagamento\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/pagamento/codBarras/<span class=\\\"variable\\\">:codBarras</span></span>\\n</div>\"\n}\n[/block]\nEste endpoint deve ser usado para consultar as informações vinculadas a um código de barras de qualquer tipo de cobrança. O uso deste endpoint é obrigatório antes de realizar um pagamento, pois ele ajuda a evitar erros no processamento.\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Importante\",\n  \"body\": \"Há dois tipos de cobranças e eles podem retornar informações diferentes. São eles:\\n\\n1. **Tipo tributo** – conhecido também como títulos e convênios, esse tipo de cobrança é emitido por concessionárias de serviços, como: conta de água, luz, telefone e gás. Eles não são registrados na Câmara Interbancária de Pagamento (CIP) e, por isso, não retornam as mesmas informações que um boleto registrado na CIP apresenta. \\n\\n2. **Tipo boleto** – possui registro na Câmara Interbancária de Pagamento (CIP) e, por isso, após ser consultado, o endpoint retorna informações mais completas sobre o pagamento.\\n\\nNo item “Respostas”, a seguir, você confere o retorno das consultas que é apresentado em cada tipo de cobrança.\"\n}\n[/block]\n**Requer autorização para o escopo:** **`gn.barcode.read`**\n\n#### Requisição\n\nEste endpoint utiliza query params em seu funcionamento, portanto devem ser enviados pela URL, como exemplificado no trecho de código abaixo.\n\n`/pagamento/codBarras/:codBarras`\n\n#### Definição dos Parâmetros\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"**codBarras**\",\n    \"0-1\": \"Código de barras do boleto a ser consultado\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n#### Respostas\nAs resposta abaixo representam Sucesso e Falhas do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"tipo\\\": \\\"boleto\\\",\\n  \\\"banco\\\": {\\n    \\\"codigo\\\": 364,\\n    \\\"nome\\\": \\\"Gerencianet S.A.\\\"\\n  },\\n  \\\"codBarras\\\": \\\"0000000000000000000000000000000000\\\",\\n  \\\"linhaDigitavel\\\": \\\"000000000000000000000000000000000\\\",\\n  \\\"datas\\\": {\\n    \\\"vencimento\\\": \\\"2021-06-22 14:23:42\\\",\\n    \\\"limitePagamento\\\": \\\"2021-09-22 14:23:42\\\"\\n  },\\n  \\\"beneficiario\\\": {\\n    \\\"nome\\\": \\\"João da Silva\\\",\\n    \\\"fantasia\\\": \\\"Padaria do João\\\",\\n    \\\"documento\\\": \\\"00000000000000\\\"\\n  },\\n  \\\"pagador\\\": {\\n    \\\"nome\\\": \\\"Gorbadock Oldbuck\\\",\\n    \\\"documento\\\": \\\"00000000000\\\"\\n  },\\n  \\\"valores\\\": {\\n    \\\"original\\\": 1000,\\n    \\\"abatimento\\\": 0,\\n    \\\"multa\\\": 200,\\n    \\\"juros\\\": 2,\\n    \\\"desconto\\\": 300,\\n    \\\"final\\\": 902\\n  },\\n  \\\"informacoesPagamento\\\": {\\n    \\\"divergente\\\": {\\n      \\\"deveAceitar\\\": false,\\n      \\\"valorMinimo\\\": 0,\\n      \\\"valorMaximo\\\": 0\\n    },\\n    \\\"parcial\\\": {\\n      \\\"deveAceitar\\\": false,\\n      \\\"limiteDePagamentos\\\": 0\\n    },\\n    \\\"podeSerPago\\\": true\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200 (Tipo boleto)\"\n    },\n    {\n      \"code\": \"{\\n       \\\"tipo\\\": \\\"tributo\\\",\\n        \\\"banco\\\": null,\\n     \\\"codBarras\\\": \\\"84620000000470000113222928260060772936353800\\\",\\n    \\\"linhaDigitavel\\\": \\\"846200000004470000113220292826006077729363538004\\\",\\n  \\\"datas\\\": {\\n           \\\"vencimento\\\": \\\"contraApresentacao\\\",\\n           \\\"limitePagamento\\\": null\\n       },\\n      \\\"beneficiario\\\": null,\\n    \\\"pagador\\\": null,\\n       \\\"sacadorAvalista\\\": null,\\n  \\\"valores\\\": {\\n         \\\"original\\\": 4700,\\n           \\\"abatimento\\\": null,\\n           \\\"pago\\\": null,\\n         \\\"final\\\": 4700\\n       },\\n      \\\"informacoesPagamento\\\": null\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200 (Tipo tributo)\"\n    },\n    {\n      \"code\": \"{\\n  \\\"erro\\\": 0,\\n  \\\"descricao\\\": \\\"Código de barras inválido\\\"\\n}\\n\\nOu\\n\\n{\\n    \\\"nome\\\": \\\"erro_de_validacao\\\",\\n    \\\"mensagem\\\": \\\"Código de barras inválido\\\"\\n}\\n\\nOu\\n\\n{\\n    \\\"mensagem\\\": \\\"must NOT have more than 48 characters\\\"\\n}\\n\\n{\\n    \\\"mensagem\\\": \\\"must NOT have fewer than 44 characters\\\"\\n}\\n\\nOu\\n\\n{\\n    \\\"nome\\\": \\\"Error\\\",\\n    \\\"mensagem\\\": \\\"must be number\\\"\\n}\\n\\nOu\\n\\n{\\n    \\\"nome\\\": \\\"erro_de_validacao\\\",\\n    \\\"mensagem\\\": \\\"Código de barras não localizado na base centralizada\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    }\n  ]\n}\n[/block]\n### Solicitar pagamento de código de barras\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method post\\\">POST</span>\\n    <span class=\\\"endpoint\\\">/pagamento/codBarras/<span class=\\\"variable\\\">:codBarras</span></span>\\n</div>\"\n}\n[/block]\nEste endpoint deve ser usado para solicitar o pagamento de um código de barras para a data atual ou futura.\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Importante\",\n  \"body\": \"Pagamentos de boletos são aceitos até as 15h. Os Pagamentos de tributos e contas de consumo (água, energia, TV a cabo, gás e telefone) são até as 17h.\"\n}\n[/block]\n**Requer autorização para o escopo:** **` gn.barcode.pay.write`**\n\n#### Requisição\n\nEste endpoint utiliza query params em seu funcionamento, portanto devem ser enviados pela URL, como exemplificado no trecho de código abaixo.\n\n`/pagamento/codBarras/:codBarras`\n\n##### Body da requisição\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n    \\\"valor\\\": 500,\\n    \\\"dataPagamento\\\": \\\"2022-03-10\\\",\\n    \\\"descricao\\\": \\\"Pagamento de boleto, teste API Pagamentos\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo\"\n    }\n  ]\n}\n[/block]\n#### Definição dos Parâmetros\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"**codBarras**\",\n    \"0-1\": \"Código de barras do boleto de pagamento\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"String\",\n    \"1-0\": \"**dataPagamento**\",\n    \"1-1\": \"Data que deseja efetuar o pagamento\",\n    \"1-2\": \"Sim\",\n    \"1-3\": \"String\\nNo formato:\\n`AAAA-MM-DD`\",\n    \"2-0\": \"**valor**\",\n    \"2-1\": \"Valores monetários referentes à cobrança\",\n    \"2-2\": \"Sim\",\n    \"2-3\": \"String\\nNo formato:\\n`\\\\d{1,10}\\\\.\\\\d{2}`\",\n    \"3-0\": \"**descricao**\",\n    \"3-1\": \"Descrição do pagamento.\",\n    \"3-2\": \"Não\",\n    \"3-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\n#### Respostas\nAs resposta abaixo representam Sucesso e Falhas do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"idPagamento\\\": \\\"31234652\\\",\\n  \\\"valorPago\\\": 500,\\n  \\\"status\\\": \\\"LIQUIDADO\\\",\\n  \\\"data\\\": {\\n    \\\"solicitacao\\\": \\\"2021-06-22 14:23:42\\\",\\n    \\\"pagamento\\\": \\\"2021-06-25 13:03:20\\\"\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    },\n    {\n      \"code\": \"{\\n  \\\"erro\\\": 0,\\n  \\\"descricao\\\": \\\"Código de barras inválido\\\"\\n}\",\n      \"language\": \"text\",\n      \"name\": \"400\"\n    }\n  ]\n}\n[/block]\n### Consultar solicitação de pagamento\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/pagamento/<span class=\\\"variable\\\">:idPagamento</span></span>\\n</div>\"\n}\n[/block]\nConsulta o status da solicitação de pagamento anteriormente efetuada a partir do `idPagamento`.\n\n**Requer autorização para o escopo: ** **`gn.barcode.pay.read`**\n\n#### Requisição\n\nEste endpoint utiliza query params em seu funcionamento, portanto devem ser enviados pela URL, como exemplificado no trecho de código abaixo.\n\n`/pagamento/:idPagamento`\n\n#### Definição dos Parâmetros\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"**idPagamento**\",\n    \"0-1\": \"Id gerado na solicitação de pagamento\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"String\",\n    \"1-0\": \"**status**\",\n    \"1-2\": \"Não\",\n    \"1-3\": \"String\",\n    \"1-1\": \"O campo status representa a situação do pagamento requisitado. Podendo assumir os seguintes estados:\\n`EM_PROCESSAMENTO` - A solicitação de pagamento foi recebida e está sendo processada.\\n`AGENDADO` - O pagamento foi agendado para ser realizado na data solicitada.\\n `REALIZADO` - O pagamento foi enviado com sucesso para a ser liquidado.\\n`LIQUIDADO` - O pagamento foi liquidado com sucesso.\\n`CANCELADO` - O pagamento foi cancelado e o valor estornado.\\n`NAO_REALIZADO` - O pagamento teve um erro e não foi enviado para liquidação.\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n#### Respostas\nAs resposta abaixo representam Sucesso e Falhas do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"idPagamento\\\": \\\"304578214\\\",\\n  \\\"valorPago\\\": 1000,\\n  \\\"status\\\": \\\"LIQUIDADO\\\",\\n  \\\"motivoRecusa\\\": null,\\n  \\\"data\\\": {\\n    \\\"solicitacao\\\": \\\"2021-09-22 14:23:42\\\",\\n    \\\"pagamento\\\": \\\"2021-09-22 10:23:42\\\"\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200 (LIQUIDADO)\"\n    },\n    {\n      \"code\": \"{\\n       \\\"idPagamento\\\": 524090299,\\n \\\"codBarras\\\": \\\"36400000000000000000000000000000000000000000\\\",\\n        \\\"linhaDigitavel\\\": \\\"36400000000000000000000000000000000000000000000\\\",\\n       \\\"valorPago\\\": 2000,\\n        \\\"status\\\": \\\"NAO_REALIZADO\\\",\\n \\\"retornoBancario\\\": \\\"Limite mensal excedido.\\\",\\n   \\\"protocolo\\\": null,\\n    \\\"descricao\\\": \\\"Gerencianet S.A.\\\",\\n \\\"horario\\\": {\\n                \\\"solicitacao\\\": \\\"2022-04-01T12:47:04.000Z\\\"\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200 (NAO_REALIZADO)\"\n    },\n    {\n      \"code\": \"{\\n  \\\"erro\\\": 0,\\n  \\\"descricao\\\": \\\"Pagamento não encontrado\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    }\n  ]\n}\n[/block]\n### Consultar resumo de solicitações de pagamento\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/pagamento/resumo</span>\\n</div>\"\n}\n[/block]\n**Requer autorização para o escopo: ** **`gn.barcode.pay.read`**\n\nEste endpoint deve ser usado para solicitar o resumo das solicitações de pagamento realizadas em um período informado.\n\n#### Requisição\n\nEste endpoint utiliza query params em seu funcionamento, portanto devem ser enviados pela URL, como exemplificado no trecho de código abaixo.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"dataInicio\",\n    \"1-0\": \"dataFim\",\n    \"0-1\": \"Data inicial para consulta do resumo.\",\n    \"1-1\": \"Data final para consulta do resumo.\",\n    \"0-3\": \"string\\nEx: XXXX-XX-XX\",\n    \"1-3\": \"string\\nEx: XXXX-XX-XX\",\n    \"0-2\": \"Sim\",\n    \"1-2\": \"Sim\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n#### Respostas\nAs resposta abaixo representam Sucesso e Falhas do consumo.\n\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"datas\\\": {\\n    \\\"inicial\\\": \\\"string\\\",\\n    \\\"final\\\": \\\"string\\\"\\n  },\\n  \\\"solicitacoes\\\": {\\n    \\\"total\\\": 0,\\n    \\\"processando\\\": 0,\\n    \\\"sucesso\\\": 0,\\n    \\\"falha\\\": 0,\\n    \\\"cancelada\\\": 0\\n  },\\n  \\\"solicitacoesFalhas\\\": [\\n    0\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"string\\\",\\n  \\\"mensagem\\\": \\\"string\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    }\n  ]\n}\n[/block]","updates":[],"order":1,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"60d61f5896dc0b001078164f","createdAt":"2021-06-25T18:24:24.724Z","user":"6019480e64e6ad014802a7c5","category":{"sync":{"isSync":false,"url":""},"pages":[],"title":"API Pagamentos","slug":"api-pagamentos","order":1,"from_sync":false,"reference":false,"_id":"60d61f026ddc3901a32ee5f1","createdAt":"2021-06-25T18:22:58.645Z","version":"606f2ca7c5ba9100787834c6","project":"575aeffae12cf20e002f306c","__v":0},"version":{"version":"1.1.0","version_clean":"1.1.0","codename":"2021","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["606f2ca6c5ba91007878342b","575af039a083950e004487f7","575af5c7ba4ed70e000ca288","606f2ca6c5ba91007878342c","606f2ca6c5ba91007878342d","606f2ca6c5ba91007878342e","606f2ca6c5ba91007878342f","5761a63d207db7170022fc14","5761b9a2b65324200072d79e","576832939f0bf4190014ffdf","576832c09f0bf4190014ffe1","576832cba151c10e004316f0","576832d5bb15f40e00a288ec","576832e107b1f30e0039c645","606f2ca6c5ba910078783430","606f2ca6c5ba910078783431","5783f78c5cbce30e0074e2b7","606f2ca6c5ba910078783432","606f2ca6c5ba910078783433","606f2ca6c5ba910078783434","606f2ca6c5ba910078783435","606f2ca6c5ba910078783436","606f2ca6c5ba910078783437","578529f887c9280e0090394b","606f2ca6c5ba910078783438","606f2ca6c5ba910078783439","606f2ca6c5ba91007878343a","606f2ca6c5ba91007878343b","606f2ca6c5ba91007878343c","606f2ca6c5ba91007878343d","606f2ca6c5ba91007878343e","606f2ca6c5ba91007878343f","606f2ca6c5ba910078783440","606f2ca6c5ba910078783441","60d61f026ddc3901a32ee5f1","60ec37c637005f015e54174e","61473375119247002a9c14d7","6283a3819575c60045513ea2"],"_id":"606f2ca7c5ba9100787834c6","project":"575aeffae12cf20e002f306c","createdAt":"2016-06-10T16:51:06.080Z","releaseDate":"2016-06-10T16:51:06.080Z","__v":4,"forked_from":"575aeffae12cf20e002f306f"},"project":"575aeffae12cf20e002f306c","__v":0,"parentDoc":null}
Nesta página você encontrará todos os endpoints disponíveis da API de Pagamentos Gerencianet. Recomendamos que [participe da nossa comunidade no Discord](https://discord.gg/ptGHMtczcV) para acompanhar a evolução da API, incluindo a disponibilização de novos endpoints. Utilize o sumário abaixo para navegar rapidamente entre os grupos de endpoints da API. **Sumário** a. [Consultar código de barras para pagamento](#section-consultar-c-digo-de-barras-para-pagamento) b. [Solicitar pagamento de código de barras](#section-solicitar-pagamento-de-c-digo-de-barras) c. [Consultar solicitação de pagamento](#section-consultar-solicita-o-de-pagamento) d. [Consultar resumo de solicitações de pagamento](#section-consultar-resumo-de-solicita-es-de-pagamento) <br> [block:api-header] { "title": "Obter Autorização" } [/block] [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method post\">POST</span>\n \t<span class=\"endpoint\">\n /oauth/token\n </span>\n</div>" } [/block] Este endpoint é utilizado para autorizar as credenciais de uma aplicação e obter os escopos que a aplicação possui para acessar os outros endpoints da API. É necessário que o certificado P12/PEM esteja presente na requisição de autorização a fim de que o *handshake* com o servidor da API seja permitido. ### Exemplos de autorização utilizando o certificado .P12 Para a utilização da API de Pagamentos é necessário que o cliente e o servidor se comuniquem em uma conexão verificada um com o outro. A verificação é feita pelo certificado bidirecional (.PEM ou .P12), isto é, o servidor e o cliente implementaram um certificado de chave privada e um certificado de chave pública que permite que um possa assegurar-se da identidade do outro. Por isso para fazer qualquer requisição HTTP à API Pagamentos, incluindo a requisição de autorização junto ao OAuth2, é necessário que o certificado .P12, ou .PEM, esteja presente nos cabeçalhos da requisição. Abaixo, trazemos exemplos de como consumir a autorização da API Pagamentos Gerencianet, incorporando esse certificado na requisição. [block:code] { "codes": [ { "code": "<?php //Desenvolvido pela Consultoria Técnica da Gerencianet\n\n$config = [\n \"certificado\" => \"./certificado.pem\",\n \"client_id\" => \"YOUR-CLIENT-ID\",\n \"client_secret\" => \"YOUR-CLIENT-SECRET\"\n];\n$autorizacao = base64_encode($config[\"client_id\"] . \":\" . $config[\"client_secret\"]);\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, array(\n CURLOPT_URL => \"https://apis.gerencianet.com.br/oauth/token\", // Rota base, homologação ou produção\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => \"\",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 0,\n CURLOPT_FOLLOWLOCATION => true,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_POSTFIELDS => '{\"grant_type\": \"client_credentials\"}',\n CURLOPT_SSLCERT => $config[\"certificado\"], // Caminho do certificado\n CURLOPT_SSLCERTPASSWD => \"\",\n CURLOPT_HTTPHEADER => array(\n \"Authorization: Basic $autorizacao\",\n \"Content-Type: application/json\"\n ),\n));\n\n$response = curl_exec($curl);\n\ncurl_close($curl);\n\necho \"<pre>\";\necho $response;\necho \"</pre>\";", "language": "php", "name": "PHP" }, { "code": "//Desenvolvido pela Consultoria Técnica da Gerencianet\n\n\"use strict\";\nconst https = require(\"https\");\nvar axios = require(\"axios\");\nvar fs = require(\"fs\");\n\n//Insira o caminho de seu certificado .p12 dentro de seu projeto\nvar certificado = fs.readFileSync(\"./certificado.p12\");\n\n//Insira os valores de suas credenciais em desenvolvimento do pix\nvar credenciais = {\n client_id: \"YOUR-CLIENT-ID\",\n client_secret: \"YOUR-CLIENT-SECRET\",\n};\n\nvar data = JSON.stringify({ grant_type: \"client_credentials\" });\nvar data_credentials = credenciais.client_id + \":\" + credenciais.client_secret;\n\n// Codificando as credenciais em base64\nvar auth = Buffer.from(data_credentials).toString(\"base64\");\n\nconst agent = new https.Agent({\n pfx: certificado,\n passphrase: \"\",\n});\n//Consumo em desenvolvimento da rota post oauth/token\nvar config = {\n method: \"POST\",\n url: \"https://apis.gerencianet.com.br/oauth/token\",\n headers: {\n Authorization: \"Basic \" + auth,\n \"Content-Type\": \"application/json\",\n },\n httpsAgent: agent,\n data: data,\n};\n\naxios(config)\n .then(function (response) {\n console.log(JSON.stringify(response.data));\n })\n .catch(function (error) {\n console.log(error);\n });", "language": "javascript", "name": "Node" }, { "code": "#Desenvolvido pela Consultoria Técnica da Gerencianet\n\nimport requests\nimport base64\n\ncredentials = {\n \"client_id\": \"YOUR-CLIENT-ID\",\n \"client_secret\": \"YOUR-CLIENT-SECRET\",\n}\n\ncertificado = './certificado.pem' # A variável certificado é o diretório em que seu certificado em formato .pem deve ser inserido\n\nauth = base64.b64encode(\n (f\"{credentials['client_id']}:{credentials['client_secret']}\"\n ).encode()).decode()\n\nurl = \"https://apis.gerencianet.com.br/oauth/token\" #Para ambiente de Desenvolvimento\n\npayload=\"{\\r\\n \\\"grant_type\\\": \\\"client_credentials\\\"\\r\\n}\"\nheaders = {\n 'Authorization': f\"Basic {auth}\",\n 'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\",\n url,\n headers=headers,\n data=payload,\n cert=certificado)\n\nprint(response.text)", "language": "python", "name": "Python" }, { "code": "//Desenvolvido pela Consultoria Técnica da Gerencianet\n\nusing System;\nusing System.Security.Cryptography.X509Certificates;\nusing System.Collections.Generic;\nusing RestSharp;\n\nnamespace PixGerencianet\n{\n class Authorize\n {\n public static string Base64Encode(string plainText)\n {\n var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);\n return System.Convert.ToBase64String(plainTextBytes);\n }\n\n static void Main(string[] args)\n {\n\n var credencials = new Dictionary<string, string>{\n {\"client_id\", \"YOUR-CLIENT-ID\"},\n {\"client_secret\", \"YOUR-CLIENT-SECRET\"}\n };\n var authorization = Base64Encode(credencials[\"client_id\"] + \":\" + credencials[\"client_secret\"]);\n var client = new RestSharp.RestClient(\"https://apis.gerencianet.com.br/oauth/token\");\n var request = new RestRequest(Method.POST);\n\n X509Certificate2 uidCert = new X509Certificate2(\"./certificado.p12\", \"\");\n client.ClientCertificates = new X509CertificateCollection() { uidCert };\n\n request.AddHeader(\"Authorization\", \"Basic \" + authorization);\n request.AddHeader(\"Content-Type\", \"application/json\");\n request.AddParameter(\"application/json\", \"{\\r\\n \\\"grant_type\\\": \\\"client_credentials\\\"\\r\\n}\", ParameterType.RequestBody);\n \n IRestResponse restResponse = client.Execute(request);\n string response = restResponse.Content;\n\n Console.WriteLine(response);\n }\n }\n}", "language": "csharp", "name": "C#" }, { "code": "#Desenvolvido pela Consultoria Técnica da Gerencianet\n\nrequire \"uri\"\nrequire \"net/http\"\nrequire \"openssl\"\n\nclient_id = \"YOUR-CLIENT-ID\";\nclient_secret = \"YOUR-CLIENT-SECRET\";\n\ncertfile = File.read(\"certificado.pem\") # A variável certfile é o diretório em que seu certificado em formato .pem deve ser inserido\n\nurl = URI(\"https://apis.gerencianet.com.br/oauth/token\") #Para ambiente de Desenvolvimento\n\nhttps = Net::HTTP.new(url.host, url.port);\nhttps.use_ssl = true\nhttps.cert = OpenSSL::X509::Certificate.new(certfile)\nhttps.key = OpenSSL::PKey::RSA.new(certfile)\n\nrequest = Net::HTTP::Post.new(url)\nrequest.basic_auth(client_id, client_secret)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = \"{\\r\\n \\\"grant_type\\\": \\\"client_credentials\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body", "language": "ruby", "name": "Ruby" }, { "code": "//Desenvolvido pela Consultoria Técnica da Gerencianet\n\nimport java.io.BufferedReader;\nimport java.io.InputStreamReader;\nimport java.io.OutputStream;\nimport java.net.URL;\nimport java.util.Base64;\n\nimport javax.net.ssl.HttpsURLConnection;\nimport javax.net.ssl.SSLSocketFactory;\n\npublic class Auth {\n public static void main(String[] args) throws Exception {\n String client_id = \"YOUR-CLIENT-ID\";\n String client_secret = \"YOUR-CLIENT-SECRET\";;\n String basicAuth = Base64.getEncoder().encodeToString(((client_id+':'+client_secret).getBytes()));\n \n \t//Diretório em que seu certificado em formato .p12 deve ser inserido\n System.setProperty(\"javax.net.ssl.keyStore\", \"certificado.p12\"); \n SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();\n \n URL url = new URL (\"https://apis.gerencianet.com.br/oauth/token\"); //Para ambiente de Desenvolvimento \n HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();\n conn.setDoOutput(true);\n conn.setRequestMethod(\"POST\");\n conn.setRequestProperty(\"Content-Type\", \"application/json\");\n conn.setRequestProperty(\"Authorization\", \"Basic \"+ basicAuth);\n conn.setSSLSocketFactory(sslsocketfactory);\n String input = \"{\\\"grant_type\\\": \\\"client_credentials\\\"}\";\n \n OutputStream os = conn.getOutputStream();\n os.write(input.getBytes());\n os.flush();\t\t\n\n InputStreamReader reader = new InputStreamReader(conn.getInputStream());\n BufferedReader br = new BufferedReader(reader);\n\n String response;\n while ((response = br.readLine()) != null) {\n System.out.println(response);\n }\n conn.disconnect();\n\n }\n}", "language": "java" }, { "code": "//Desenvolvido pela Consultoria Técnica da Gerencianet\npackage main\n\nimport (\n \"fmt\"\n \"strings\"\n \"net/http\"\n \"io/ioutil\"\n \"crypto/tls\"\n)\n\nconst(\n client_id = \"YOUR-CLIENT-ID\"\n client_secret = \"YOUR-CLIENT-SECRET\"\n)\n\nfunc main() {\n\n url := \"https://apis.gerencianet.com.br/oauth/token\"// Rota base, homologação ou produção\n method := \"POST\"\n\n payload := strings.NewReader(`{\"grant_type\": \"client_credentials\"}`)\n\n\n cert, _ := tls.LoadX509KeyPair(\"CA.crt.pem\", \"KEY.crt.pem\")// Seu certificado e chave privada gerada a partir dos comandos de conversão OpenSSL\n\n client := &http.Client{\n Transport: &http.Transport{\n TLSClientConfig: &tls.Config{\n Certificates: []tls.Certificate{cert},\n },\n },\n}\n\n req, err := http.NewRequest(method, url, payload)\n\n if err != nil {\n fmt.Println(err)\n return\n }\n req.SetBasicAuth(client_id, client_secret)\n req.Header.Add(\"Content-Type\", \"application/json\")\n\n res, err := client.Do(req)\n if err != nil {\n fmt.Println(err)\n return\n }\n defer res.Body.Close()\n\n body, err := ioutil.ReadAll(res.Body)\n if err != nil {\n fmt.Println(err)\n return\n }\n fmt.Println(string(body))\n}", "language": "go" } ] } [/block] #### Exemplo de resposta da autorização O trecho de código abaixo representa um exemplo de resposta do OAuth à sua requisição de autorização. [block:code] { "codes": [ { "code": "{\n \"access_token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3600,\n \"scope\": \"gn.barcode.read gn.barcode.pay.write gn.barcode.pay.read\"\n}", "language": "json", "name": "Resposta" } ] } [/block] <br> [block:api-header] { "title": "Rota base" } [/block] Rota base ou URL's base para ambientes, utilize a rota abaixo para realizar a comunicação da sua aplicação com o ambiente de produção oferecido pela Gerencianet. [block:parameters] { "data": { "h-0": "Ambiente", "h-1": "Rota base", "0-1": "`https://apis.gerencianet.com.br/`", "0-0": "**Produção**" }, "cols": 2, "rows": 1 } [/block] <br> [block:api-header] { "title": "Pagamentos" } [/block] ### Consultar código de barras para pagamento [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/pagamento/codBarras/<span class=\"variable\">:codBarras</span></span>\n</div>" } [/block] Este endpoint deve ser usado para consultar as informações vinculadas a um código de barras de qualquer tipo de cobrança. O uso deste endpoint é obrigatório antes de realizar um pagamento, pois ele ajuda a evitar erros no processamento. [block:callout] { "type": "warning", "title": "Importante", "body": "Há dois tipos de cobranças e eles podem retornar informações diferentes. São eles:\n\n1. **Tipo tributo** – conhecido também como títulos e convênios, esse tipo de cobrança é emitido por concessionárias de serviços, como: conta de água, luz, telefone e gás. Eles não são registrados na Câmara Interbancária de Pagamento (CIP) e, por isso, não retornam as mesmas informações que um boleto registrado na CIP apresenta. \n\n2. **Tipo boleto** – possui registro na Câmara Interbancária de Pagamento (CIP) e, por isso, após ser consultado, o endpoint retorna informações mais completas sobre o pagamento.\n\nNo item “Respostas”, a seguir, você confere o retorno das consultas que é apresentado em cada tipo de cobrança." } [/block] **Requer autorização para o escopo:** **`gn.barcode.read`** #### Requisição Este endpoint utiliza query params em seu funcionamento, portanto devem ser enviados pela URL, como exemplificado no trecho de código abaixo. `/pagamento/codBarras/:codBarras` #### Definição dos Parâmetros [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "**codBarras**", "0-1": "Código de barras do boleto a ser consultado", "0-2": "Sim", "0-3": "String" }, "cols": 4, "rows": 1 } [/block] #### Respostas As resposta abaixo representam Sucesso e Falhas do consumo. [block:code] { "codes": [ { "code": "{\n \"tipo\": \"boleto\",\n \"banco\": {\n \"codigo\": 364,\n \"nome\": \"Gerencianet S.A.\"\n },\n \"codBarras\": \"0000000000000000000000000000000000\",\n \"linhaDigitavel\": \"000000000000000000000000000000000\",\n \"datas\": {\n \"vencimento\": \"2021-06-22 14:23:42\",\n \"limitePagamento\": \"2021-09-22 14:23:42\"\n },\n \"beneficiario\": {\n \"nome\": \"João da Silva\",\n \"fantasia\": \"Padaria do João\",\n \"documento\": \"00000000000000\"\n },\n \"pagador\": {\n \"nome\": \"Gorbadock Oldbuck\",\n \"documento\": \"00000000000\"\n },\n \"valores\": {\n \"original\": 1000,\n \"abatimento\": 0,\n \"multa\": 200,\n \"juros\": 2,\n \"desconto\": 300,\n \"final\": 902\n },\n \"informacoesPagamento\": {\n \"divergente\": {\n \"deveAceitar\": false,\n \"valorMinimo\": 0,\n \"valorMaximo\": 0\n },\n \"parcial\": {\n \"deveAceitar\": false,\n \"limiteDePagamentos\": 0\n },\n \"podeSerPago\": true\n }\n}", "language": "json", "name": "200 (Tipo boleto)" }, { "code": "{\n \"tipo\": \"tributo\",\n \"banco\": null,\n \"codBarras\": \"84620000000470000113222928260060772936353800\",\n \"linhaDigitavel\": \"846200000004470000113220292826006077729363538004\",\n \"datas\": {\n \"vencimento\": \"contraApresentacao\",\n \"limitePagamento\": null\n },\n \"beneficiario\": null,\n \"pagador\": null,\n \"sacadorAvalista\": null,\n \"valores\": {\n \"original\": 4700,\n \"abatimento\": null,\n \"pago\": null,\n \"final\": 4700\n },\n \"informacoesPagamento\": null\n}", "language": "json", "name": "200 (Tipo tributo)" }, { "code": "{\n \"erro\": 0,\n \"descricao\": \"Código de barras inválido\"\n}\n\nOu\n\n{\n \"nome\": \"erro_de_validacao\",\n \"mensagem\": \"Código de barras inválido\"\n}\n\nOu\n\n{\n \"mensagem\": \"must NOT have more than 48 characters\"\n}\n\n{\n \"mensagem\": \"must NOT have fewer than 44 characters\"\n}\n\nOu\n\n{\n \"nome\": \"Error\",\n \"mensagem\": \"must be number\"\n}\n\nOu\n\n{\n \"nome\": \"erro_de_validacao\",\n \"mensagem\": \"Código de barras não localizado na base centralizada\"\n}", "language": "json", "name": "400" } ] } [/block] ### Solicitar pagamento de código de barras [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method post\">POST</span>\n <span class=\"endpoint\">/pagamento/codBarras/<span class=\"variable\">:codBarras</span></span>\n</div>" } [/block] Este endpoint deve ser usado para solicitar o pagamento de um código de barras para a data atual ou futura. [block:callout] { "type": "warning", "title": "Importante", "body": "Pagamentos de boletos são aceitos até as 15h. Os Pagamentos de tributos e contas de consumo (água, energia, TV a cabo, gás e telefone) são até as 17h." } [/block] **Requer autorização para o escopo:** **` gn.barcode.pay.write`** #### Requisição Este endpoint utiliza query params em seu funcionamento, portanto devem ser enviados pela URL, como exemplificado no trecho de código abaixo. `/pagamento/codBarras/:codBarras` ##### Body da requisição [block:code] { "codes": [ { "code": "{\n \"valor\": 500,\n \"dataPagamento\": \"2022-03-10\",\n \"descricao\": \"Pagamento de boleto, teste API Pagamentos\"\n}", "language": "json", "name": "Exemplo" } ] } [/block] #### Definição dos Parâmetros [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "**codBarras**", "0-1": "Código de barras do boleto de pagamento", "0-2": "Sim", "0-3": "String", "1-0": "**dataPagamento**", "1-1": "Data que deseja efetuar o pagamento", "1-2": "Sim", "1-3": "String\nNo formato:\n`AAAA-MM-DD`", "2-0": "**valor**", "2-1": "Valores monetários referentes à cobrança", "2-2": "Sim", "2-3": "String\nNo formato:\n`\\d{1,10}\\.\\d{2}`", "3-0": "**descricao**", "3-1": "Descrição do pagamento.", "3-2": "Não", "3-3": "String" }, "cols": 4, "rows": 4 } [/block] #### Respostas As resposta abaixo representam Sucesso e Falhas do consumo. [block:code] { "codes": [ { "code": "{\n \"idPagamento\": \"31234652\",\n \"valorPago\": 500,\n \"status\": \"LIQUIDADO\",\n \"data\": {\n \"solicitacao\": \"2021-06-22 14:23:42\",\n \"pagamento\": \"2021-06-25 13:03:20\"\n }\n}", "language": "json", "name": "200" }, { "code": "{\n \"erro\": 0,\n \"descricao\": \"Código de barras inválido\"\n}", "language": "text", "name": "400" } ] } [/block] ### Consultar solicitação de pagamento [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/pagamento/<span class=\"variable\">:idPagamento</span></span>\n</div>" } [/block] Consulta o status da solicitação de pagamento anteriormente efetuada a partir do `idPagamento`. **Requer autorização para o escopo: ** **`gn.barcode.pay.read`** #### Requisição Este endpoint utiliza query params em seu funcionamento, portanto devem ser enviados pela URL, como exemplificado no trecho de código abaixo. `/pagamento/:idPagamento` #### Definição dos Parâmetros [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "**idPagamento**", "0-1": "Id gerado na solicitação de pagamento", "0-2": "Sim", "0-3": "String", "1-0": "**status**", "1-2": "Não", "1-3": "String", "1-1": "O campo status representa a situação do pagamento requisitado. Podendo assumir os seguintes estados:\n`EM_PROCESSAMENTO` - A solicitação de pagamento foi recebida e está sendo processada.\n`AGENDADO` - O pagamento foi agendado para ser realizado na data solicitada.\n `REALIZADO` - O pagamento foi enviado com sucesso para a ser liquidado.\n`LIQUIDADO` - O pagamento foi liquidado com sucesso.\n`CANCELADO` - O pagamento foi cancelado e o valor estornado.\n`NAO_REALIZADO` - O pagamento teve um erro e não foi enviado para liquidação." }, "cols": 4, "rows": 2 } [/block] #### Respostas As resposta abaixo representam Sucesso e Falhas do consumo. [block:code] { "codes": [ { "code": "{\n \"idPagamento\": \"304578214\",\n \"valorPago\": 1000,\n \"status\": \"LIQUIDADO\",\n \"motivoRecusa\": null,\n \"data\": {\n \"solicitacao\": \"2021-09-22 14:23:42\",\n \"pagamento\": \"2021-09-22 10:23:42\"\n }\n}", "language": "json", "name": "200 (LIQUIDADO)" }, { "code": "{\n \"idPagamento\": 524090299,\n \"codBarras\": \"36400000000000000000000000000000000000000000\",\n \"linhaDigitavel\": \"36400000000000000000000000000000000000000000000\",\n \"valorPago\": 2000,\n \"status\": \"NAO_REALIZADO\",\n \"retornoBancario\": \"Limite mensal excedido.\",\n \"protocolo\": null,\n \"descricao\": \"Gerencianet S.A.\",\n \"horario\": {\n \"solicitacao\": \"2022-04-01T12:47:04.000Z\"\n }\n}", "language": "json", "name": "200 (NAO_REALIZADO)" }, { "code": "{\n \"erro\": 0,\n \"descricao\": \"Pagamento não encontrado\"\n}", "language": "json", "name": "400" } ] } [/block] ### Consultar resumo de solicitações de pagamento [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/pagamento/resumo</span>\n</div>" } [/block] **Requer autorização para o escopo: ** **`gn.barcode.pay.read`** Este endpoint deve ser usado para solicitar o resumo das solicitações de pagamento realizadas em um período informado. #### Requisição Este endpoint utiliza query params em seu funcionamento, portanto devem ser enviados pela URL, como exemplificado no trecho de código abaixo. [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "dataInicio", "1-0": "dataFim", "0-1": "Data inicial para consulta do resumo.", "1-1": "Data final para consulta do resumo.", "0-3": "string\nEx: XXXX-XX-XX", "1-3": "string\nEx: XXXX-XX-XX", "0-2": "Sim", "1-2": "Sim" }, "cols": 4, "rows": 2 } [/block] #### Respostas As resposta abaixo representam Sucesso e Falhas do consumo. [block:code] { "codes": [ { "code": "{\n \"datas\": {\n \"inicial\": \"string\",\n \"final\": \"string\"\n },\n \"solicitacoes\": {\n \"total\": 0,\n \"processando\": 0,\n \"sucesso\": 0,\n \"falha\": 0,\n \"cancelada\": 0\n },\n \"solicitacoesFalhas\": [\n 0\n ]\n}", "language": "json", "name": "200" }, { "code": "{\n \"nome\": \"string\",\n \"mensagem\": \"string\"\n}", "language": "json", "name": "400" } ] } [/block]