{"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","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}
Credenciais, Certificado e Autorização
Informações sobre credenciais, certificado e autorização da API Pix Gerencianet