{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","settings":"","results":{"codes":[]},"params":[]},"next":{"description":"","pages":[]},"title":"Credenciais, Certificado e Autorização","type":"basic","slug":"api-pix-autenticacao-e-seguranca","excerpt":"Informações sobre credenciais, certificado e autorização da API Pix Gerencianet","body":"Para integrar a API Pix Gerencianet ao seu sistema ou sua plataforma, é necessário ter uma Conta Digital Gerencianet.\n\nNão tem conta?\n[block:html]\n{\n  \"html\": \"<a href=\\\"https://gerencianet.com.br/#abrirconta\\\" target=\\\"_blank\\\" alt=\\\"Quero abrir uma conta Digital Gerencianet\\\"><button type=\\\"button\\\" class=\\\"buttonCTA buttonorange\\\">ABRA SUA CONTA GRÁTIS</button></a>\"\n}\n[/block]\nUma vez com acesso, você poderá obter as **credenciais e o certificado** necessários para a comunicação com a API Pix Gerencianet.\n\nVeja a seguir como obter as credenciais, certificados e detalhes sobre a autorização e segurança da sua integração com a Gerencianet.\n\n**Sumário**\n1. [Obtendo as credenciais da aplicação](#section-obtendo-as-credenciais-da-aplica-o)\n    1.1 [Entendendo os escopos de aplicação](#section-entendendo-os-escopos-de-aplica-o)\n    1.2 [Criar uma aplicação ou configurar uma já existente](#section-criar-uma-aplica-o-ou-configurar-uma-j-existente)\n2. [Gerando um certificado P12](#section-gerando-um-certificado-p12)\n    2.1 [Conversão de certificado P12 para o formato PEM](#section-convers-o-de-certificado-p12-para-o-formato-pem)\n3. [Rotas base](#section-rotas-base)\n4. [Autorização com OAuth2](#section-autoriza-o-com-oauth2)\n5. [Configurando o Postman para testes](#section-configurando-o-postman-para-testes)\n    5.1 [Importando a Collection da API Pix](#section-1-importando-a-collection-da-api-pix)\n    5.2 [Criando um Environment](#section-2-criando-um-environment)\n    5.3 [Configurando o certificado no Postman](#section-3-configurando-o-certificado-no-postman)\n    5.4 [Atribuindo o Client_Id e Client_Secret no Postman](#section-4-atribuindo-o-client_id-e-client_secret-no-postman)\n6. [Obter Autorização](#section-obter-autoriza-o)\n    6.1 [Exemplos de autorização utilizando o certificado .P12](#section-exemplos-de-autoriza-o-utilizando-o-certificado-p12)\n    6.2 [Exemplo de resposta da autorização](#section-exemplo-de-resposta-da-autoriza-o)\n\n<hr>\n\n## Obtendo as credenciais da aplicação\nUm integrador pode criar quantas aplicações desejar. Para cada aplicação são gerados 2 pares de chaves `Client_Id` e `Client_Secret`, sendo um par para utilização em ambiente de Produção ([?](https://gnetbr.com/HylbqtQSz_)) e outro para Homologação ([?](https://gnetbr.com/SyebXcmBfO)).\n\nUtilizando a API Pix Gerencianet, o integrador pode gerar transações Pix (pagamentos e recebimentos), configurar Webhooks para o recebimento de notificações via *callbacks* e acessar as funcionalidades exclusivas da Conta Digital Gerencianet.\n\n### Entendendo os escopos de aplicação\nAo criar ou editar uma aplicação em sua Conta Gerencianet, você precisará configurar os escopos que a aplicação terá acesso. A escolha desses escopos define quais ações uma aplicação estará **autorizada** a realizar via API.\n\nOs escopos disponíveis na API Pix Gerencianet estão listados abaixo com suas respectivas descrições:\n- **`cob.write`** - Permissão para **alteração de cobranças**;\n- **`cob.read`** - Permissão para **consulta de cobranças**;\n- **`pix.write`** - Permissão para **alteração de Pix**;\n- **`pix.read`** - Permissão para **consulta de Pix**;\n- **`pix.send`** - Permissão para **requisitar envio de Pix**;\n- **`webhook.write`** - Permissão para **alteração do webhook**;\n- **`webhook.read`** - Permissão para **consulta do webhook**;\n- **`payloadlocation.write`** - Permissão para **criar location do payload**;\n- **`payloadlocation.read`** - Permissão para **consulta de locations**;\n- **`gn.pix.evp.write`** - Permissão para **criar/remover chave evp**;\n- **`gn.pix.evp.read`** - Permissão para **listar chave evp**;\n- **`gn.balance.read`** - Permissão para **buscar saldo da conta**;\n- **`gn.settings.write`** - Permissão para **criar/modificar configurações da conta**;\n- **`gn.settings.read`** - Permissão para **listar configurações da conta**.\n\n### Criar uma aplicação ou configurar uma já existente\nVeja como criar uma aplicação ou aproveitar uma aplicação já existente para integrar com a API Pix Gerencianet.\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-docs-tabs\\\">\\n  <ul class=\\\"nav nav-tabs\\\" role=\\\"tablist\\\">\\n    <li role=\\\"presentation\\\" class=\\\"active\\\">\\n      <a href=\\\"#pix-new-app\\\" aria-controls=\\\"pix-new-app\\\" role=\\\"tab\\\" data-toggle=\\\"tab\\\">Criar uma aplicação</a>\\n    </li>\\n    <li role=\\\"presentation\\\">\\n      <a href=\\\"#pix-edit-app\\\" aria-controls=\\\"pix-edit-app\\\" role=\\\"tab\\\" data-toggle=\\\"tab\\\">Aproveitar uma aplicação já\\n        cadastrada</a>\\n    </li>\\n  </ul>\\n\\n  <div class=\\\"tab-content\\\">\\n    <div role=\\\"tabpanel\\\" class=\\\"tab-pane active\\\" id=\\\"pix-new-app\\\">\\n      <p>\\n        Para\\n        <b>criar uma aplicação para utilização da API Pix</b> siga os\\n        passos abaixo:\\n      </p>\\n\\n      <ol>\\n        <li>Acesse sua conta e clique no item \\\"API\\\" no menu superior da conta Gerencianet;</li>\\n        <li>No menu à esquerda, clique em \\\"Minhas Aplicações\\\" e \\\"Nova Aplicação\\\"</li>\\n        <li>Habilite a API Pix e escolha os escopos que deseja liberar em ambiente de Produção e Homologação (você pode\\n          editá-los no futuro);</li>\\n        <li>Com os escopos selecionados, clique em \\\"Criar nova aplicação\\\".</li>\\n      </ol>\\n\\n      <figure class=\\\"gn-docs-figure\\\">\\n        <img\\n          src=\\\"https://s3.amazonaws.com/gerencianet-pub-prod-1/printscreen/2021/04/14/macario.junior/1-create-app-pangeia.png\\\" />\\n\\n        <figcaption>\\n          Ilustração dos passos para a criação de uma nova aplicação integrada à API Pix\\n        </figcaption>\\n      </figure>\\n    </div>\\n\\n    <div role=\\\"tabpanel\\\" class=\\\"tab-pane\\\" id=\\\"pix-edit-app\\\">\\n      <p>\\n        Para <b>aproveitar uma aplicação já cadastrada</b> em sua conta e usá-la para a integração com Pix, siga os passos abaixo:\\n      </p>\\n\\n      <ol>\\n        <li>Acesse sua conta e clique no item \\\"API\\\" no menu superior da conta Gerencianet;</li>\\n        <li>No menu à esquerda, clique em \\\"Minhas Aplicações\\\". Em seguida, escolha a aplicação que será editada e clique em \\\"Editar\\\" (botão laranja)</li>\\n        <li>Habilite a API Pix e escolha os escopos que deseja liberar em ambiente de Produção e Homologação (você pode\\n          editá-los sempre que quiser);</li>\\n        <li>Com os escopos selecionados, clique em \\\"Atualizar aplicação\\\".</li>\\n      </ol>\\n\\n      <figure class=\\\"gn-docs-figure\\\">\\n        <img\\n          src=\\\"https://s3.amazonaws.com/gerencianet-pub-prod-1/printscreen/2021/04/14/macario.junior/1-edit-app-pangeia.png\\\" />\\n\\n        <figcaption>\\n          Passos até a edição de uma aplicação\\n        </figcaption>\\n      </figure>\\n      \\n      <figure class=\\\"gn-docs-figure\\\">\\n        <img\\n          src=\\\"https://s3.amazonaws.com/gerencianet-pub-prod-1/printscreen/2021/04/14/macario.junior/2-edit-app-pangeia.png\\\" />\\n\\n        <figcaption>\\n          Edições necessárias para o acesso de uma aplicação à API Pix\\n        </figcaption>\\n      </figure>\\n    </div>\\n  </div>\\n</div>\"\n}\n[/block]\n## Gerando um certificado P12\nTodas as requisições devem conter um certificado de segurança que será fornecido pela Gerencianet dentro da sua conta, no formato <code>PFX(.p12)</code>. Essa exigência está descrita na íntegra no <a href=\"https://www.bcb.gov.br/estabilidadefinanceira/comunicacaodados\" target=\"_blank\" alt=\"manual de segurança do pix\">manual de segurança do PIX</a>.\n\nPara gerar o seu certificado, basta seguir os passos abaixo:\n\n1. Acesse o item \"API\" no menu superior da conta Gerencianet;\n2. No menu à esquerda, clique em \"Meus Certificados\";\n3. Na nova janela selecione o ambiente ao qual pertencerá o certificado (Produção ou Homologação)\n4. Clique em \"Novo Certificado\" (botão laranja);\n5. Atribua uma descrição ao certificado para identificá-lo no futuro;\n6. Confirme a criação do certificado;\n7. Por fim, baixe o certificado.\n\nOs passos para a criação de um certificado estão ilustrados na imagem a seguir.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/6c41d35-1-create-cert-pangeia.png\",\n        \"1-create-cert-pangeia.png\",\n        1911,\n        963,\n        \"#333\"\n      ],\n      \"caption\": \"Passos para a criação do certificado\"\n    }\n  ]\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/56ec632-2-create-cert-pangeia.png\",\n        \"2-create-cert-pangeia.png\",\n        1911,\n        963,\n        \"#333\"\n      ],\n      \"caption\": \"Janela para a criação do certificado\"\n    }\n  ]\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/a7960f6-3-create-cert-pangeia.png\",\n        \"3-create-cert-pangeia.png\",\n        1911,\n        963,\n        \"#333\"\n      ],\n      \"caption\": \"Janela de download do certificado gerado\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Atenção!\",\n  \"body\": \"O download do certificado é feito imediatamente após a sua criação. Não será possível realizar o download do mesmo certificado em outro momento, por isso, armazene-o em local seguro em seu computador.\"\n}\n[/block]\nVale ressaltar que **um mesmo certificado pode ser usado por diversas aplicações** da sua conta digital. Ainda assim, você pode gerar até cinco certificados para cada ambiente (Produção ou Homologação).\n\n### Conversão de certificado P12 para o formato PEM\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"Em algumas linguagens as chaves precisarão ser convertidas para o formato `.pem`. Utilize as informações desta seção apenas se esse for o seu caso.\",\n  \"title\": \"Dica\"\n}\n[/block]\nEm algumas linguagens você deve converter o certificado `.p12` para o formato `.pem`. Para converter seu certificado, você pode <a href=\"https://pix.gerencianet.com.br/ferramentas/conversorGerencianet.exe\" target=\"_blank\" alt=\"Conversor de certificados Gerencianet\">baixar o conversor de certificados disponibilizado pela Gerencianet</a>.\n\nÉ possível utilizar também, o comando o OpenSSL para realizar essa conversão de formato entre as chaves:\n\n```shell\n# Gerar certificado e chave em único arquivo\nopenssl pkcs12 -in certificado.p12 -out certificado.pem -nodes\n```\n\nSe for necessário separar a chave privada do certificado durante a conversão, use o comando abaixo, também com o OpenSSL:\n\n```shell\n# Gerar certificado e chave separadas\nopenssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys #certificado\nopenssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes #chave privada\n```\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Dica\",\n  \"body\": \"O processo de conversão do certificado pode pedir a **senha do certificado**. Se isso ocorrer, informe vazio.\"\n}\n[/block]\n## Rotas base\nNesta documentação você perceberá referências à Rotas base ou URL's base para ambientes de Produção ou Homologação. Essas rotas são, na verdade, a URL na qual a API Pix Gerencianet se encontra. Assim, quando nos referirmos aos endpoints, fica implícito que esses trechos de URL também compõem a rota final do recurso desejado.\n\nUtilize as rotas abaixo para realizar a comunicação da sua aplicação com os ambientes de produção \n e homologação oferecidos pela Gerencianet.\n[block:parameters]\n{\n  \"data\": {\n    \"h-1\": \"Rota base\",\n    \"h-0\": \"Ambiente\",\n    \"0-0\": \"Produção\",\n    \"1-0\": \"Homologação\",\n    \"0-1\": \"`https://api-pix.gerencianet.com.br`\",\n    \"1-1\": \"`https://api-pix-h.gerencianet.com.br`\"\n  },\n  \"cols\": 2,\n  \"rows\": 2\n}\n[/block]\n## Autorização com OAuth2\n\nO mecanismo de autorização das requisições feitas à API Pix Gerencianet é compatível com o [protocolo OAuth 2.0](http://oauth.net/2/). O objetivo do OAuth2 é a obtenção de um token de acesso (`access_token`). Esse `access_token` é usado para autorizar todas as chamadas feitas à API, verificando se uma determinada aplicação tem permissões para consumir o endpoint requisitado.\n\nA autenticação das requisições é feita com HTTP  [Basic Auth](https://en.wikipedia.org/wiki/Basic_access_authentication) a partir do `Client_Id` e `Client_Secret` da aplicação criada em sua conta da Gerencianet.\n\nAtravés dessa autenticação o OAuth poderá responder quais as autorizações que a aplicação tem e, consequentemente, autorizar ou negar as requisições de acordo com essa informação.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Atenção!\",\n  \"body\": \"O Certificado P12/PEM gerado nos passos anteriores **é obrigatório em todas as requisições** feitas à API Pix, inclusive na requisição de autorização.\"\n}\n[/block]\n## Configurando o Postman para testes\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Dica\",\n  \"body\": \"O uso do software Postman é opcional. Os próximos parágrafos explicam como configurá-lo. Caso não deseje usar o Postman para testes, você pode avançar para o próximo tópico: [**Obter Autorização**](#section-obter-autoriza-o).\"\n}\n[/block]\nPara seguir com a etapa de configuração do Postman, você deve ter:\n\n1. Um par de credenciais `Client_Id` e `Client_Secret` de uma aplicação cadastrada em sua Conta Gerencianet;\n2. Um certificado P12/PEM gerado como ilustrado nas etapas anteriores;\n3. O software Postman instalado em seu computador (Caso não tenha, [clique aqui para baixar](https://www.postman.com/downloads/));\n\n### 1. Importando a Collection da API Pix\nQuando você tiver todos os requisitos acima, inicie a configuração do Postman pela importação da [*Collection* da API Pix Gerencianet](https://documenter.getpostman.com/view/13574984/TVzVgvBA).\n\n1. Baixe o arquivo JSON da collection <a download href=\"#\" class=\"lnk-collection-postman\" target=\"_blank\">clicando aqui</a>;\n2. Com o Postman iniciado, use o atalho `Ctrl+O` para abrir a tela de importação;\n3. Selecione o arquivo da *Collection*;\n4. Por último, clique em *Import* \n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/8b69583-1-import-collection-postman.png\",\n        \"1-import-collection-postman.png\",\n        1928,\n        1048,\n        \"#333\"\n      ],\n      \"caption\": \"Ilustração do início do processo de importação\"\n    }\n  ]\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/36464c9-2-import-collection-postman.png\",\n        \"2-import-collection-postman.png\",\n        1928,\n        1048,\n        \"#333\"\n      ],\n      \"caption\": \"Ilustração da importação do arquivo\"\n    }\n  ]\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/5eb49d0-3-import-collection-postman.png\",\n        \"3-import-collection-postman.png\",\n        1928,\n        1048,\n        \"#333\"\n      ],\n      \"caption\": \"Ilustração da etapa final da importação\"\n    }\n  ]\n}\n[/block]\n### 2. Criando um Environment\nA criação de um *Environment* no Postman é necessária para que algumas automações embutidas na collection funcionem. Essas automações foram projetadas para dar mais facilidade aos desenvolvedores durante os testes.\n\nCom elas você precisa solicitar a autorização apenas uma vez e, então, o `access_token` fica gravado como uma variável de ambiente (*environment*) do Postman, disponível para utilização nas requisições subsequentes.\n\nPara criar um Environment siga os passos abaixo.\n\n1. Acione o atalho `Ctrl+N` e selecione \"Environment\";\n2. Atribua um nome preferencialmente especificando se esse Environment será apontado para o ambiente de Produção ou Homologação;\n3. Crie a variável `gn-api-pix` e como valor inicial (*Initial value*) insira a URL da API Pix de Produção ou Homologação;\n4. Salve o seu Environment;\n5. Selecione o Environment desejado, assim o Postman entenderá a variável criada.\n\nAs imagens abaixo ilustram os passos acima. Como exemplo, foi criado um Environment apontado para o ambiente de Homologação da API Pix Gerencianet.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Dica\",\n  \"body\": \"Repita os passos acima para dessa vez ter um Environment apontado para o ambiente de Produção. Assim você poderá simplesmente alternar entre os Environments e suas requisições já estarão apontadas corretamente.\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/9adbc82-1-config-env-postman.png\",\n        \"1-config-env-postman.png\",\n        1928,\n        1048,\n        \"#333\"\n      ],\n      \"caption\": \"Criando um novo environment\"\n    }\n  ]\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/fce46c9-2-config-env-postman.png\",\n        \"2-config-env-postman.png\",\n        1928,\n        1048,\n        \"#333\"\n      ],\n      \"caption\": \"Configurações do environment\"\n    }\n  ]\n}\n[/block]\n### 3. Configurando o certificado no Postman\n\nTodas as requisições feitas à API Pix Gerencianet precisam do certificado gerado em sua conta Gerencianet. Portanto, para facilitar seus testes utilizando o Postman, siga os passos abaixo para configurar o uso do certificado durante as requisições de maneira automática:\n\n1. Clique no ícone de engrenagem no canto superior direito do Postman;\n2. Depois, clique em \"Settings\" para abrir as configurações;\n3. Na aba superior, clique em \"Certificates\";\n4. Em seguida, clique em \"Add Certificate\";\n3. Na janela de configuração do novo certificado, preencha o campo \"Host\" com a Rota base do ambiente ao qual o certificado pertence (Produção ou Homologação);\n4. Utilize o campo \"PFX File\" para informar ao Postman onde o arquivo do seu certificado P12/PEM se encontra;\n5. Finalize clicando em \"Add\" para salvar suas configurações.\n\nSeguindo esses passos, o Postman usará o certificado para quaisquer requisições feitas ao Host do ambiente configurado.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Dica\",\n  \"body\": \"É ideal que você configure o certificado do ambiente de homologação, mas você também pode repetir os passos acima para configurar o Postman com um certificado para o ambiente de Produção.\"\n}\n[/block]\nAs imagens abaixo ilustram o passo a passo da configuração do certificado.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/b1b9a40-1-add-cert-postman.png\",\n        \"1-add-cert-postman.png\",\n        1928,\n        1048,\n        \"#333\"\n      ],\n      \"caption\": \"Acessando as configurações do Postman\"\n    }\n  ]\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/3bc0701-2-add-cert-postman.png\",\n        \"2-add-cert-postman.png\",\n        1928,\n        1048,\n        \"#333\"\n      ],\n      \"caption\": \"Adicionando um novo certificado no Postman\"\n    }\n  ]\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/68b75fe-3-add-cert-postman.png\",\n        \"3-add-cert-postman.png\",\n        1928,\n        1048,\n        \"#333\"\n      ],\n      \"caption\": \"Configurações do certificado\"\n    }\n  ]\n}\n[/block]\n### 4. Atribuindo o Client_Id e Client_Secret no Postman\n\nPara finalizar a configuração do seu Postman é necessário configurar as credenciais de uma aplicação da sua conta Gerencianet. Essas credenciais são usadas para o Basic Auth e obtenção do `access_token` junto ao OAuth.\n\nSiga os passos abaixo para incluir as credenciais e realizar o seu primeiro teste na API Pix Gerencianet.\n\n1. Na collection importada, navegue até a rota `/oauth/token` e clique duas vezes para abrir;\n2. Acesse o menu \"Authorization\" e certifique-se de que o \"Type\" (tipo de autorização) esteja selecionado como \"Basic Auth\";\n3. Nos campos \"username\" e \"password\" preencha com as credenciais da sua aplicação, Client_Id e Client_Secret, respectivamente;\n4. Para testar, clique no botão \"Send\" para submeter a requisição\n\nA imagem abaixo ilustra os passos acima. Se tudo foi seguido corretamente, você deve obter uma resposta em formato JSON, contendo o `access_token`, `token_type`, `expires_in` e `scope` (como na imagem abaixo).\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/2053e91-1-request-auth-postman.png\",\n        \"1-request-auth-postman.png\",\n        1928,\n        1048,\n        \"#333\"\n      ],\n      \"caption\": \"Uso das credenciais de uma aplicação para autorização de requisições\"\n    }\n  ]\n}\n[/block]\n## Obter Autorização\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\n### Exemplos de autorização utilizando o certificado .P12\nPara fazer requisições HTTP utilizando certificados .P12 ou .PEM para autorização do Pix é necessário que a chave seja inserida na requisição.\n\nPara a utilização do Pix é 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 Pix, 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 Pix Gerencianet, incorporando esse certificado na requisição.\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://api-pix-h.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    },\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://api-pix-h.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://api-pix-h.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    },\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://api-pix-h.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    },\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://api-pix-h.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\": \"\"\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://api-pix-h.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      \"name\": \"\"\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://api-pix.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      \"name\": \"Go\"\n    }\n  ]\n}\n[/block]\n### Exemplo de resposta da autorização\nO trecho de código abaixo representa um exemplo de resposta do OAuth à sua requisição de autorização.\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\\\": \\\"cob.read cob.write pix.read pix.write\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Resposta\"\n    }\n  ]\n}\n[/block]\nA tabela abaixo descreve os atributos presentes no JSON retornado.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Tipo\",\n    \"0-0\": \"**access_token** \",\n    \"0-2\": \"string\",\n    \"1-0\": \"**token_type** \",\n    \"2-0\": \"**expires_in** \",\n    \"3-0\": \"**scope** \",\n    \"3-2\": \"string\",\n    \"2-2\": \"Integer (int32)\",\n    \"1-2\": \"string\",\n    \"2-1\": \"Tempo de expiração do `access_token` em segundos.\\n\\n**Padrão:** 3600\",\n    \"1-1\": \"Tipo de autorização na qual o `access_token` deve ser usado\\n\\n**Padrão**: \\\"Bearer\\\"\",\n    \"0-1\": \"Token de autorização a ser usado nas outras requisições feitas à API.\",\n    \"3-1\": \"Lista de escopos aos quais a aplicação autorizada possui acesso. Os escopos estão separados por espaço.\"\n  },\n  \"cols\": 3,\n  \"rows\": 4\n}\n[/block]","updates":[],"order":1,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"606f2eec0640860070668b98","createdAt":"2021-04-08T16:27:24.359Z","user":"606467dc210791004370e5df","category":{"sync":{"isSync":false,"url":""},"pages":[],"title":"API Pix","slug":"api-pix","order":0,"from_sync":false,"reference":false,"_id":"606f2ca6c5ba910078783441","createdAt":"2020-10-30T18:54:03.767Z","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"],"_id":"606f2ca7c5ba9100787834c6","project":"575aeffae12cf20e002f306c","createdAt":"2016-06-10T16:51:06.080Z","releaseDate":"2016-06-10T16:51:06.080Z","__v":2,"forked_from":"575aeffae12cf20e002f306f"},"project":"575aeffae12cf20e002f306c","__v":0,"parentDoc":null}

Credenciais, Certificado e Autorização

Informações sobre credenciais, certificado e autorização da API Pix Gerencianet

Para integrar a API Pix Gerencianet ao seu sistema ou sua plataforma, é necessário ter uma Conta Digital Gerencianet. Não tem conta? [block:html] { "html": "<a href=\"https://gerencianet.com.br/#abrirconta\" target=\"_blank\" alt=\"Quero abrir uma conta Digital Gerencianet\"><button type=\"button\" class=\"buttonCTA buttonorange\">ABRA SUA CONTA GRÁTIS</button></a>" } [/block] Uma vez com acesso, você poderá obter as **credenciais e o certificado** necessários para a comunicação com a API Pix Gerencianet. Veja a seguir como obter as credenciais, certificados e detalhes sobre a autorização e segurança da sua integração com a Gerencianet. **Sumário** 1. [Obtendo as credenciais da aplicação](#section-obtendo-as-credenciais-da-aplica-o) 1.1 [Entendendo os escopos de aplicação](#section-entendendo-os-escopos-de-aplica-o) 1.2 [Criar uma aplicação ou configurar uma já existente](#section-criar-uma-aplica-o-ou-configurar-uma-j-existente) 2. [Gerando um certificado P12](#section-gerando-um-certificado-p12) 2.1 [Conversão de certificado P12 para o formato PEM](#section-convers-o-de-certificado-p12-para-o-formato-pem) 3. [Rotas base](#section-rotas-base) 4. [Autorização com OAuth2](#section-autoriza-o-com-oauth2) 5. [Configurando o Postman para testes](#section-configurando-o-postman-para-testes) 5.1 [Importando a Collection da API Pix](#section-1-importando-a-collection-da-api-pix) 5.2 [Criando um Environment](#section-2-criando-um-environment) 5.3 [Configurando o certificado no Postman](#section-3-configurando-o-certificado-no-postman) 5.4 [Atribuindo o Client_Id e Client_Secret no Postman](#section-4-atribuindo-o-client_id-e-client_secret-no-postman) 6. [Obter Autorização](#section-obter-autoriza-o) 6.1 [Exemplos de autorização utilizando o certificado .P12](#section-exemplos-de-autoriza-o-utilizando-o-certificado-p12) 6.2 [Exemplo de resposta da autorização](#section-exemplo-de-resposta-da-autoriza-o) <hr> ## Obtendo as credenciais da aplicação Um integrador pode criar quantas aplicações desejar. Para cada aplicação são gerados 2 pares de chaves `Client_Id` e `Client_Secret`, sendo um par para utilização em ambiente de Produção ([?](https://gnetbr.com/HylbqtQSz_)) e outro para Homologação ([?](https://gnetbr.com/SyebXcmBfO)). Utilizando a API Pix Gerencianet, o integrador pode gerar transações Pix (pagamentos e recebimentos), configurar Webhooks para o recebimento de notificações via *callbacks* e acessar as funcionalidades exclusivas da Conta Digital Gerencianet. ### Entendendo os escopos de aplicação Ao criar ou editar uma aplicação em sua Conta Gerencianet, você precisará configurar os escopos que a aplicação terá acesso. A escolha desses escopos define quais ações uma aplicação estará **autorizada** a realizar via API. Os escopos disponíveis na API Pix Gerencianet estão listados abaixo com suas respectivas descrições: - **`cob.write`** - Permissão para **alteração de cobranças**; - **`cob.read`** - Permissão para **consulta de cobranças**; - **`pix.write`** - Permissão para **alteração de Pix**; - **`pix.read`** - Permissão para **consulta de Pix**; - **`pix.send`** - Permissão para **requisitar envio de Pix**; - **`webhook.write`** - Permissão para **alteração do webhook**; - **`webhook.read`** - Permissão para **consulta do webhook**; - **`payloadlocation.write`** - Permissão para **criar location do payload**; - **`payloadlocation.read`** - Permissão para **consulta de locations**; - **`gn.pix.evp.write`** - Permissão para **criar/remover chave evp**; - **`gn.pix.evp.read`** - Permissão para **listar chave evp**; - **`gn.balance.read`** - Permissão para **buscar saldo da conta**; - **`gn.settings.write`** - Permissão para **criar/modificar configurações da conta**; - **`gn.settings.read`** - Permissão para **listar configurações da conta**. ### Criar uma aplicação ou configurar uma já existente Veja como criar uma aplicação ou aproveitar uma aplicação já existente para integrar com a API Pix Gerencianet. [block:html] { "html": "<div class=\"gn-docs-tabs\">\n <ul class=\"nav nav-tabs\" role=\"tablist\">\n <li role=\"presentation\" class=\"active\">\n <a href=\"#pix-new-app\" aria-controls=\"pix-new-app\" role=\"tab\" data-toggle=\"tab\">Criar uma aplicação</a>\n </li>\n <li role=\"presentation\">\n <a href=\"#pix-edit-app\" aria-controls=\"pix-edit-app\" role=\"tab\" data-toggle=\"tab\">Aproveitar uma aplicação já\n cadastrada</a>\n </li>\n </ul>\n\n <div class=\"tab-content\">\n <div role=\"tabpanel\" class=\"tab-pane active\" id=\"pix-new-app\">\n <p>\n Para\n <b>criar uma aplicação para utilização da API Pix</b> siga os\n passos abaixo:\n </p>\n\n <ol>\n <li>Acesse sua conta e clique no item \"API\" no menu superior da conta Gerencianet;</li>\n <li>No menu à esquerda, clique em \"Minhas Aplicações\" e \"Nova Aplicação\"</li>\n <li>Habilite a API Pix e escolha os escopos que deseja liberar em ambiente de Produção e Homologação (você pode\n editá-los no futuro);</li>\n <li>Com os escopos selecionados, clique em \"Criar nova aplicação\".</li>\n </ol>\n\n <figure class=\"gn-docs-figure\">\n <img\n src=\"https://s3.amazonaws.com/gerencianet-pub-prod-1/printscreen/2021/04/14/macario.junior/1-create-app-pangeia.png\" />\n\n <figcaption>\n Ilustração dos passos para a criação de uma nova aplicação integrada à API Pix\n </figcaption>\n </figure>\n </div>\n\n <div role=\"tabpanel\" class=\"tab-pane\" id=\"pix-edit-app\">\n <p>\n Para <b>aproveitar uma aplicação já cadastrada</b> em sua conta e usá-la para a integração com Pix, siga os passos abaixo:\n </p>\n\n <ol>\n <li>Acesse sua conta e clique no item \"API\" no menu superior da conta Gerencianet;</li>\n <li>No menu à esquerda, clique em \"Minhas Aplicações\". Em seguida, escolha a aplicação que será editada e clique em \"Editar\" (botão laranja)</li>\n <li>Habilite a API Pix e escolha os escopos que deseja liberar em ambiente de Produção e Homologação (você pode\n editá-los sempre que quiser);</li>\n <li>Com os escopos selecionados, clique em \"Atualizar aplicação\".</li>\n </ol>\n\n <figure class=\"gn-docs-figure\">\n <img\n src=\"https://s3.amazonaws.com/gerencianet-pub-prod-1/printscreen/2021/04/14/macario.junior/1-edit-app-pangeia.png\" />\n\n <figcaption>\n Passos até a edição de uma aplicação\n </figcaption>\n </figure>\n \n <figure class=\"gn-docs-figure\">\n <img\n src=\"https://s3.amazonaws.com/gerencianet-pub-prod-1/printscreen/2021/04/14/macario.junior/2-edit-app-pangeia.png\" />\n\n <figcaption>\n Edições necessárias para o acesso de uma aplicação à API Pix\n </figcaption>\n </figure>\n </div>\n </div>\n</div>" } [/block] ## Gerando um certificado P12 Todas as requisições devem conter um certificado de segurança que será fornecido pela Gerencianet dentro da sua conta, no formato <code>PFX(.p12)</code>. Essa exigência está descrita na íntegra no <a href="https://www.bcb.gov.br/estabilidadefinanceira/comunicacaodados" target="_blank" alt="manual de segurança do pix">manual de segurança do PIX</a>. Para gerar o seu certificado, basta seguir os passos abaixo: 1. Acesse o item "API" no menu superior da conta Gerencianet; 2. No menu à esquerda, clique em "Meus Certificados"; 3. Na nova janela selecione o ambiente ao qual pertencerá o certificado (Produção ou Homologação) 4. Clique em "Novo Certificado" (botão laranja); 5. Atribua uma descrição ao certificado para identificá-lo no futuro; 6. Confirme a criação do certificado; 7. Por fim, baixe o certificado. Os passos para a criação de um certificado estão ilustrados na imagem a seguir. [block:image] { "images": [ { "image": [ "https://files.readme.io/6c41d35-1-create-cert-pangeia.png", "1-create-cert-pangeia.png", 1911, 963, "#333" ], "caption": "Passos para a criação do certificado" } ] } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/56ec632-2-create-cert-pangeia.png", "2-create-cert-pangeia.png", 1911, 963, "#333" ], "caption": "Janela para a criação do certificado" } ] } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/a7960f6-3-create-cert-pangeia.png", "3-create-cert-pangeia.png", 1911, 963, "#333" ], "caption": "Janela de download do certificado gerado" } ] } [/block] [block:callout] { "type": "warning", "title": "Atenção!", "body": "O download do certificado é feito imediatamente após a sua criação. Não será possível realizar o download do mesmo certificado em outro momento, por isso, armazene-o em local seguro em seu computador." } [/block] Vale ressaltar que **um mesmo certificado pode ser usado por diversas aplicações** da sua conta digital. Ainda assim, você pode gerar até cinco certificados para cada ambiente (Produção ou Homologação). ### Conversão de certificado P12 para o formato PEM [block:callout] { "type": "info", "body": "Em algumas linguagens as chaves precisarão ser convertidas para o formato `.pem`. Utilize as informações desta seção apenas se esse for o seu caso.", "title": "Dica" } [/block] Em algumas linguagens você deve converter o certificado `.p12` para o formato `.pem`. Para converter seu certificado, você pode <a href="https://pix.gerencianet.com.br/ferramentas/conversorGerencianet.exe" target="_blank" alt="Conversor de certificados Gerencianet">baixar o conversor de certificados disponibilizado pela Gerencianet</a>. É possível utilizar também, o comando o OpenSSL para realizar essa conversão de formato entre as chaves: ```shell # Gerar certificado e chave em único arquivo openssl pkcs12 -in certificado.p12 -out certificado.pem -nodes ``` Se for necessário separar a chave privada do certificado durante a conversão, use o comando abaixo, também com o OpenSSL: ```shell # Gerar certificado e chave separadas openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys #certificado openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes #chave privada ``` [block:callout] { "type": "info", "title": "Dica", "body": "O processo de conversão do certificado pode pedir a **senha do certificado**. Se isso ocorrer, informe vazio." } [/block] ## Rotas base Nesta documentação você perceberá referências à Rotas base ou URL's base para ambientes de Produção ou Homologação. Essas rotas são, na verdade, a URL na qual a API Pix Gerencianet se encontra. Assim, quando nos referirmos aos endpoints, fica implícito que esses trechos de URL também compõem a rota final do recurso desejado. Utilize as rotas abaixo para realizar a comunicação da sua aplicação com os ambientes de produção e homologação oferecidos pela Gerencianet. [block:parameters] { "data": { "h-1": "Rota base", "h-0": "Ambiente", "0-0": "Produção", "1-0": "Homologação", "0-1": "`https://api-pix.gerencianet.com.br`", "1-1": "`https://api-pix-h.gerencianet.com.br`" }, "cols": 2, "rows": 2 } [/block] ## Autorização com OAuth2 O mecanismo de autorização das requisições feitas à API Pix Gerencianet é compatível com o [protocolo OAuth 2.0](http://oauth.net/2/). O objetivo do OAuth2 é a obtenção de um token de acesso (`access_token`). Esse `access_token` é usado para autorizar todas as chamadas feitas à API, verificando se uma determinada aplicação tem permissões para consumir o endpoint requisitado. A autenticação das requisições é feita com HTTP [Basic Auth](https://en.wikipedia.org/wiki/Basic_access_authentication) a partir do `Client_Id` e `Client_Secret` da aplicação criada em sua conta da Gerencianet. Através dessa autenticação o OAuth poderá responder quais as autorizações que a aplicação tem e, consequentemente, autorizar ou negar as requisições de acordo com essa informação. [block:callout] { "type": "warning", "title": "Atenção!", "body": "O Certificado P12/PEM gerado nos passos anteriores **é obrigatório em todas as requisições** feitas à API Pix, inclusive na requisição de autorização." } [/block] ## Configurando o Postman para testes [block:callout] { "type": "info", "title": "Dica", "body": "O uso do software Postman é opcional. Os próximos parágrafos explicam como configurá-lo. Caso não deseje usar o Postman para testes, você pode avançar para o próximo tópico: [**Obter Autorização**](#section-obter-autoriza-o)." } [/block] Para seguir com a etapa de configuração do Postman, você deve ter: 1. Um par de credenciais `Client_Id` e `Client_Secret` de uma aplicação cadastrada em sua Conta Gerencianet; 2. Um certificado P12/PEM gerado como ilustrado nas etapas anteriores; 3. O software Postman instalado em seu computador (Caso não tenha, [clique aqui para baixar](https://www.postman.com/downloads/)); ### 1. Importando a Collection da API Pix Quando você tiver todos os requisitos acima, inicie a configuração do Postman pela importação da [*Collection* da API Pix Gerencianet](https://documenter.getpostman.com/view/13574984/TVzVgvBA). 1. Baixe o arquivo JSON da collection <a download href="#" class="lnk-collection-postman" target="_blank">clicando aqui</a>; 2. Com o Postman iniciado, use o atalho `Ctrl+O` para abrir a tela de importação; 3. Selecione o arquivo da *Collection*; 4. Por último, clique em *Import* [block:image] { "images": [ { "image": [ "https://files.readme.io/8b69583-1-import-collection-postman.png", "1-import-collection-postman.png", 1928, 1048, "#333" ], "caption": "Ilustração do início do processo de importação" } ] } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/36464c9-2-import-collection-postman.png", "2-import-collection-postman.png", 1928, 1048, "#333" ], "caption": "Ilustração da importação do arquivo" } ] } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/5eb49d0-3-import-collection-postman.png", "3-import-collection-postman.png", 1928, 1048, "#333" ], "caption": "Ilustração da etapa final da importação" } ] } [/block] ### 2. Criando um Environment A criação de um *Environment* no Postman é necessária para que algumas automações embutidas na collection funcionem. Essas automações foram projetadas para dar mais facilidade aos desenvolvedores durante os testes. Com elas você precisa solicitar a autorização apenas uma vez e, então, o `access_token` fica gravado como uma variável de ambiente (*environment*) do Postman, disponível para utilização nas requisições subsequentes. Para criar um Environment siga os passos abaixo. 1. Acione o atalho `Ctrl+N` e selecione "Environment"; 2. Atribua um nome preferencialmente especificando se esse Environment será apontado para o ambiente de Produção ou Homologação; 3. Crie a variável `gn-api-pix` e como valor inicial (*Initial value*) insira a URL da API Pix de Produção ou Homologação; 4. Salve o seu Environment; 5. Selecione o Environment desejado, assim o Postman entenderá a variável criada. As imagens abaixo ilustram os passos acima. Como exemplo, foi criado um Environment apontado para o ambiente de Homologação da API Pix Gerencianet. [block:callout] { "type": "info", "title": "Dica", "body": "Repita os passos acima para dessa vez ter um Environment apontado para o ambiente de Produção. Assim você poderá simplesmente alternar entre os Environments e suas requisições já estarão apontadas corretamente." } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/9adbc82-1-config-env-postman.png", "1-config-env-postman.png", 1928, 1048, "#333" ], "caption": "Criando um novo environment" } ] } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/fce46c9-2-config-env-postman.png", "2-config-env-postman.png", 1928, 1048, "#333" ], "caption": "Configurações do environment" } ] } [/block] ### 3. Configurando o certificado no Postman Todas as requisições feitas à API Pix Gerencianet precisam do certificado gerado em sua conta Gerencianet. Portanto, para facilitar seus testes utilizando o Postman, siga os passos abaixo para configurar o uso do certificado durante as requisições de maneira automática: 1. Clique no ícone de engrenagem no canto superior direito do Postman; 2. Depois, clique em "Settings" para abrir as configurações; 3. Na aba superior, clique em "Certificates"; 4. Em seguida, clique em "Add Certificate"; 3. Na janela de configuração do novo certificado, preencha o campo "Host" com a Rota base do ambiente ao qual o certificado pertence (Produção ou Homologação); 4. Utilize o campo "PFX File" para informar ao Postman onde o arquivo do seu certificado P12/PEM se encontra; 5. Finalize clicando em "Add" para salvar suas configurações. Seguindo esses passos, o Postman usará o certificado para quaisquer requisições feitas ao Host do ambiente configurado. [block:callout] { "type": "info", "title": "Dica", "body": "É ideal que você configure o certificado do ambiente de homologação, mas você também pode repetir os passos acima para configurar o Postman com um certificado para o ambiente de Produção." } [/block] As imagens abaixo ilustram o passo a passo da configuração do certificado. [block:image] { "images": [ { "image": [ "https://files.readme.io/b1b9a40-1-add-cert-postman.png", "1-add-cert-postman.png", 1928, 1048, "#333" ], "caption": "Acessando as configurações do Postman" } ] } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/3bc0701-2-add-cert-postman.png", "2-add-cert-postman.png", 1928, 1048, "#333" ], "caption": "Adicionando um novo certificado no Postman" } ] } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/68b75fe-3-add-cert-postman.png", "3-add-cert-postman.png", 1928, 1048, "#333" ], "caption": "Configurações do certificado" } ] } [/block] ### 4. Atribuindo o Client_Id e Client_Secret no Postman Para finalizar a configuração do seu Postman é necessário configurar as credenciais de uma aplicação da sua conta Gerencianet. Essas credenciais são usadas para o Basic Auth e obtenção do `access_token` junto ao OAuth. Siga os passos abaixo para incluir as credenciais e realizar o seu primeiro teste na API Pix Gerencianet. 1. Na collection importada, navegue até a rota `/oauth/token` e clique duas vezes para abrir; 2. Acesse o menu "Authorization" e certifique-se de que o "Type" (tipo de autorização) esteja selecionado como "Basic Auth"; 3. Nos campos "username" e "password" preencha com as credenciais da sua aplicação, Client_Id e Client_Secret, respectivamente; 4. Para testar, clique no botão "Send" para submeter a requisição A imagem abaixo ilustra os passos acima. Se tudo foi seguido corretamente, você deve obter uma resposta em formato JSON, contendo o `access_token`, `token_type`, `expires_in` e `scope` (como na imagem abaixo). [block:image] { "images": [ { "image": [ "https://files.readme.io/2053e91-1-request-auth-postman.png", "1-request-auth-postman.png", 1928, 1048, "#333" ], "caption": "Uso das credenciais de uma aplicação para autorização de requisições" } ] } [/block] ## Obter Autorização [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 fazer requisições HTTP utilizando certificados .P12 ou .PEM para autorização do Pix é necessário que a chave seja inserida na requisição. Para a utilização do Pix é 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 Pix, 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 Pix 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://api-pix-h.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" }, { "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://api-pix-h.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://api-pix-h.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" }, { "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://api-pix-h.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" }, { "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://api-pix-h.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": "" }, { "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://api-pix-h.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", "name": "" }, { "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://api-pix.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", "name": "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\": \"cob.read cob.write pix.read pix.write\"\n}", "language": "json", "name": "Resposta" } ] } [/block] A tabela abaixo descreve os atributos presentes no JSON retornado. [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Tipo", "0-0": "**access_token** ", "0-2": "string", "1-0": "**token_type** ", "2-0": "**expires_in** ", "3-0": "**scope** ", "3-2": "string", "2-2": "Integer (int32)", "1-2": "string", "2-1": "Tempo de expiração do `access_token` em segundos.\n\n**Padrão:** 3600", "1-1": "Tipo de autorização na qual o `access_token` deve ser usado\n\n**Padrão**: \"Bearer\"", "0-1": "Token de autorização a ser usado nas outras requisições feitas à API.", "3-1": "Lista de escopos aos quais a aplicação autorizada possui acesso. Os escopos estão separados por espaço." }, "cols": 3, "rows": 4 } [/block]