Depoimentos em Textos
-
Fabrício M. Damasceno 08/05/2024Recebeu 5 estrelas!
-
Manuel Gomes 08/05/2024
Muito bom, bem explicado tirou varias duvidas!
-
Carlos E. Gonçalves 08/05/2024Recebeu 5 estrelas!
HTML é a linguagem de marcação padrão para páginas da web.
Com HTML, você pode criar seu próprio site.
HTML é fácil de aprender - você vai se divertir!
Não!, ele não tem lógica como as linguagens de programação que utiliza if e else, true e false.
Com nosso editor "Experimente você mesmo", você pode editar o código HTML e visualizar o resultado:
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>Título </h1>
<p>parágrafo </p>
</body>
</html>
<h1>Este é o título 1</h1>
<h2>Este é o título 2</h2>
<h3>Este é o título 3</h3>
<h4>Este é o título 4</h4>
<h5>Este é o título 5</h5>
<h6>Este é o título 6</h6>
<!DOCTYPE html>
<html>
<body>
<p>Este é um parágrafo.</p>
<p>Este é um parágrafo.</p>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<h2>LINKS HTML</h2>
<p>Os links HTML são definidos com a tag a:</p>
<a href="https://www.maykonsilveira.com.br">Clique Aqui</a>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<h2>HTML imagens</h2>
<p>As imagens HTML são definidas com a tag img::</p>
<img src="maykonsilveira.jpg" alt="EAD maykonsilveira.com.br" width="70" height="70">
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<h2>HTML Buttons</h2>
<p>HTML buttons tags:</p>
<button>Clique Aqui</button>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<h2>Listas no HTML5</h2>
<ul>
<li>curso PHP 8</li>
<li>Curso Sistema de Cobranças</li>
<li>Curso NodeJs</li>
</ul>
<h2>Outros Cursos</h2>
<ol>
<li>Wordpress</li>
<li>Elementor</li>
<li>HTML / CSS</li>
</ol>
</body>
</html>
<table>
<tr>
<th>Empresa</th>
<th>Fone</th>
<th>Páis</th>
</tr>
<tr>
<td>EAD Maykon Silveira</td>
<td>(41)0000-0000</td>
<td>Brasil</td>
</tr>
</table>
Exemplo de HTML Iframes:
<iframe src="https://maykonsilveira.com.br" title="Cursos online gratuitos"></iframe>
Exemplo de Meta Design Responsivo HTML:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<code>
x = 5;
y = 6;
z = x + y;
</code>
<link rel="icon" type="image/x-icon" href="/images/favicon.ico">
Os elementos de formatação foram projetados para exibir tipos especiais de texto:
<b>
- Texto em negrito<strong>
- texto importante<i>
- texto em itálico<em>
- Texto enfatizado<mark>
- texto marcado<small>
- Texto menor<del>
- texto excluído<ins>
- texto inserido<sub>
- Texto subscrito<sup>
- Texto sobrescrito
Um elemento de nível de bloco sempre começa em uma nova linha.
Um elemento de nível de bloco sempre ocupa toda a largura disponível (estende-se para a esquerda e direita, tanto quanto pode).
Um elemento de nível de bloco tem uma margem superior e uma inferior, enquanto um elemento embutido não.
<div>Seja bem vindo a EAD MaykonSilveira.com.br</div>
Aqui estão os elementos de nível de bloco em HTML:
<address>
<article>
<aside>
<blockquote>
<canvas>
<dd>
<div>
<dl>
<dt>
<fieldset>
<figcaption>
<figure>
<footer>
<form>
<h1> ao <h6>
<header>
<hr>
<li>
<main>
<nav>
<noscript>
<ol>
<p>
<pre>
<section>
<table>
<tfoot>
<ul>
<video>
Elementos Inline HTML
Um elemento embutido não começa em uma nova linha.
Um elemento embutido ocupa apenas a largura necessária.
Este é um elemento <span> dentro de um parágrafo.
<a>
<abbr>
<acronym>
<b>
<bdo>
<big>
<br>
<button>
<cite>
<code>
<dfn>
<em>
<i>
<img>
<input>
<kbd>
<label>
<map>
<object>
<output>
<q>
<samp>
<script>
<select>
<small>
<span>
<strong>
<sub>
<sup>
<textarea>
<time>
<tt>
<var>
aqui estão alguns exemplos:
Modelo | Descrição |
---|---|
<input type = "text"> | Exibe um campo de entrada de texto de linha única |
<input type = "radio"> | Exibe um botão de opção (para selecionar uma das muitas opções) |
<input type = "checkbox"> | Exibe uma caixa de seleção (para selecionar zero ou mais de muitas opções) |
<input type = "submit"> | Exibe um botão de envio (para enviar o formulário) |
<input type = "button"> | Exibe um botão clicável |
Um formulário com campos de entrada para texto:
<form>
<label for="nome">Nome:</label><br>
<input type="text" id="fname" name="fname"><br>
<label for="lname">Sobrenome:</label><br>
<input type="text" id="lname" name="lname">
</form>
Exemplo
Um formulário com botões de opção:
<p>Escolha uma opção:</p>
<form>
<input type="radio" id="html" name="fav_language" value="HTML">
<label for="html">HTML</label><br>
<input type="radio" id="css" name="fav_language" value="CSS">
<label for="css">CSS</label><br>
<input type="radio" id="javascript" name="fav_language" value="JavaScript">
<label for="javascript">JavaScript</label>
</form>
Exemplo
Um formulário com caixas de seleção:
<form>
<input type="checkbox" id="vehicle1" name="vehicle1" value="Bike">
<label for="vehicle1">Bicicleta</label><br>
<input type="checkbox" id="vehicle2" name="vehicle2" value="Car">
<label for="vehicle2">Carro</label><br>
<input type="checkbox" id="vehicle3" name="vehicle3" value="Boat">
<label for="vehicle3">Barco</label>
</form>
Exemplo
Um formulário com um botão de envio:
<form action="/action_page.php">
<label for="fname">Nome:</label><br>
<input type="text" id="fname" name="fname" value="John"><br>
<label for="lname">Fone:</label><br>
<input type="text" id="lname" name="lname" value="Doe"><br><br>
<input type="submit" value="Enviar">
</form>
HTML Video:
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
Seu navegador não suporta esta tag, diz Maykon Silveira
</video>
Como funciona Vídeos:
O controls
atributo adiciona controles de vídeo, como reprodução, pausa e volume.
É uma boa ideia sempre incluir os atributos width
e height
. Se a altura e a largura não forem definidas, a página pode piscar enquanto o vídeo carrega.
O <source>
elemento permite que você especifique arquivos de vídeo alternativos que o navegador pode escolher. O navegador usará o primeiro formato reconhecido.
O texto entre as tags <video>
e </video>
só será exibido em navegadores que não suportam o <video>
elemento.
Observação: os navegadores Chromium não permitem a reprodução automática na maioria dos casos. No entanto, a reprodução automática sem som é sempre permitida.
Adicione muted
depois autoplay
para permitir que seu vídeo comece a ser reproduzido automaticamente (mas sem som):
Exemplo
<video width="320" height="240" autoplay muted>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
Seu navegador não suporta esta tag, diz Maykon Silveira
</video>
O elemento HTML <audio>
Para reproduzir um arquivo de áudio em HTML, use o <audio>
elemento:
Exemplo
<audio controls>
<source src="horse.ogg" type="audio/ogg">
<source src="horse.mp3" type="audio/mpeg">
Seu navegador não suporta esta tag, diz Maykon Silveira
</audio>
Áudio HTML - Como funciona
O controls
atributo adiciona controles de áudio, como reprodução, pausa e volume.
O <source>
elemento permite que você especifique arquivos de áudio alternativos que o navegador pode escolher. O navegador usará o primeiro formato reconhecido.
O texto entre as tags <audio>
e </audio>
só será exibido em navegadores que não suportam o <audio>
elemento.
HTML <audio> Reprodução automática
Para iniciar um arquivo de áudio automaticamente, use o autoplay
atributo:
Exemplo
<audio controls autoplay>
<source src="horse.ogg" type="audio/ogg">
<source src="horse.mp3" type="audio/mpeg">
Seu navegador não suporta esta tag, diz Maykon Silveira
</audio>
Observação: os navegadores Chromium não permitem a reprodução automática na maioria dos casos. No entanto, a reprodução automática sem som é sempre permitida.
Adicione muted
depois autoplay
para permitir que seu arquivo de áudio comece a tocar automaticamente (mas sem som):
Exemplo
<audio controls autoplay muted>
<source src="horse.ogg" type="audio/ogg">
<source src="horse.mp3" type="audio/mpeg">
Seu navegador não suporta esta tag, diz Maykon Silveira
</audio>
Id de vídeo do YouTube
O YouTube exibirá um id (como tgbNymZ7vqY), quando você salva (ou reproduz) um vídeo.
Você pode usar este id e referir-se ao seu vídeo no código HTML.
Reproduzindo um vídeo do YouTube em HTML
Para reproduzir seu vídeo em uma página da web, faça o seguinte:
- Envie o vídeo para o YouTube
- Anote o ID do vídeo
- Defina um
<iframe>
elemento em sua página da web
- Deixe o
src
atributo apontar para o URL do vídeo
- Use os atributos
width
e height
para especificar a dimensão do jogador
- Adicione quaisquer outros parâmetros ao URL (veja abaixo)
Exemplo
<iframe width="420" height="315"
src="https://www.youtube.com/embed/SNQwBlHSKAQ">
</iframe>
Três artigos com conteúdo independente e autocontido:
<article>
<h2>Google Chrome</h2>
<p>Google Chrome is a web browser developed by Google, released in 2008. Chrome is the world's most popular web browser today!</p>
</article>
<article>
<h2>Mozilla Firefox</h2>
<p>Mozilla Firefox is an open-source web browser developed by Mozilla. Firefox has been the second most popular web browser since January, 2018.</p>
</article>
<article>
<h2>Microsoft Edge</h2>
<p>Microsoft Edge is a web browser developed by Microsoft, released in 2015. Microsoft Edge replaced Internet Explorer.</p>
</article>
Passo a passo para gerar uma cobrança de link de pagamento na API Gerencianet
Saiba como criar um link para uma tela de pagamento da Gerencianet para seus clientes efetuarem os pagamentos. Para criar, é bem simples e requer apenas dois passos:
Primeiramente, crie a transação, informando o item/produto/serviço, valor, quantidade, etc;
Agora, para criar o link de pagamento, informe o charge_id
da transação criada anteriormente.
O restante desta página apresenta os procedimentos detalhados, mas você precisa instalar uma de nossas bibliotecas em seu servidor para executar os códigos de exemplo. Certifique-se de que a SDK da Gerencianet foi instalada.
Caso você tenha ativado o Bolix em sua conta Gerencianet, as cobranças geradas pelo link de pagamento já vão vir com o pix no boleto.
Mais detalhes sobre o Bolix e como ativá-lo aqui
Primeiramente, precisamos gerar a transação (também chamada de "cobrança"). É neste momento que será informado o nome do item/produto/serviço, valor da transação, quantidade, dentre outras informações possíveis.
Após criá-la, será retornado o charge_id
, que é o identificador único da transação e que será utilizado para associar à forma de pagamento.
Assim que essa transação é criada, ela recebe o status new
, que significa que a cobrança foi gerada e está aguardando definição da forma de pagamento. Essa cobrança somente terá seu status alterado quando o integrador definir sua forma de pagamento.
Para gerar uma transação, você deve enviar uma requisição POST
para a rota /v1/charge
.
Caso queira, pode explorar e conhecer mais sobre este recurso usando nosso Playground.
O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:
require __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK use Gerencianet\Exception\GerencianetException; use Gerencianet\Gerencianet; $clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod) $clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod) $options = [ 'client_id' => $clientId, 'client_secret' => $clientSecret, 'sandbox' => true // altere conforme o ambiente (true = Homologação e false = producao) ]; $item_1 = [ 'name' => 'Item 1', // nome do item, produto ou serviço 'amount' => 1, // quantidade 'value' => 1000 // valor (1000 = R$ 10,00) (Obs: É possível a criação de itens com valores negativos. Porém, o valor total da fatura deve ser superior ao valor mínimo para geração de transações.) ]; $item_2 = [ 'name' => 'Item 2', // nome do item, produto ou serviço 'amount' => 2, // quantidade 'value' => 2000 // valor (2000 = R$ 20,00) ]; $items = [ $item_1, $item_2 ]; // Exemplo para receber notificações da alteração do status da transação. // $metadata = ['notification_url'=>'sua_url_de_notificacao_.com.br'] // Outros detalhes em: https://dev.gerencianet.com.br/docs/notificacoes // Como enviar seu $body com o $metadata // $body = [ // 'items' => $items, // 'metadata' => $metadata // ]; $body = [ 'items' => $items ]; try { $api = new Gerencianet($options); $charge = $api->createCharge([], $body); print_r($charge); } catch (GerencianetException $e) { print_r($e->code); print_r($e->error); print_r($e->errorDescription); } catch (Exception $e) { print_r($e->getMessage()); }
"id": "/Charge"
"items"
"name"
"value"
"amount"
"marketplace"
"payee_code"
"percentage"
"shippings"
"name"
"value"
"payee_code"
"metadata"
"custom_id"
"notification_url"
Para verificar mais detalhes, acesse aqui e explore em nosso Playground.
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Item que está sendo vendido. Uma mesma transação pode possuir ilimitados itens. Atributos de items
name* // Nome do item, produto ou serviço. Mínimo de 1 caractere e máximo de 255 caracteres (String).
value* // Valor, em centavos. Ex: R$ 10,00 = 1000. Integer.
amount // Quantidade. Integer (padrão: 1)
|
Sim |
Array |
|
Determina o(s) valor(es) de frete(s) de uma transação. Uma mesma transação pode possuir ilimitados valores de frete. Atributos de shippings
name* // Rótulo do frete. Máximo de 255 caracteres. String.
value* // Valor do frete, em centavos (1990 equivale a R$19,90). Integer.
payeeCode , // código da conta Gerencianet que receberá o repasse do valor total do frete - refere-se ao "identificador da conta" Gerencianet (onde localizar meu identificador?) (String)
|
Não |
Array |
|
Define dados específicos da transação. Atributos de metadata
custom_id // Permite associar uma transação Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-la caso você possua uma identificação específica e queira mantê-la. Máximo de 255 caracteres. String/null.
notification_url // Endereço de sua URL válida que receberá as notificações de mudanças de status das transações. Máximo de 255 caracteres. String/null.
|
Não |
Object |
* valor obrigatório
Agora que a transação já foi criada e você já possui o charge_id
, é preciso associá-lo para obter o link de pagamento.
Para criar um link de pagamento, você precisa ter gerado a transação, ou seja, que você já tenha o identificador charge_id
da cobrança, pois será necessário informá-lo.
Em seguida, basta enviar uma requisição POST
para a rota /v1/charge/:id/link
para gerar um link de pagamento, onde o :id
corresponde ao charge_id
da transação criada.
Caso queira, pode explorar e conhecer mais sobre este recurso usando nosso Playground.
O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:
require __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK use Gerencianet\Exception\GerencianetException; use Gerencianet\Gerencianet; $clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod) $clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod) $options = [ 'client_id' => $clientId, 'client_secret' => $clientSecret, 'sandbox' => true // altere conforme o ambiente (true = Homologação e false = producao) ]; // $charge_id refere-se ao ID da transação gerada anteriormente $params = [ 'id' => $charge_id ]; $body = [ 'billet_discount' => 5000, // desconto, em reais, caso o pagador escolha boleto (5000 equivale a R$ 50,00) 'card_discount' => 3000, // desconto, em reais, caso o pagador escolha cartão (3000 equivale a R$ 30,00) 'message' => '', // mensagem para o pagador com até 80 caracteres 'expire_at' => '2018-12-20', // data de vencimento da tela de pagamento e do próprio boleto 'request_delivery_address' => false, // solicitar endereço de entrega do comprador? 'payment_method' => 'all' // formas de pagamento disponíveis ]; try { $api = new Gerencianet($options); $response = $api->chargeLink($params, $body); print_r($response); } catch (GerencianetException $e) { print_r($e->code); print_r($e->error); print_r($e->errorDescription); } catch (Exception $e) { print_r($e->getMessage()); }
Para se criar um "link de pagamento" (chargeLink
), uma "transação" (createCharge
) previamente criada deverá ser informada. Logo, se houver uma tentativa de pagamento e, por alguma razão, não houver sucesso na confirmação do pagamento (ex: cartão recusado, cliente deseja pagar por outra forma, etc), uma nova transação deverá ser gerada e associada a um novo link de pagamento, pois a transação anterior estará com status de waiting
ou unpaid
, o que significa que devido a tentativa de pagamento, ela já foi atrelada a um método de pagamento.
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Define um desconto, em reais, caso o pagador escolha boleto bancário como forma de pagamento (informar valor inteiro, em reais). |
Não |
Integer |
|
Define um desconto, em reais, caso o pagador escolha cartão de crédito como forma de pagamento (informar valor Inteiro). |
Não |
Integer |
|
Define desconto condicional que é válido até uma data específica. Se o pagamento não for efetuado até aquela data, o desconto é invalidado. Atributos de conditional_discount
type*, // Tipo do desconto (String). Valores permitidos: currency : o desconto será informado em centavos;percentage : o desconto será informado em porcentagem.
value*, // Valor do desconto (Integer). Se o tipo do desconto for currency , o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja percentage , o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:1) currency // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar 599 ;2) percentage // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar 1500 .
until_date*, // Data máxima que o desconto será concedido. (String). Formato: YYYY-MM-DD
|
Não |
Object |
|
Define uma mensagem para o pagador. A mensagem aparece na tela de pagamento, nos e-mails relacionados à cobrança e no boleto, caso esta seja a forma de pagamento escolhida. |
Não |
String |
|
Define a data de vencimento da tela de pagamento e do próprio boleto, caso esta seja a forma de pagamento escolhida. |
Sim |
String |
|
Define se a tela de pagamento deve solicitar que o pagador informe um endereço de entrega. Há dois possíveis valores:
|
Sim |
Boolean |
|
Define as formas de pagamento que devem ficar disponíveis na tela para seu cliente escolher, podendo ser:
|
Sim |
Object |
Ao consumir o endpoint /charge/:id/link
, ou através do Playground, a cobrança ganha o status link
. Desta forma, o integrador consegue distinguir cobranças comuns que ainda não tiveram forma de pagamento definida (status new
) de cobranças que foram associadas a um link de pagamento (status link
).
O integrador só precisa redirecionar o pagador para o link retornado na tag payment_url
e todo o resto será realizado na tela de pagamento da Gerencianet.
A seguir, através da aba "Dados de Entrada", um JSON simples que pode ser utilizado para criar o link de pagamento. Além disso, é possível observar a saída prevista e o schema de validação com todas as tags (obrigatórias e opcionais) disponíveis para este método. Lembrando que também é preciso informar o parâmetro de entrada charge_id
da transação criada:
{ "message": "Escreva aqui, se quiser, uma mensagem ao seu cliente, limite de 80 caracteres", "payment_method": "all", "expire_at": "2016-12-20", "request_delivery_address": false, "billet_discount": 5000, "card_discount": 3000 }
Esse JSON, presente na aba "Dados de Entrada", define as seguintes informações ao criar o link de pagamento:
message
: define uma mensagem para o pagador. A mensagem aparece na tela de pagamento, nos e-mails relacionados à cobrança e no boleto, caso esta seja a forma de pagamento escolhida (máximo de 80 caracteres);
payment_method
: define as formas de pagamento que devem ficar disponíveis na tela (banking_billet
, credit_card
ou all
);
expire_at
: define a data de vencimento da tela de pagamento e do próprio boleto, caso esta seja a forma de pagamento escolhida;
request_delivery_address
: define se a tela de pagamento deve solicitar que o pagador informe um endereço de entrega (true
ou false
);
billet_discount
: define um desconto, em centavos, caso o pagador escolha boleto bancário como forma de pagamento (informar valor Inteiro);
card_discount
: define um desconto, em centavos, caso o pagador escolha cartão de crédito como forma de pagamento (informar valor Inteiro).
Todas as transações possuem status, que representa a "situação" dessa transação. Portanto, é importante conhecer os possíveis status na API para fornecer as devidas tratativas em seu sistema.
Confira neste link todos os detalhes dos possíveis status das transações.
As notificações permitem que você seja informado quando uma transação tiver seu status alterado. Dessa forma, você poderá identificar quando uma cobrança for paga, por exemplo.
Confira neste link todos os detalhes sobre como implementar a sua URL de notificação.
"id": "/ChargeLink"
"billet_discount"
"card_discount"
"conditional_discount"
"type"
"percentage",
"currency"
"value"
"until_date"
"message"
"expire_at"
"request_delivery_address"
"payment_method"
"banking_billet"
"credit_card"
"all"
Para verificar mais detalhes, acesse aqui e explore em nosso Playground.
É possível definir uma cor e um logo para sua tela. Para isso, logue em sua conta Gerencianet e acesse o menu Cobranças > Configurações
na aba Comunicação
.
Mesmo que prefira utilizar sua própria tela, as informações definidas aqui serão utilizadas também nos e-mails disparados pela API. Então recomendamos que faça a personalização de qualquer forma.
Para criar um link de pagamento, primeiro é necessário criar uma cobrança na API, consumindo o endpoint POST /v1/charge
. Este endpoint retorna, dentre outras informações, um identificador para a cobrança. O status inicial de uma cobrança é new
:
{ "items": [ { "name": "Produto exemplo", "value": 1000, "amount": 1 } ] }
Logo abaixo, os dados de saída previstos de acordo com a entrada realizada acima:
{ "code":200, "data":{ "charge_id":121062, "status":"new", "total":1000, "custom_id":null, "created_at":"2016-10-31 10:43:57" } }
Conhecendo o identificador da cobrança, basta consumir o endpoint POST /v1/charge/:id/link
para gerar um link de pagamento.
Existem outros endpoints e métodos relacionados a link de pagamento que estão disponíveis na API e podem ser explorados pelo integrador. Confira a relação completa:
Passo a passo para gerar uma cobrança de cartão de crédito na API Gerencianet
Atualmente disponibilizamos dois procedimentos para a criação de uma transação do tipo cartão de crédito, na primeira delas o titulo é criado em um passo único, assim fora convencionado como One Step. A segunda opção de criação da transação se da em dois passos, sendo assim convencionada como Two Steps. Ambos os fluxos estão detalhados a seguir:
Para que a criação de transações via One Step ocorra normalmente é necessário atualizar sua SDK. Todos os arquivos necessários para tal estão disponíveis através de nosso repositório e em nossa documentação.
No caso de transações com cartão de crédito, será realizada uma etapa anterior a criação onde ocorre a transmissão (via JavaScript, no browser), de forma segura, dos dados do cartão e retornando um payment_token
, e na segunda etapa seu backend envia o restante das informações da transação e o payment_token
obtido na primeira etapa.
É importante frisar que não é possível efetuar pagamento com cartão de crédito sem obter o payment_token
da transação, por isso, é imprescindível a realização dos procedimentos do item 1.1 deste documento (obter o payment_token
), e só depois passar para o item 1.2 (que é de fato o pagamento com cartão).
Inicialmente, vamos realizar a primeira etapa, que é a obtenção do payment_token
. Para tal, você necessitará de um código JavaScript específico de sua conta Gerencianet. Para gerá-lo, siga os passos :
API
(Lateral a esquerda)Identificador de Conta
(veja onde)Gerar
É importante frisar que é obtido via JavaScript, no browser, de forma segura, os dados do cartão e retorna um payment_token
, que é a representação dos dados enviados.
Lembre-se que, após informar seu identificador de conta, serão gerados 2 (dois) códigos JavaScript distintos.
Copie e utilize o código referente ao ambiente desejado, atentando-se às diferenças do ambiente de "Homologação" e "Produção".
Para aplicações web, você deve copiar o script, específico da sua conta, e utilizar a nossa biblioteca Javascript, conforme o snippet abaixo. Se você possui um app mobile, confira como proceder acessando nossa página no GitHub para Android e/ou iOS.
Adicionalmente, esclarecemos que uma conta Gerencianet não possui um payment_token
- ele é diferente e criado para cada cobrança gerada por cartão de crédito. Ele representa os dados do cartão do pagador e é obtido pela função getPaymentToken
. Além disso, cabe frisar que o payment_token
pode ser utilizado uma única vez, portanto, não é possível utilizá-lo para cobrar de forma recorrente.
$gn.ready(function (checkout) { checkout.getPaymentToken( { brand: 'visa', // bandeira do cartão number: '4012001038443335', // número do cartão cvv: '123', // código de segurança expiration_month: '05', // mês de vencimento expiration_year: '2021' // ano de vencimento }, function (error, response) { if (error) { // Trata o erro ocorrido console.error(error); } else { // Trata a resposta console.log(response); } } ); });
$gn.ready(function (checkout) { checkout.getInstallments( 50000, // valor total da cobrança 'visa', // bandeira do cartão function (error, response) { if (error) { // Trata o erro ocorrido console.log(error); } else { // Trata a respostae console.log(response); } } ); });
$gn.ready ( callback )
Parâmetro | Descrição | Tipo |
---|---|---|
|
Função de inicialização que possibilita a chamada das funções getPaymentToken e getInstallments. Parâmetro(s) de callback
object // Objeto que recebe as instâncias das outras funções.
|
Function |
getPaymentToken ( card_data, callback )
Parâmetro | Descrição | |
---|---|---|
|
Objeto que contém os dados do cartão. As propriedades desse objeto são:
brand // Bandeira do cartãonumber // Número do cartão sem formataçãocvv // Código de segurança do cartãoexpiration_month // Mês de expiração do cartão no formato "MM"expiration_year // Ano de expiração do cartão no formato "YYYY"
|
Object |
|
Função que recebe a resposta da Gerencianet. Parâmetro(s) de callback:
error // Se não foi possível gerar o payment_token, os erros serão retornados neste parâmetro.
response // Recebe os dados que representam o cartão de crédito: payment_token e card_mask
|
Function |
getInstallments ( total, brand, callback )
Parâmetro | Descrição | Tipo |
---|---|---|
|
Valor total da cobrança, incluindo fretes, em centavos.
Por exemplo: R$ 230,90 equivale a 23090.
|
Integer |
|
Bandeira do cartão que deseja-se obter os valores de parcelas. Possíveis valores:
visa // Bandeira Visa
mastercard // Bandeira MasterCard
amex // Bandeira AmericanExpress
elo // Bandeira Elo
hipercard // Bandeira Hipercard
|
String |
|
Função que recebe a resposta da Gerencianet. Parâmetro(s) de callback:
error // Se não foi possível obter dados sobre o pagamento, os erros serão retornados neste parâmetro.
response // Recebe os dados relacionados ao tipo de pagamento consultado.
|
Function |
Agora que o payment_token
já foi obtido através do código Javascript, vamos prosseguir com o pagamento com cartão de crédito.
Nesta etapa, seu backend envia o restante das informações da transação e o payment_token
obtido na primeira etapa.
Ao pagar uma transação por cartão de crédito, o status é alterado de new
para waiting
. Isso significa que a transação está associada a uma forma de pagamento e que está aguardando a confirmação do pagamento.
Assim que o pagamento for confirmado, a transação terá o status alterado de waiting
para paid
. Mas, se por alguma razão não for possível confirmar o pagamento, o status será alterado para unpaid
.
O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:
require __DIR__.'/../../autoload.php'; //Caminho da SDK use Gerencianet\Exception\GerencianetException; use Gerencianet\Gerencianet; $clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod) $clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod) $options = [ 'client_id' => $clientId, 'client_secret' => $clientSecret, 'sandbox' => true // altere conforme o ambiente (true = Homologação e false = producao) ]; $paymentToken = '83d52dbd590d9ebc991938c711ddd31f65df89a5'; // payment_token obtido no procedimento através do Javascript único por conta Gerencianet $item_1 = [ 'name' => 'Item 1', // nome do item, produto ou serviço 'amount' => 1, // quantidade 'value' => 3000 // valor (1000 = R$ 10,00) (Obs: É possível a criação de itens com valores negativos. Porém, o valor total da fatura deve ser superior ao valor mínimo para geração de transações.) ]; $items = [ $item_1 ]; $metadata = array('notification_url'=>'https://SuaUrl/16rpx6y1'); $customer = [ 'name' => 'Gorbadoc Oldbuck', // nome do cliente 'cpf' => '04267484171', // cpf do cliente 'phone_number' => '5144916523', // telefone do cliente 'email' => '[email protected]', // endereço de email do cliente 'birth' => '1977-01-15' // data de nascimento do cliente ]; $billingAddress = [ 'street' => 'Av JK', 'number' => 909, 'neighborhood' => 'Bauxita', 'zipcode' => '35400000', 'city' => 'Ouro Preto', 'state' => 'MG' ]; $discount = [ 'type' => 'currency', 'value' => 599 ]; $credit_card = [ 'customer' => $customer, 'installments' => 1, // número de parcelas em que o pagamento deve ser dividido 'discount' =>$discount, 'billing_address' => $billingAddress, 'payment_token' => $paymentToken, 'message' => 'teste\nteste\nteste\nteste' ]; $payment = [ 'credit_card' => $credit_card // forma de pagamento (credit_card = cartão) ]; $body = [ 'items' => $items, 'metadata' =>$metadata, 'payment' => $payment ]; try { $api = new Gerencianet($options); $pay_charge = $api->oneStep([],$body); echo '<pre>'; print_r($pay_charge); echo '<pre>'; } catch (GerencianetException $e) { print_r($e->code); print_r($e->error); print_r($e->errorDescription); } catch (Exception $e) { print_r($e->getMessage()); }
"items"
"name"
"value"
"amount"
"marketplace"
"payee_code"
"percentage"
"shippings"
"name"
"value"
"payee_code"
"metadata"
"custom_id"
"notification_url"
"payment"
"credit_card"
"customer"
"name"
"cpf"
"email"
"phone_number"
"birth"
"address"
"street"
"number"
"neighborhood"
"zipcode"
"city"
"complement"
"state"
"juridical_person"
"corporate_name"
"cnpj"
"installments"
"discount"
"type"
"percentage",
"currency"
"value"
"billing_address"
"street"
"number"
"neighborhood"
"zipcode"
"city"
"complement"
"state"
"payment_token"
"message"
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Item que está sendo vendido. Uma mesma transação pode possuir ilimitados itens. Atributos de items
name* // Nome do item, produto ou serviço. Mínimo de 1 caractere e máximo de 255 caracteres (String).
value* // Valor, em centavos. Ex: R$ 10,00 = 1000. Integer.
amount // Quantidade. Integer (padrão: 1)
|
Sim |
Array |
|
Determina o(s) valor(es) de frete(s) de uma transação. Uma mesma transação pode possuir ilimitados valores de frete. Atributos de shippings
name* // Rótulo do frete. Máximo de 255 caracteres. String.
value* // Valor do frete, em centavos (1990 equivale a R$19,90). Integer.
payeeCode , // código da conta Gerencianet que receberá o repasse do valor total do frete - refere-se ao "identificador da conta" Gerencianet (onde localizar meu identificador?) (String)
|
Não |
Array |
|
Define dados específicos da transação. Atributos de metadata
custom_id // Permite associar uma transação Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-la caso você possua uma identificação específica e queira mantê-la. Máximo de 255 caracteres. String/null.
notification_url // Endereço de sua URL válida que receberá as notificações de mudanças de status das transações. Máximo de 255 caracteres. String/null.
|
Não |
Object |
Objeto Payment
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Objeto contendo as informações necessárias para o pagamento via cartão de crédito, como por exemplo, o número de parcelas e os dados do cliente. |
Sim |
Objeto Credit_Card |
Objeto Credit_Card
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Dados pessoais do pagador. Atributos de customer
name* // nome (String)
cpf* // CPF do cliente (sem pontos, vírgulas ou hífen) (String)
email* // Endereço de email válido do cliente (String)
phone_number* // Telefone válido do cliente, sem caracteres especiais (String)
birth* // Data de Nascimento do cliente (data válida em formato YYYY-MM-DD) (String)
juridical_person // Dados de pessoa jurídica (Object) (mais informações)
|
Sim |
Object |
|
Número de parcelas em que o pagamento deve ser dividido. |
Não |
Integer |
|
Define dados de desconto sobre a cobrança. Atributos de discount
type*, // Tipo do desconto (String). Valores permitidos: currency : o desconto será informado em centavos;percentage : o desconto será informado em porcentagem.
value*, // Valor do desconto (Integer). Se o tipo do desconto for currency , o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja percentage , o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:1) currency // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar 599 ;2) percentage // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar 1500 .
|
Não |
Object |
|
Endereço de cobrança (mais informações) Atributos de billing_address
street* // nome da rua (Object)
number* // número (String/Integer)
neighborhood* // Bairro (String)
zipcode* // CEP (sem pontos ou hífen) (String)
city* // cidade (String)
complement // complemento (String/null)
state* // estado (2 caracteres) (Object)
|
Sim |
Object |
|
Token único de pagamento obtido na primeira etapa da geração da transação. |
Sim |
String |
|
Permite incluir no boleto uma "observação", ou em outras palavras, uma mensagem para o cliente. Essa mensagem poderá ser vista nos e-mails relacionados à cobrança, no boleto ou carnê. O operador |
Não |
String |
* valor obrigatório
Nesta opção é necessário que o body da requisição contenha todos os atributos mínimos obrigatórios para a emissão do titulo.
Abaixo temos os exemplos de implementação utilizando as SDK's disponíveis:
2.1. Crie a transação, informando o item/produto/serviço, valor, quantidade, etc;
2.2. Associe à forma de pagamento via cartão, informando o charge_id
da transação criada e os dados do cliente;
2.3. Obtenção do payment_token (via JavaScript, único por transação);
2.4. Pagando com cartão.
Por se tratar de pagamento via cartão e envolver dados sensíveis, como dados do cartão de crédito, os procedimentos descritos nos itens 3.1 e 3.2, ou seja, obtenção do payment_token
e pagando com cartão, respectivamente, são necessários.
O restante desta página apresenta os procedimentos detalhados, mas você precisa instalar uma de nossas bibliotecas em seu servidor para executar os códigos de exemplo. Certifique-se de que a SDK da Gerencianet foi instalada.
Primeiramente, precisamos gerar a transação (também chamada de "cobrança"). É neste momento que será informado o nome do item/produto/serviço, valor da transação, quantidade, dentre outras informações possíveis.
Após criá-la, será retornado o charge_id
, que é o identificador único da transação e que será utilizado para associar à forma de pagamento.
Assim que essa transação é criada, ela recebe o status new
, que significa que a cobrança foi gerada e está aguardando definição da forma de pagamento. Essa cobrança somente terá seu status alterado quando o integrador definir sua forma de pagamento.
Para gerar uma transação, você deve enviar uma requisição POST
para a rota /v1/charge
.
Caso queira, pode explorar e conhecer mais sobre este recurso usando nosso Playground.
O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:
require __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK use Gerencianet\Exception\GerencianetException; use Gerencianet\Gerencianet; $clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod) $clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod) $options = [ 'client_id' => $clientId, 'client_secret' => $clientSecret, 'sandbox' => true // altere conforme o ambiente (true = Homologação e false = producao) ]; $item_1 = [ 'name' => 'Item 1', // nome do item, produto ou serviço 'amount' => 1, // quantidade 'value' => 1000 // valor (1000 = R$ 10,00) (Obs: É possível a criação de itens com valores negativos. Porém, o valor total da fatura deve ser superior ao valor mínimo para geração de transações.) ]; $item_2 = [ 'name' => 'Item 2', // nome do item, produto ou serviço 'amount' => 2, // quantidade 'value' => 2000 // valor (2000 = R$ 20,00) ]; $items = [ $item_1, $item_2 ]; // Exemplo para receber notificações da alteração do status da transação. // $metadata = ['notification_url'=>'sua_url_de_notificacao_.com.br'] // Outros detalhes em: https://dev.gerencianet.com.br/docs/notificacoes // Como enviar seu $body com o $metadata // $body = [ // 'items' => $items, // 'metadata' => $metadata // ]; $body = [ 'items' => $items ]; try { $api = new Gerencianet($options); $charge = $api->createCharge([], $body); print_r($charge); } catch (GerencianetException $e) { print_r($e->code); print_r($e->error); print_r($e->errorDescription); } catch (Exception $e) { print_r($e->getMessage()); }
"id": "/Charge"
"items"
"name"
"value"
"amount"
"marketplace"
"payee_code"
"percentage"
"shippings"
"name"
"value"
"payee_code"
"metadata"
"custom_id"
"notification_url"
Para verificar mais detalhes, acesse aqui e explore em nosso Playground.
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Item que está sendo vendido. Uma mesma transação pode possuir ilimitados itens. Atributos de items
name* // Nome do item, produto ou serviço. Mínimo de 1 caractere e máximo de 255 caracteres (String).
value* // Valor, em centavos. Ex: R$ 10,00 = 1000. Integer.
amount // Quantidade. Integer (padrão: 1)
|
Sim |
Array |
|
Determina o(s) valor(es) de frete(s) de uma transação. Uma mesma transação pode possuir ilimitados valores de frete. Atributos de shippings
name* // Rótulo do frete. Máximo de 255 caracteres. String.
value* // Valor do frete, em centavos (1990 equivale a R$19,90). Integer.
payeeCode , // código da conta Gerencianet que receberá o repasse do valor total do frete - refere-se ao "identificador da conta" Gerencianet (onde localizar meu identificador?) (String)
|
Não |
Array |
|
Define dados específicos da transação. Atributos de metadata
custom_id // Permite associar uma transação Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-la caso você possua uma identificação específica e queira mantê-la. Máximo de 255 caracteres. String/null.
notification_url // Endereço de sua URL válida que receberá as notificações de mudanças de status das transações. Máximo de 255 caracteres. String/null.
|
Não |
Object |
* valor obrigatório
Com a transação criada, vamos associá-la à forma de pagamento desejada, que neste caso, será cartão de crédito. Para tal, deverá ser informado a charge_id
obtido no consumo anterior em que foi gerada a transação.
No caso de transações com cartão de crédito, será realizado em duas etapas, sendo a primeira a transmissão (via JavaScript, no browser), de forma segura, os dados do cartão e retornando um payment_token
, e na segunda etapa seu backend envia o restante das informações da transação e o payment_token
obtido na primeira etapa.
É importante frisar que não é possível efetuar pagamento com cartão de crédito sem obter o payment_token
da transação, por isso, é imprescindível a realização dos procedimentos do item 2.1 deste documento (obter o payment_token
), e só depois passar para o item 2.2 (que é de fato o pagamento com cartão).
Para associar à forma de pagamento, você deve enviar uma requisição POST
para a rota /v1/charge/:id/pay
, onde :id
é o charge_id
da transação desejada.
Caso queira, pode explorar e conhecer mais sobre este recurso usando nosso Playground.
Inicialmente, vamos realizar a primeira etapa, que é a obtenção do payment_token
. Para tal, você necessitará de um código JavaScript específico de sua conta Gerencianet. Para gerá-lo, siga os passos :
API
(Lateral a esquerda)Identificador de Conta
(veja onde)Gerar
É importante frisar que é obtido via JavaScript, no browser, de forma segura, os dados do cartão e retorna um payment_token
, que é a representação dos dados enviados.
Lembre-se que, após informar seu identificador de conta, serão gerados 2 (dois) códigos JavaScript distintos.
Copie e utilize o código referente ao ambiente desejado, atentando-se às diferenças do ambiente de "Homologação" e "Produção".
Para aplicações web, você deve copiar o script acima, específico da sua conta, e utilizar a nossa biblioteca Javascript, conforme o snippet abaixo. Se você possui um app mobile, confira como proceder acessando nossa página no GitHub para Android e/ou iOS.
Adicionalmente, esclarecemos que uma conta Gerencianet não possui um payment_token
- ele é diferente e criado para cada cobrança gerada por cartão de crédito. Ele representa os dados do cartão do pagador e é obtido pela função getPaymentToken
. Além disso, cabe frisar que o payment_token
pode ser utilizado uma única vez, portanto, não é possível utilizá-lo para cobrar de forma recorrente.
$gn.ready(function(checkout) { var callback = function(error, response) { if(error) { // Trata o erro ocorrido console.error(error); } else { // Trata a resposta console.log(response); } }; checkout.getPaymentToken({ brand: 'visa', // bandeira do cartão number: '4012001038443335', // número do cartão cvv: '123', // código de segurança expiration_month: '05', // mês de vencimento expiration_year: '2021' // ano de vencimento }, callback); });
$gn.ready(function(checkout){ checkout.getInstallments(50000,'visa', function(error, response){ if(error) { // Trata o erro ocorrido console.log(error); } else { // Insere o parcelamento no site } }); });
$gn.ready ( callback )
Parâmetro | Descrição | Tipo |
---|---|---|
|
Função de inicialização que possibilita a chamada das funções getPaymentToken e getInstallments. Parâmetro(s) de callback
object // Objeto que recebe as instâncias das outras funções.
|
Function |
getPaymentToken ( card_data, callback )
Parâmetro | Descrição | Tipo |
---|---|---|
|
Objeto que contém os dados do cartão. As propriedades desse objeto são:
brand // Bandeira do cartãonumber // Número do cartão sem formataçãocvv // Código de segurança do cartãoexpiration_month // Mês de expiração do cartão no formato "MM"expiration_year // Ano de expiração do cartão no formato "YYYY"
|
Object |
|
Função que recebe a resposta da Gerencianet. Parâmetro(s) de callback:
error // Se não foi possível gerar o payment_token, os erros serão retornados neste parâmetro.
response // Recebe os dados que representam o cartão de crédito: payment_token e card_mask
|
Function |
getInstallments ( total, brand, callback )
Parâmetro | Descrição | Tipo |
---|---|---|
|
Valor total da cobrança, incluindo fretes, em centavos.
Por exemplo: R$ 230,90 equivale a 23090.
|
Integer |
|
Bandeira do cartão que deseja-se obter os valores de parcelas. Possíveis valores:
visa // Bandeira Visa
mastercard // Bandeira MasterCard
amex // Bandeira AmericanExpress
elo // Bandeira Elo
hipercard // Bandeira Hipercard
|
String |
|
Função que recebe a resposta da Gerencianet. Parâmetro(s) de callback:
error // Se não foi possível obter dados sobre o pagamento, os erros serão retornados neste parâmetro.
response // Recebe os dados relacionados ao tipo de pagamento consultado.
|
Function |
Agora que a transação já foi criada e o payment_token
já foi obtido através do código Javascript da primeira etapa, vamos prosseguir com o pagamento com cartão de crédito.
Nesta etapa, seu backend envia o restante das informações da transação e o payment_token
obtido na primeira etapa.
Ao pagar uma transação por cartão de crédito, o status é alterado de new
para waiting
. Isso significa que a transação está associada a uma forma de pagamento e que está aguardando a confirmação do pagamento.
Assim que o pagamento for confirmado, a transação terá o status alterado de waiting
para paid
. Mas, se por alguma razão não for possível confirmar o pagamento, o status será alterado para unpaid
.
O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:
require __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK use Gerencianet\Exception\GerencianetException; use Gerencianet\Gerencianet; $clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod) $clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod) $options = [ 'client_id' => $clientId, 'client_secret' => $clientSecret, 'sandbox' => true // altere conforme o ambiente (true = Homologação e false = producao) ]; // $charge_id refere-se ao ID da transação gerada anteriormente $params = [ 'id' => $charge_id ]; $paymentToken = '6426f3abd8688639c6772963669bbb8e0eb3c319'; // payment_token obtido na 1ª etapa (através do Javascript único por conta Gerencianet) $customer = [ 'name' => 'Gorbadoc Oldbuck', // nome do cliente 'cpf' => '94271564656' , // cpf do cliente 'email' => '[email protected]' , // endereço de email do cliente 'phone_number' => '5144916523' // telefone do cliente 'birth' => '1990-05-20' // data de nascimento do cliente ]; $billingAddress = [ 'street' => 'Street 3', 'number' => 10, 'neighborhood' => 'Bauxita', 'zipcode' => '35400000', 'city' => 'Ouro Preto', 'state' => 'MG', ]; $creditCard = [ 'installments' => 1, // número de parcelas em que o pagamento deve ser dividido 'billing_address' => $billingAddress, 'payment_token' => $paymentToken, 'customer' => $customer ]; $body = [ 'payment' => $payment ]; $payment = [ 'credit_card' => $creditCard // forma de pagamento (credit_card = cartão) ]; try { $api = new Gerencianet($options); $charge = $api->payCharge($params, $body); print_r($charge); } catch (GerencianetException $e) { print_r($e->code); print_r($e->error); print_r($e->errorDescription); } catch (Exception $e) { print_r($e->getMessage()); }
"id": "/Pay",
"payment"
"credit_card"
"customer"
"name"
"cpf"
"email"
"phone_number"
"birth"
"address"
"street"
"number"
"neighborhood"
"zipcode"
"city"
"complement"
"state"
"juridical_person"
"corporate_name"
"cnpj"
"installments"
"discount"
"type"
"percentage",
"currency"
"value"
"billing_address"
"street"
"number"
"neighborhood"
"zipcode"
"city"
"complement"
"state"
"payment_token"
"message"
Para verificar mais detalhes, acesse aqui e explore em nosso Playground.
Parâmetros da url
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Identificador da transação ( |
Sim |
Objeto ID |
Objeto ID
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Tag raiz |
Sim |
Objeto Payment |
Objeto Payment
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Objeto contendo as informações necessárias para o pagamento via cartão de crédito, como por exemplo, o número de parcelas e os dados do cliente. |
Sim |
Objeto Credit_Card |
Objeto Credit_Card
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Dados pessoais do pagador. Atributos de customer
name* // nome (String)
cpf* // CPF do cliente (sem pontos, vírgulas ou hífen) (String)
email* // Endereço de email válido do cliente (String)
phone_number // Telefone válido do cliente, sem caracteres especiais (String)
birth* // Data de Nascimento do cliente (data válida em formato YYYY-MM-DD) (String)
juridical_person // Dados de pessoa jurídica (Object) (mais informações)
|
Sim |
Object |
|
Número de parcelas em que o pagamento deve ser dividido. |
Não |
Integer |
|
Define dados de desconto sobre a cobrança. Atributos de discount
type*, // Tipo do desconto (String). Valores permitidos: currency : o desconto será informado em centavos;percentage : o desconto será informado em porcentagem.
value*, // Valor do desconto (Integer). Se o tipo do desconto for currency , o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja percentage , o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:1) currency // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar 599 ;2) percentage // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar 1500 .
|
Não |
Object |
|
Endereço de cobrança (mais informações) Atributos de billing_address
street* // nome da rua (Object)
number* // número (String/Integer)
neighborhood* // Bairro (String)
zipcode* // CEP (sem pontos ou hífen) (String)
city* // cidade (String)
complement // complemento (String/null)
state* // estado (2 caracteres) (Object)
|
Sim |
Object |
|
Token único de pagamento obtido na primeira etapa da geração da transação. |
Sim |
String |
|
Permite incluir no boleto uma "observação", ou em outras palavras, uma mensagem para o cliente. Essa mensagem poderá ser vista nos e-mails relacionados à cobrança, no boleto ou carnê. O operador |
Não |
String |
* valor obrigatório
O cliente associado à transação pode ser uma Pessoa Jurídica. Nesse caso, devem ser informados a Razão Social e o CNPJ da empresa pagadora dentro do atributo juridical_person
.
Veja detalhes neste link sobre como gerar um pagamento cuja forma de pagamento seja "cartão de crédito" para um cliente que seja Pessoa Jurídica (PJ).
Todas as transações possuem status, que representa a "situação" dessa transação. Portanto, é importante conhecer os possíveis status na API para fornecer as devidas tratativas em seu sistema.
Confira neste link todos os detalhes dos possíveis status das transações.
As notificações permitem que você seja informado quando uma transação tiver seu status alterado. Dessa forma, você poderá identificar quando uma cobrança for paga, por exemplo.
Confira neste link todos os detalhes sobre como implementar a sua URL de notificação.
Existem outros endpoints e métodos relacionados a pagamento via cartão de crédito que estão disponíveis na API e podem ser explorados pelo integrador. Confira a relação completa:
Passo a passo para gerar boleto bancário na API Gerencianet
Atualmente disponibilizamos dois procedimentos para a criação de uma transação do tipo Boleto bancário, na primeira delas o titulo é criado em um passo único, assim fora convencionado como One Step. A segunda opção de criação da transação se da em dois passos, sendo assim convencionada como Two Steps. A geração de um boleto não envolve transmissão de dados sensíveis como número de cartão de crédito. Por isso, basta consumir o respectivo endpoint de pagamento para gerar o boleto registrado. Ambos os fluxos estão detalhados a seguir:
Nesta opção é necessário que o body da requisição contenha todos os atributos mínimos obrigatórios para a emissão do titulo.
Abaixo temos os exemplos de implementação utilizando as SDK's disponíveis:
Para que a criação de transações via One Step ocorra normalmente é necessário atualizar sua SDK. Todos os arquivos necessários para tal estão disponíveis através através de nosso repositório e em nossa documentação.
require __DIR__ . '/../../vendor/autoload.php'; // caminho relacionado a SDK use Gerencianet\Exception\GerencianetException; use Gerencianet\Gerencianet; $clientId = 'informe_seu_client_id';// insira seu Client_Id, conforme o ambiente (Des ou Prod) $clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod) $options = [ 'client_id' => $clientId, 'client_secret' => $clientSecret, 'sandbox' => true // altere conforme o ambiente (true = homologação e false = producao) ]; $item_1 = [ 'name' => 'Item 1', // nome do item, produto ou serviço 'amount' => 1, // quantidade 'value' => 1000 // valor (1000 = R$ 10,00) (Obs: É possível a criação de itens com valores negativos. Porém, o valor total da fatura deve ser superior ao valor mínimo para geração de transações.) ]; $items = [ $item_1 ]; $metadata = array('notification_url'=>'sua_url_de_notificacao_.com.br'); //Url de notificações $customer = [ 'name' => 'Gorbadoc Oldbuck', // nome do cliente 'cpf' => '94271564656', // cpf válido do cliente 'phone_number' => '5144916523', // telefone do cliente ]; $discount = [ // configuração de descontos 'type' => 'currency', // tipo de desconto a ser aplicado 'value' => 599 // valor de desconto ]; $configurations = [ // configurações de juros e mora 'fine' => 200, // porcentagem de multa 'interest' => 33 // porcentagem de juros ]; $conditional_discount = [ // configurações de desconto condicional 'type' => 'percentage', // seleção do tipo de desconto 'value' => 500, // porcentagem de desconto 'until_date' => '2019-08-30' // data máxima para aplicação do desconto ]; $bankingBillet = [ 'expire_at' => '2019-09-01', // data de vencimento do titulo 'message' => 'teste\nteste\nteste\nteste', // mensagem a ser exibida no boleto 'customer' => $customer, 'discount' =>$discount, 'conditional_discount' => $conditional_discount ]; $payment = [ 'banking_billet' => $bankingBillet // forma de pagamento (banking_billet = boleto) ]; $body = [ 'items' => $items, 'metadata' =>$metadata, 'payment' => $payment ]; try { $api = new Gerencianet($options); $pay_charge = $api->oneStep([],$body); echo '<pre>'; print_r($pay_charge); echo '<pre>'; } catch (GerencianetException $e) { print_r($e->code); print_r($e->error); print_r($e->errorDescription); } catch (Exception $e) { print_r($e->getMessage()); }
"OneStep": "/Charge/one-step"
"items"
"name"
"value"
"amount"
"marketplace"
"payee_code"
"percentage"
"shippings"
"name"
"value"
"payee_code"
"metadata"
"custom_id"
"notification_url"
"payment"
"banking_billet"
"customer"
"name"
"cpf"
"email"
"phone_number"
"birth"
"address"
"street"
"number"
"neighborhood"
"zipcode"
"city"
"complement"
"state"
"juridical_person"
"corporate_name"
"cnpj"
"expire_at"
"discount"
"type"
"percentage",
"currency"
"value"
"conditional_discount"
"type"
"percentage",
"currency"
"value"
"until_date"
"configurations"
"fine"
"interest"
"message"
Objeto items
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Item que está sendo vendido. Uma mesma transação pode possuir ilimitados itens. Atributos de items
name* // Nome do item, produto ou serviço. Mínimo de 1 caractere e máximo de 255 caracteres (String).
value* // Valor, em centavos. Ex: R$ 10,00 = 1000. Integer.
amount // Quantidade. Integer (padrão: 1)
|
Sim |
Array |
|
Determina o(s) valor(es) de frete(s) de uma transação. Uma mesma transação pode possuir ilimitados valores de frete. Atributos de shippings
name* // Rótulo do frete. Máximo de 255 caracteres. String.
value* // Valor do frete, em centavos (1990 equivale a R$19,90). Integer.
payeeCode , // código da conta Gerencianet que receberá o repasse do valor total do frete - refere-se ao "identificador da conta" Gerencianet (onde localizar meu identificador?) (String)
|
Não |
Array |
|
Define dados específicos da transação. Atributos de metadata
custom_id // Permite associar uma transação Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-la caso você possua uma identificação específica e queira mantê-la. Máximo de 255 caracteres. String/null.
notification_url // Endereço de sua URL válida que receberá as notificações de mudanças de status das transações. Máximo de 255 caracteres. String/null.
|
Não |
Object |
Objeto Payment
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Forma de pagamento através de "boleto bancário" |
Sim |
Objeto Banking_Billet |
Objeto Banking_Billet
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Nome do cliente. |
Sim Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente. |
String |
|
CPF válido do cliente (sem pontos, vírgulas ou hífen). |
Sim Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente. |
String |
|
Email do cliente. |
Não |
String |
|
Telefone do cliente. |
Não |
String |
|
Data de nascimento do cliente. |
Não |
String |
|
Endereço do cliente. Atributos de address
street* // nome da rua (Object)
number* // número (String/Integer)
neighborhood* // Bairro (String)
zipcode* // CEP (sem pontos ou hífen) (String)
city* // cidade (String)
complement // complemento (String/null)
state* // estado (2 caracteres) (Object)
|
Não |
Object |
|
Dados de pessoa jurídica Atributos de juridical_person
corporate_name* // Nome da razão social. Mínimo de 1 caractere e máximo de 255. String.
cnpj* // CNPJ da empresa. Tamanho: 14 caracteres. String.
|
Não |
Object |
|
Data de vencimento do boleto. |
Sim |
String |
|
Define dados de desconto sobre a cobrança. Atributos de discount
type*, // Tipo do desconto (String). Valores permitidos: currency : o desconto será informado em centavos;percentage : o desconto será informado em porcentagem.
value*, // Valor do desconto (Integer). Se o tipo do desconto for currency , o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja percentage , o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:1) currency // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar 599 ;2) percentage // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar 1500 .
|
Não |
Object |
|
Define desconto condicional que é válido até uma data específica. Se o pagamento não for efetuado até aquela data, o desconto é invalidado. Atributos de conditional_discount
type*, // Tipo do desconto (String). Valores permitidos: currency : o desconto será informado em centavos;percentage : o desconto será informado em porcentagem.
value*, // Valor do desconto (Integer). Se o tipo do desconto for currency , o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja percentage , o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:1) currency // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar 599 ;2) percentage // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar 1500 .
until_date*, // Data máxima que o desconto será concedido. (String). Formato: YYYY-MM-DD
|
Não |
Object |
|
Permite incluir no boleto multa e juros caso seja pago após o vencimento. Atributos de configurations
fine, // valor cobrado de multa após o vencimento. Por exemplo: se você quiser 2%, você deve informar 200 . Mínimo de 0 e máximo de 1000. Integer.Caso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem multa, utilize 0 como valor do atributo fine
interest, // valor cobrado de juros por dia após a data de vencimento. Por exemplo: se você quiser 0,033%, você deve informar 33 . Mínimo de 0 e máximo de 330. Integer.Caso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem juros, utilize 0 como valor do atributo interest
|
Não |
Object |
|
Permite incluir no boleto uma "observação", ou em outras palavras, uma mensagem para o cliente. Essa mensagem poderá ser vista nos e-mails relacionados à cobrança, no boleto ou carnê. O operador |
Não |
String |
Crie a transação, informando o item/produto/serviço, valor, quantidade, etc;
Associe à forma de pagamento via boleto, informando o charge_id
da transação e os dados do cliente.
O restante desta página apresenta os procedimentos detalhados, mas você precisa instalar uma de nossas bibliotecas em seu servidor para executar os códigos de exemplo. Certifique-se de que a SDK da Gerencianet foi instalada.
Primeiramente, precisamos gerar a transação (também chamada de "cobrança"). É neste momento que será informado o nome do item/produto/serviço, valor da transação, quantidade, dentre outras informações possíveis.
Após criá-la, será retornado o charge_id
, que é o identificador único da transação e que será utilizado para associar à forma de pagamento.
Assim que essa transação é criada, ela recebe o status new
, que significa que a cobrança foi gerada e está aguardando definição da forma de pagamento. Essa cobrança somente terá seu status alterado quando o integrador definir sua forma de pagamento.
Para gerar uma transação, você deve enviar uma requisição POST
para a rota /v1/charge
.
Caso queira, pode explorar e conhecer mais sobre este recurso usando nosso Playground.
O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:
require __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK use Gerencianet\Exception\GerencianetException; use Gerencianet\Gerencianet; $clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod) $clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod) $options = [ 'client_id' => $clientId, 'client_secret' => $clientSecret, 'sandbox' => true // altere conforme o ambiente (true = Homologação e false = producao) ]; $item_1 = [ 'name' => 'Item 1', // nome do item, produto ou serviço 'amount' => 1, // quantidade 'value' => 1000 // valor (1000 = R$ 10,00) (Obs: É possível a criação de itens com valores negativos. Porém, o valor total da fatura deve ser superior ao valor mínimo para geração de transações.) ]; $item_2 = [ 'name' => 'Item 2', // nome do item, produto ou serviço 'amount' => 2, // quantidade 'value' => 2000 // valor (2000 = R$ 20,00) ]; $items = [ $item_1, $item_2 ]; // Exemplo para receber notificações da alteração do status da transação: // $metadata = ['notification_url'=>'sua_url_de_notificacao_.com.br'] // Outros detalhes em: https://dev.gerencianet.com.br/docs/notificacoes // Como enviar seu $body com o $metadata // $body = [ // 'items' => $items,a // 'metadata' => $metadata // ]; $body = [ 'items' => $items ]; try { $api = new Gerencianet($options); $charge = $api->createCharge([], $body); print_r($charge); } catch (GerencianetException $e) { print_r($e->code); print_r($e->error); print_r($e->errorDescription); } catch (Exception $e) { print_r($e->getMessage()); }
"id": "/Charge"
"items"
"name"
"value"
"amount"
"marketplace"
"payee_code"
"percentage"
"shippings"
"name"
"value"
"payee_code"
"metadata"
"custom_id"
"notification_url"
Para verificar mais detalhes, acesse aqui e explore em nosso Playground.
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Item que está sendo vendido. Uma mesma transação pode possuir ilimitados itens. Atributos de items
name* // Nome do item, produto ou serviço. Mínimo de 1 caractere e máximo de 255 caracteres (String).
value* // Valor, em centavos. Ex: R$ 10,00 = 1000. Integer.
amount // Quantidade. Integer (padrão: 1)
|
Sim |
Array |
|
Determina o(s) valor(es) de frete(s) de uma transação. Uma mesma transação pode possuir ilimitados valores de frete. Atributos de shippings
name* // Rótulo do frete. Máximo de 255 caracteres. String.
value* // Valor do frete, em centavos (1990 equivale a R$19,90). Integer.
payeeCode , // código da conta Gerencianet que receberá o repasse do valor total do frete - refere-se ao "identificador da conta" Gerencianet (onde localizar meu identificador?) (String)
|
Não |
Array |
|
Define dados específicos da transação. Atributos de metadata
custom_id // Permite associar uma transação Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-la caso você possua uma identificação específica e queira mantê-la. Máximo de 255 caracteres. String/null.
notification_url // Endereço de sua URL válida que receberá as notificações de mudanças de status das transações. Máximo de 255 caracteres. String/null.
|
Não |
Object |
* valor obrigatório
Com a transação gerada com sucesso, agora vamos associar com a forma de pagamento desejada - neste caso, será banking_billet
(boleto bancário). Para tal, deverá ser informado o charge_id
obtido ao criar a transação.
Neste momento, ao definir boleto bancário como forma de pagamento da transação, seu status será alterado de new
para waiting
. Isso significa que a forma de pagamento foi selecionada e está aguardando a confirmação do pagamento.
Para associar à forma de pagamento, você deve enviar uma requisição POST
para a rota /v1/charge/:id/pay
, onde :id
é o charge_id
da transação desejada.
Caso queira, pode explorar e conhecer mais sobre este recurso usando nosso Playground.
O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:
require __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK use Gerencianet\Exception\GerencianetException; use Gerencianet\Gerencianet; $clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod) $clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod) $options = [ 'client_id' => $clientId, 'client_secret' => $clientSecret, 'sandbox' => true // altere conforme o ambiente (true = Homologação e false = producao) ]; // $charge_id refere-se ao ID da transação gerada anteriormente $params = [ 'id' => $charge_id ]; $customer = [ 'name' => 'Gorbadoc Oldbuck', // nome do cliente 'cpf' => '94271564656' , // cpf válido do cliente 'phone_number' => '5144916523' // telefone do cliente ]; $bankingBillet = [ 'expire_at' => '2018-12-12', // data de vencimento do boleto (formato: YYYY-MM-DD) 'customer' => $customer ]; $payment = [ 'banking_billet' => $bankingBillet // forma de pagamento (banking_billet = boleto) ]; $body = [ 'payment' => $payment ]; try { $api = new Gerencianet($options); $charge = $api->payCharge($params, $body); print_r($charge); } catch (GerencianetException $e) { print_r($e->code); print_r($e->error); print_r($e->errorDescription); } catch (Exception $e) { print_r($e->getMessage()); }
"id": "/Pay",
"payment"
"banking_billet"
"customer"
"name"
"cpf"
"email"
"phone_number"
"birth"
"address"
"street"
"number"
"neighborhood"
"zipcode"
"city"
"complement"
"state"
"juridical_person"
"corporate_name"
"cnpj"
"expire_at"
"discount"
"type"
"percentage",
"currency"
"value"
"conditional_discount"
"type"
"percentage",
"currency"
"value"
"until_date"
"configurations"
"fine"
"interest"
"message"
Para verificar mais detalhes, acesse aqui e explore em nosso Playground.
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Tag raiz |
Sim |
Objeto Payment |
Objeto Payment
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Forma de pagamento através de "boleto bancário" |
Sim |
Objeto Banking_Billet |
Objeto Banking_Billet
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Nome do cliente. |
Sim Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente. |
String |
|
CPF válido do cliente (sem pontos, vírgulas ou hífen). |
Sim Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente. |
String |
|
Email do cliente. |
Não |
String |
|
Telefone do cliente. |
Não |
String |
|
Data de nascimento do cliente. |
Não |
String |
|
Endereço do cliente. Atributos de address
street* // nome da rua (Object)
number* // número (String/Integer)
neighborhood* // Bairro (String)
zipcode* // CEP (sem pontos ou hífen) (String)
city* // cidade (String)
complement // complemento (String/null)
state* // estado (2 caracteres) (Object)
|
Não |
Object |
|
Dados de pessoa jurídica Atributos de juridical_person
corporate_name* // Nome da razão social. Mínimo de 1 caractere e máximo de 255. String.
cnpj* // CNPJ da empresa. Tamanho: 14 caracteres. String.
|
Não |
Object |
|
Data de vencimento do boleto. |
Sim |
String |
|
Define dados de desconto sobre a cobrança. Atributos de discount
type*, // Tipo do desconto (String). Valores permitidos: currency : o desconto será informado em centavos;percentage : o desconto será informado em porcentagem.
value*, // Valor do desconto (Integer). Se o tipo do desconto for currency , o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja percentage , o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:1) currency // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar 599 ;2) percentage // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar 1500 .
|
Não |
Object |
|
Define desconto condicional que é válido até uma data específica. Se o pagamento não for efetuado até aquela data, o desconto é invalidado. Atributos de conditional_discount
type*, // Tipo do desconto (String). Valores permitidos: currency : o desconto será informado em centavos;percentage : o desconto será informado em porcentagem.
value*, // Valor do desconto (Integer). Se o tipo do desconto for currency , o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja percentage , o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:1) currency // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar 599 ;2) percentage // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar 1500 .
until_date*, // Data máxima que o desconto será concedido. (String). Formato: YYYY-MM-DD
|
Não |
Object |
|
Permite incluir no boleto multa e juros caso seja pago após o vencimento. Atributos de configurations
fine, // valor cobrado de multa após o vencimento. Por exemplo: se você quiser 2%, você deve informar 200 . Mínimo de 0 e máximo de 1000. Integer.Caso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem multa, utilize 0 como valor do atributo fine
interest, // valor cobrado de juros por dia após a data de vencimento. Por exemplo: se você quiser 0,033%, você deve informar 33 . Mínimo de 0 e máximo de 330. Integer.Caso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem juros, utilize 0 como valor do atributo interest
|
Não |
Object |
|
Permite incluir no boleto uma "observação", ou em outras palavras, uma mensagem para o cliente. Essa mensagem poderá ser vista nos e-mails relacionados à cobrança, no boleto ou carnê. O operador |
Não |
String |
O cliente associado à transação pode ser uma Pessoa Jurídica. Nesse caso, devem ser informados a Razão Social e o CNPJ da empresa pagadora dentro do atributo juridical_person
.
Veja detalhes neste link sobre como gerar um pagamento cuja forma de pagamento seja "boleto bancário" para um cliente que seja Pessoa Jurídica (PJ).
Todas as transações possuem status, que representa a "situação" dessa transação. Portanto, é importante conhecer os possíveis status de uma transação na API para fornecer as devidas tratativas em seu sistema.
Confira neste link todos os detalhes dos possíveis status das transações.
As notificações permitem que você seja informado quando uma transação tiver seu status alterado. Dessa forma, você poderá identificar quando um boleto for pago, por exemplo.
Confira neste link todos os detalhes sobre como implementar a sua URL de notificação.
Existem outros endpoints e métodos relacionados a pagamento via boleto bancário que estão disponíveis na API e podem ser explorados pelo integrador. Confira a relação completa:
Passo a passo para gerar Bolix na API Gerencianet, o Bolix permite gerar cobranças com o pix no boleto, possibilitando mais de uma forma de pagamento aos clientes
O Bolix, pix no boleto, permite gerar transações do tipo boleto e carnê para seu cliente com o acréscimo do Pix como forma de pagamento.
O Bolix quando emitido na forma de boleto pode ser gerado via API em um passo, também conhecido como One Step ou em dois passos, o Two Steps.
Também é disponibilizado a emissão do Bolix como carnê, que consiste em um conjunto de transações (parcelas) geradas em lote e com forma de pagamento já definida com vencimento mensal.
Todos os fluxos e informações para emissões do Bolix tanto como boleto bancário quanto carnê estão detalhados a seguir:
Para que você consiga emitir cobranças Bolix, boleto com pix, primeiramente deve-se ativar o Bolix em sua conta Gerencianet, siga estes passos:
1- Acesse sua Conta Digital na plataforma web.
2- Clique no menu Cobranças > Configurações > Boletos Bancários e Carnês.
3- Por fim, habilite a função “Bolix” como nesta imagem.
O restante desta página apresenta os procedimentos detalhados para criação do Bolix com os métodos de pagamento boleto bancário e carnê, mas você precisa instalar uma de nossas bibliotecas em seu servidor para executar os códigos de exemplo. Certifique-se de que a SDK da Gerencianet foi instalada.
Nesta opção é necessário que o body da requisição contenha todos os atributos mínimos obrigatórios para a emissão do titulo.
Abaixo temos os exemplos de implementação utilizando as SDK's disponíveis:
require __DIR__ . '/../../vendor/autoload.php'; // caminho relacionado a SDK use Gerencianet\Exception\GerencianetException; use Gerencianet\Gerencianet; $clientId = 'informe_seu_client_id';// insira seu Client_Id, conforme o ambiente (Des ou Prod) $clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod) $options = [ 'client_id' => $clientId, 'client_secret' => $clientSecret, 'sandbox' => true // altere conforme o ambiente (true = homologação e false = producao) ]; $item_1 = [ 'name' => 'Item 1', // nome do item, produto ou serviço 'amount' => 1, // quantidade 'value' => 1000 // valor (1000 = R$ 10,00) (Obs: É possível a criação de itens com valores negativos. Porém, o valor total da fatura deve ser superior ao valor mínimo para geração de transações.) ]; $items = [ $item_1 ]; $metadata = array('notification_url'=>'sua_url_de_notificacao_.com.br'); //Url de notificações onde vamos notificá-lo, independente se for pago pelo código de barras do boleto quanto pelo QR Code. $customer = [ 'name' => 'Gorbadoc Oldbuck', // nome do cliente 'cpf' => '94271564656', // cpf válido do cliente 'phone_number' => '5144916523', // telefone do cliente ]; $discount = [ // configuração de descontos 'type' => 'currency', // tipo de desconto a ser aplicado 'value' => 599 // valor de desconto ]; $configurations = [ // configurações de juros e mora 'fine' => 200, // porcentagem de multa 'interest' => 33 // porcentagem de juros ]; $conditional_discount = [ // configurações de desconto condicional 'type' => 'percentage', // seleção do tipo de desconto 'value' => 500, // porcentagem de desconto 'until_date' => '2019-08-30' // data máxima para aplicação do desconto ]; $bankingBillet = [ 'expire_at' => '2022-09-01', // data de vencimento do titulo 'message' => 'Pague pelo código de barras ou pelo QR Code', // mensagem a ser exibida no boleto 'customer' => $customer, 'discount' =>$discount, 'conditional_discount' => $conditional_discount ]; $payment = [ 'banking_billet' => $bankingBillet // forma de pagamento (banking_billet = Bolix) ]; $body = [ 'items' => $items, 'metadata' =>$metadata, 'payment' => $payment ]; try { $api = new Gerencianet($options); $pay_charge = $api->oneStep([],$body); echo '<pre>'; print_r($pay_charge); echo '<pre>'; } catch (GerencianetException $e) { print_r($e->code); print_r($e->error); print_r($e->errorDescription); } catch (Exception $e) { print_r($e->getMessage()); }
{ "items": [ { "name": "Meu Produto", "value": 5990, "amount": 1 } ], "payment": { "banking_billet": { "customer": { "name": "Gorbadoc Oldbuck", "cpf": "94271564656", "email": "[email protected]", "phone_number": "5144916523", "address": { "street": "Avenida Juscelino Kubitschek", "number": "909", "neighborhood": "Bauxita", "zipcode": "35400000", "city": "Ouro Preto", "complement": "", "state": "MG" } }, "expire_at": "2022-12-15", "configurations": { "fine": 200, "interest": 33 }, "message": "Pague pelo código de barras ou pelo QR Code" } } }
"OneStep": "/Charge/one-step"
"items"
"name"
"value"
"amount"
"marketplace"
"payee_code"
"percentage"
"shippings"
"name"
"value"
"payee_code"
"metadata"
"custom_id"
"notification_url"
"payment"
"banking_billet"
"customer"
"name"
"cpf"
"email"
"phone_number"
"birth"
"address"
"street"
"number"
"neighborhood"
"zipcode"
"city"
"complement"
"state"
"juridical_person"
"corporate_name"
"cnpj"
"expire_at"
"discount"
"type"
"percentage",
"currency"
"value"
"conditional_discount"
"type"
"percentage",
"currency"
"value"
"until_date"
"configurations"
"fine"
"interest"
"message"
Objeto items
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Item que está sendo vendido. Uma mesma transação pode possuir ilimitados itens. Atributos de items
name* // Nome do item, produto ou serviço. Mínimo de 1 caractere e máximo de 255 caracteres (String).
value* // Valor, em centavos. Ex: R$ 10,00 = 1000. Integer.
amount // Quantidade. Integer (padrão: 1)
|
Sim |
Array |
|
Determina o(s) valor(es) de frete(s) de uma transação. Uma mesma transação pode possuir ilimitados valores de frete. Atributos de shippings
name* // Rótulo do frete. Máximo de 255 caracteres. String.
value* // Valor do frete, em centavos (1990 equivale a R$19,90). Integer.
payeeCode , // código da conta Gerencianet que receberá o repasse do valor total do frete - refere-se ao "identificador da conta" Gerencianet (onde localizar meu identificador?) (String)
|
Não |
Array |
|
Define dados específicos da transação. Atributos de metadata
custom_id // Permite associar uma transação Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-la caso você possua uma identificação específica e queira mantê-la. Máximo de 255 caracteres. String/null.
notification_url // Endereço de sua URL válida que receberá as notificações de mudanças de status das transações. Máximo de 255 caracteres. String/null.
|
Não |
Object |
Objeto Payment
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Forma de pagamento através de "boleto bancário" |
Sim |
Objeto Banking_Billet |
Objeto Banking_Billet
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Nome do cliente. |
Sim Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente. |
String |
|
CPF válido do cliente (sem pontos, vírgulas ou hífen). |
Sim Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente. |
String |
|
Email do cliente. |
Não |
String |
|
Telefone do cliente. |
Não |
String |
|
Data de nascimento do cliente. |
Não |
String |
|
Endereço do cliente. Atributos de address
street* // nome da rua (Object)
number* // número (String/Integer)
neighborhood* // Bairro (String)
zipcode* // CEP (sem pontos ou hífen) (String)
city* // cidade (String)
complement // complemento (String/null)
state* // estado (2 caracteres) (Object)
|
Não |
Object |
|
Dados de pessoa jurídica Atributos de juridical_person
corporate_name* // Nome da razão social. Mínimo de 1 caractere e máximo de 255. String.
cnpj* // CNPJ da empresa. Tamanho: 14 caracteres. String.
|
Não |
Object |
|
Data de vencimento do boleto. |
Sim |
String |
|
Define dados de desconto sobre a cobrança. Atributos de discount
type*, // Tipo do desconto (String). Valores permitidos: currency : o desconto será informado em centavos;percentage : o desconto será informado em porcentagem.
value*, // Valor do desconto (Integer). Se o tipo do desconto for currency , o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja percentage , o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:1) currency // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar 599 ;2) percentage // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar 1500 .
|
Não |
Object |
|
Define desconto condicional que é válido até uma data específica. Se o pagamento não for efetuado até aquela data, o desconto é invalidado. Atributos de conditional_discount
type*, // Tipo do desconto (String). Valores permitidos: currency : o desconto será informado em centavos;percentage : o desconto será informado em porcentagem.
value*, // Valor do desconto (Integer). Se o tipo do desconto for currency , o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja percentage , o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:1) currency // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar 599 ;2) percentage // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar 1500 .
until_date*, // Data máxima que o desconto será concedido. (String). Formato: YYYY-MM-DD
|
Não |
Object |
|
Permite incluir no boleto multa e juros caso seja pago após o vencimento. Atributos de configurations
fine, // valor cobrado de multa após o vencimento. Por exemplo: se você quiser 2%, você deve informar 200 . Mínimo de 0 e máximo de 1000. Integer.Caso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem multa, utilize 0 como valor do atributo fine
interest, // valor cobrado de juros por dia após a data de vencimento. Por exemplo: se você quiser 0,033%, você deve informar 33 . Mínimo de 0 e máximo de 330. Integer.Caso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem juros, utilize 0 como valor do atributo interest
|
Não |
Object |
Crie a transação, informando o item/produto/serviço, valor, quantidade, etc;
Associe à forma de pagamento via boleto, informando o charge_id
da transação e os dados do cliente.
O restante desta página apresenta os procedimentos detalhados, mas você precisa instalar uma de nossas bibliotecas em seu servidor para executar os códigos de exemplo. Certifique-se de que a SDK da Gerencianet foi instalada.
Primeiramente, precisamos gerar a transação (também chamada de "cobrança"). É neste momento que será informado o nome do item/produto/serviço, valor da transação, quantidade, dentre outras informações possíveis.
Após criá-la, será retornado o charge_id
, que é o identificador único da transação e que será utilizado para associar à forma de pagamento.
Assim que essa transação é criada, ela recebe o status new
, que significa que a cobrança foi gerada e está aguardando definição da forma de pagamento. Essa cobrança somente terá seu status alterado quando o integrador definir sua forma de pagamento.
Para gerar uma transação, você deve enviar uma requisição POST
para a rota /v1/charge
.
O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:
require __DIR__ . '/../../vendor/autoload.php'; use Gerencianet\Exception\GerencianetException; use Gerencianet\Gerencianet; $file = file_get_contents(__DIR__ . '/../config.json'); $options = json_decode($file, true); unset($options['pix_cert']); $item_1 = [ 'name' => 'Item 1', // nome do item, produto ou serviço 'amount' => 1, // quantidade 'value' => 1000 // valor (1000 = R$ 10,00) (Obs: É possível a criação de itens com valores negativos. Porém, o valor total da fatura deve ser superior ao valor mínimo para geração de transações.) ]; $item_2 = [ 'name' => 'Item 2', // nome do item, produto ou serviço 'amount' => 2, // quantidade 'value' => 2000 // valor (2000 = R$ 20,00) ]; $items = [ $item_1, $item_2 ]; // Exemplo para receber notificações da alteração do status da transação: // $metadata = ['notification_url'=>'sua_url_de_notificacao_.com.br'] // Outros detalhes em: https://dev.gerencianet.com.br/docs/notificacoes // Como enviar seu $body com o $metadata // $body = [ // 'items' => $items,a // 'metadata' => $metadata // ]; $body = [ 'items' => $items ]; try { $api = new Gerencianet($options); $charge = $api->createCharge([], $body); print_r($charge); } catch (GerencianetException $e) { print_r($e->code); print_r($e->error); print_r($e->errorDescription); } catch (Exception $e) { print_r($e->getMessage()); }
{ "items": [ { "name": "Meu Produto", "value": 8900, "amount": 1 } ] }
"id": "/Charge"
"items"
"name"
"value"
"amount"
"marketplace"
"payee_code"
"percentage"
"shippings"
"name"
"value"
"payee_code"
"metadata"
"custom_id"
"notification_url"
Para verificar mais detalhes, acesse aqui e explore em nosso Playground.
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Item que está sendo vendido. Uma mesma transação pode possuir ilimitados itens. Atributos de items
name* // Nome do item, produto ou serviço. Mínimo de 1 caractere e máximo de 255 caracteres (String).
value* // Valor, em centavos. Ex: R$ 10,00 = 1000. Integer.
amount // Quantidade. Integer (padrão: 1)
|
Sim |
Array |
|
Determina o(s) valor(es) de frete(s) de uma transação. Uma mesma transação pode possuir ilimitados valores de frete. Atributos de shippings
name* // Rótulo do frete. Máximo de 255 caracteres. String.
value* // Valor do frete, em centavos (1990 equivale a R$19,90). Integer.
payeeCode , // código da conta Gerencianet que receberá o repasse do valor total do frete - refere-se ao "identificador da conta" Gerencianet (onde localizar meu identificador?) (String)
|
Não |
Array |
|
Define dados específicos da transação. Atributos de metadata
custom_id // Permite associar uma transação Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-la caso você possua uma identificação específica e queira mantê-la. Máximo de 255 caracteres. String/null.
notification_url // Endereço de sua URL válida que receberá as notificações de mudanças de status das transações. Máximo de 255 caracteres. String/null.
|
Não |
Object |
* valor obrigatório
Com a transação gerada com sucesso, agora vamos associar com a forma de pagamento banking_billet
(boleto bancário) e assim gerar o Bolix. Para tal, deverá ser informado o charge_id
obtido ao criar a transação.
Neste momento, ao definir boleto bancário como forma de pagamento da transação, seu status será alterado de new
para waiting
. Isso significa que a forma de pagamento foi selecionada e está aguardando a confirmação do pagamento.
Para associar à forma de pagamento, você deve enviar uma requisição POST
para a rota /v1/charge/:id/pay
, onde :id
é o charge_id
da transação desejada.
O boleto bancário que será gerado já vem com a forma de pagamento Pix inclusa.
O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:
require __DIR__ . '/../../vendor/autoload.php'; use Gerencianet\Exception\GerencianetException; use Gerencianet\Gerencianet; $file = file_get_contents(__DIR__ . '/../config.json'); $options = json_decode($file, true); unset($options['pix_cert']); // $charge_id refere-se ao ID da transação gerada anteriormente $params = [ 'id' => $charge_id ]; $customer = [ 'name' => 'Gorbadoc Oldbuck', // nome do cliente 'cpf' => '94271564656' , // cpf válido do cliente 'phone_number' => '5144916523' // telefone do cliente ]; $bankingBillet = [ 'expire_at' => '2022-12-12', // data de vencimento do boleto (formato: YYYY-MM-DD) 'customer' => $customer ]; $payment = [ 'banking_billet' => $bankingBillet // forma de pagamento (banking_billet = boleto) ]; $body = [ 'payment' => $payment ]; try { $api = new Gerencianet($options); $charge = $api->payCharge($params, $body); print_r($charge); } catch (GerencianetException $e) { print_r($e->code); print_r($e->error); print_r($e->errorDescription); } catch (Exception $e) { print_r($e->getMessage()); }
{ "payment": { "banking_billet": { "customer": { "name": "Gorbadoc Oldbuck", "cpf": "94271564656", "email": "[email protected]", "phone_number": "5144916523", "address": { "street": "Avenida Juscelino Kubitschek", "number": "909", "neighborhood": "Bauxita", "zipcode": "35400000", "city": "Ouro Preto", "complement": "", "state": "MG" } }, "expire_at": "2022-12-30", "configurations": { "fine": 200, "interest": 33 }, "message": "Pague pelo código de barras ou pelo QR Code" } } }
"id": "/Pay",
"payment"
"banking_billet"
"customer"
"name"
"cpf"
"email"
"phone_number"
"birth"
"address"
"street"
"number"
"neighborhood"
"zipcode"
"city"
"complement"
"state"
"juridical_person"
"corporate_name"
"cnpj"
"expire_at"
"discount"
"type"
"percentage",
"currency"
"value"
"conditional_discount"
"type"
"percentage",
"currency"
"value"
"until_date"
"configurations"
"fine"
"interest"
"message"
Para verificar mais detalhes, acesse aqui e explore em nosso Playground.
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Tag raiz |
Sim |
Objeto Payment |
Objeto Payment
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Forma de pagamento através de "boleto bancário" |
Sim |
Objeto Banking_Billet |
Objeto Banking_Billet
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Nome do cliente. |
Sim Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente. |
String |
|
CPF válido do cliente (sem pontos, vírgulas ou hífen). |
Sim Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente. |
String |
|
Email do cliente. |
Não |
String |
|
Telefone do cliente. |
Não |
String |
|
Data de nascimento do cliente. |
Não |
String |
|
Endereço do cliente. Atributos de address
street* // nome da rua (Object)
number* // número (String/Integer)
neighborhood* // Bairro (String)
zipcode* // CEP (sem pontos ou hífen) (String)
city* // cidade (String)
complement // complemento (String/null)
state* // estado (2 caracteres) (Object)
|
Não |
Object |
|
Dados de pessoa jurídica Atributos de juridical_person
corporate_name* // Nome da razão social. Mínimo de 1 caractere e máximo de 255. String.
cnpj* // CNPJ da empresa. Tamanho: 14 caracteres. String.
|
Não |
Object |
|
Data de vencimento do boleto. |
Sim |
String |
|
Define dados de desconto sobre a cobrança. Atributos de discount
type*, // Tipo do desconto (String). Valores permitidos: currency : o desconto será informado em centavos;percentage : o desconto será informado em porcentagem.
value*, // Valor do desconto (Integer). Se o tipo do desconto for currency , o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja percentage , o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:1) currency // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar 599 ;2) percentage // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar 1500 .
|
Não |
Object |
|
Define desconto condicional que é válido até uma data específica. Se o pagamento não for efetuado até aquela data, o desconto é invalidado. Atributos de conditional_discount
type*, // Tipo do desconto (String). Valores permitidos: currency : o desconto será informado em centavos;percentage : o desconto será informado em porcentagem.
value*, // Valor do desconto (Integer). Se o tipo do desconto for currency , o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja percentage , o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:1) currency // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar 599 ;2) percentage // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar 1500 .
until_date*, // Data máxima que o desconto será concedido. (String). Formato: YYYY-MM-DD
|
Não |
Object |
|
Permite incluir no boleto multa e juros caso seja pago após o vencimento. Atributos de configurations
fine, // valor cobrado de multa após o vencimento. Por exemplo: se você quiser 2%, você deve informar 200 . Mínimo de 0 e máximo de 1000. Integer.Caso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem multa, utilize 0 como valor do atributo fine
interest, // valor cobrado de juros por dia após a data de vencimento. Por exemplo: se você quiser 0,033%, você deve informar 33 . Mínimo de 0 e máximo de 330. Integer.Caso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem juros, utilize 0 como valor do atributo interest
|
Não |
Object |
|
Permite incluir no boleto uma "observação", ou em outras palavras, uma mensagem para o cliente. Essa mensagem poderá ser vista nos e-mails relacionados à cobrança, no boleto ou carnê. O operador |
Não |
String |
O carnê é um método de pagamento que gera um conjunto de transações (parcelas) com as mesmas informações de pagamento e do cliente em todas elas, as parcelas de um carnê vencem mensalmente, de acordo com a data definida pelo integrador. Para gerar um carnê, você precisa informar os seguintes dados:
A seguir, um código de exemplo de criação de um Bolix com o método de pagamento carnê utilizando as SDK's disponíveis. Note que já estamos definindo os itens, os dados do cliente, data de vencimento da primeira parcela do carnê e a quantidade de repetições (em meses):
require __DIR__ . '/../../vendor/autoload.php'; use Gerencianet\Exception\GerencianetException; use Gerencianet\Gerencianet; $file = file_get_contents(__DIR__ . '/../config.json'); $options = json_decode($file, true); unset($options['pix_cert']); $item_1 = [ 'name' => 'Item 1', // nome do item, produto ou serviço 'amount' => 1, // quantidade 'value' => 1000 // valor (1000 = R$ 10,00) (Obs: É possível a criação de itens com valores negativos. Porém, o valor total da fatura deve ser superior ao valor mínimo para geração de transações.) ]; $item_2 = [ 'name' => 'Item 2', // nome do item, produto ou serviço 'amount' => 2, // quantidade 'value' => 2000 // valor (2000 = R$ 20,00) ]; $items = [ $item_1, $item_2 ]; $customer = [ 'name' => 'Gorbadoc Oldbuck', // nome do cliente 'cpf' => '94271564656' , // cpf do cliente 'phone_number' => '5144916523' // telefone do cliente ]; // Exemplo para receber notificações da alteração do status do carne. // $metadata = ['notification_url'=>'sua_url_de_notificacao_.com.br'] // Outros detalhes em: https://dev.gerencianet.com.br/docs/notificacoes // Como enviar seu $body com o $metadata // $body = [ // 'items' => $items, // 'customer' => $customer, // 'expire_at' => '2022-12-02', // 'repeats' => 5, // 'split_items' => false, // 'metadata' => $metadata // ]; $body = [ 'items' => $items, 'customer' => $customer, 'expire_at' => '2022-12-02', // data de vencimento da primeira parcela do carnê 'repeats' => 5, // número de parcelas do carnê 'split_items' => false // Define se os itens do carnê serão divididos entre as parcelas (true), ou se o valor de cada parcela será o valor total dos itens (false) ]; try { $api = new Gerencianet($options); $carnet = $api->createCarnet([], $body); print_r($carnet); } catch (GerencianetException $e) { print_r($e->code); print_r($e->error); print_r($e->errorDescription); } catch (Exception $e) { print_r($e->getMessage()); }
{ "items": [ { "name": "Meu Produto", "value": 7500, "amount": 1 } ], "customer": { "name": "Gorbadoc Oldbuck", "cpf": "94271564656", "phone_number": "5144916523" }, "expire_at": "2022-12-20", "configurations": { "fine": 200, "interest": 33 }, "message": "Este carnê aceita o pagamento por QR Code Pix e por código de barras", "repeats": 3, "split_items": false }
"id": "/Carnet"
"items"
"name"
"value"
"amount"
"customer"
"name"
"cpf"
"email"
"phone_number"
"birth"
"address"
"street"
"number"
"neighborhood"
"zipcode"
"city"
"complement"
"state"
"juridical_person"
"corporate_name"
"cnpj"
"expire_at"
"repeats"
"split_items"
"metadata"
"custom_id"
"notification_url"
"configurations"
"fine"
"interest"
"message"
"discount"
"type"
"percentage",
"currency"
"value"
"conditional_discount"
"type"
"percentage",
"currency"
"value"
"until_date"
Para verificar mais detalhes, acesse aqui e explore em nosso Playground.
Atributo | Descrição | Obrigatório | Tipo |
---|---|---|---|
|
Item que está sendo vendido. Uma mesma transação pode possuir ilimitados itens. Atributos de items
name* // Nome do item, produto ou serviço. Mínimo de 1 caractere e máximo de 255 caracteres (String).
value* // Valor, em centavos. Ex: R$ 10,00 = 1000. Integer.
amount // Quantidade. Integer (padrão: 1)
|
Sim |
Object |
|
Dados pessoais do pagador. Atributos de customer
name* // nome (String)
cpf* // CPF do cliente (sem pontos, vírgulas ou hífen) (String)
email // Endereço de email válido do cliente (String)
phone_number // Telefone válido do cliente, sem caracteres especiais (String)
birth // Data de Nascimento (data válida em formato YYYY-MM-DD) (String)
juridical_person // Dados de pessoa jurídica (Object) (mais informações)
|
Sim |
Object |
|
Data de vencimento do carnê. O intervalo das parcelas de um carnê é sempre de 1 (um) mês entre elas. |
Sim |
String |
|
Número de parcelas do carnê. |
Sim |
Integer |
|
Dividir itens entre as parcelas. Define se os itens do carnê serão divididos entre as parcelas (true), ou se o valor de cada parcela será o valor total dos itens (false). |
Não |
Boolean |
|
Define dados específicos da transação.
custom_id // Permite associar uma transação Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-la caso você possua uma identificação específica e queira mantê-la. Máximo de 255 caracteres. String/null.
notification_url // Endereço de sua URL válida que receberá as notificações de mudanças de status das transações. Máximo de 255 caracteres. String/null.
|
Não |
Object |
|
Permite incluir no carnê multa e juros caso seja pago após o vencimento. Atributos de configurations
fine, // valor cobrado de multa após o vencimento. Por exemplo: se você quiser 2%, você deve informar 200 . Mínimo de 0 e máximo de 1000. Integer.Caso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem multa, utilize 0 como valor do atributo fine
interest, // valor cobrado de juros por dia após a data de vencimento. Por exemplo: se você quiser 0,33%, você deve informar 33 . Mínimo de 0 e máximo de 330. Integer.Caso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem juros, utilize 0 como valor do atributo interest
|
Não |
Object |
|
Permite incluir no boleto uma "observação", ou em outras palavras, uma mensagem para o cliente. Essa mensagem poderá ser vista nos e-mails relacionados à cobrança, no boleto ou carnê. |
Não |
String |
|
Define dados de desconto sobre a cobrança. Atributos de discount
type*, // Tipo do desconto (String). Valores permitidos: currency : o desconto será informado em centavos;percentage : o desconto será informado em porcentagem.
value*, // Valor do desconto (Integer). Se o tipo do desconto for currency , o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja percentage , o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:1) currency // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar 599 ;2) percentage // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar 1500 .
|
Não |
Object |
|
Define desconto condicional que é válido até uma data específica. Se o pagamento não for efetuado até aquela data, o desconto é invalidado. Atributos de conditional_discount
type*, // Tipo do desconto (String). Valores permitidos: currency : o desconto será informado em centavos;percentage : o desconto será informado em porcentagem.
value*, // Valor do desconto (Integer). Se o tipo do desconto for currency , o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja percentage , o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:1) currency // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar 599 ;2) percentage // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar 1500 .
until_date*, // Data máxima que o desconto será concedido. (String). Formato: YYYY-MM-DD
|
Não |
Object |
* valor obrigatório
O cliente associado à transação pode ser uma Pessoa Jurídica. Nesse caso, devem ser informados a Razão Social e o CNPJ da empresa pagadora dentro do atributo juridical_person
.
Veja detalhes neste link sobre como gerar um pagamento para um cliente que seja Pessoa Jurídica (PJ).
Todas as transações possuem status, que representa a "situação" dessa transação. Portanto, é importante conhecer os possíveis status de uma transação na API para fornecer as devidas tratativas em seu sistema.
Confira neste link todos os detalhes dos possíveis status das transações.
As notificações permitem que você seja informado quando uma transação tiver seu status alterado. Dessa forma, você poderá identificar quando um boleto for pago, por exemplo.
Confira neste link todos os detalhes sobre como implementar a sua URL de notificação.
Existem outros endpoints e métodos relacionados a pagamento via boleto bancário e carnê que estão disponíveis na API e podem ser explorados pelo integrador. Confira a relação completa:
Alterar URL de notificação (notification_url) e/ou custom_id de transação
Alterar URL de notificação (notification_url) e/ou custom_id de carnês
Existem outras soluções da API que permitem a utilização do Bolix com o método de pagamento por boleto bancário, quer conhecê-las?
Saiba como instalar e configurar nossa SDK em PHP para API Pix e API Boletos (Bolix)
A seguir, confira os procedimentos para instalação da SDK da Gerencianet em PHP:
composer require gerencianet/gerencianet-sdk-php
Link do git https://github.com/gerencianet/gn-api-sdk-php
git clone https://github.com/gerencianet/gn-api-sdk-php.git cd gn-api-sdk-php/ composer install
É importante frisar que as extensões cURL
, json
, ext-simplexml
& openssl
devem estar ativadas.
Atualmente, disponibilizamos quatro versões da SDK. A versão 1.x e 2.x é compatível com versões do PHP superiores à versão 5.4 e inferiores à 7.0, possuindo também alguns componentes desatualizados, como o Guzzle. Caso você tenha uma versão do PHP superior à 5.5 e inferior a 7.0, sugerimos utilizar a versão 3.x da nossa SDK. Para versões do PHP maior ou igual 7.2, sugerimos que instale a versão 4.x da SDK.
Vá direto ao ponto - utilize o índice abaixo e veja diretamente o que você precisa:
Os seguintes pré-requisitos devem ser considerados, de acordo com a branch utilizada:
Versão da branch | Status | Packagist | Repositório | Versão do PHP |
---|---|---|---|---|
Mantido |
|
|
||
Mantido |
|
|
||
Mantido |
|
|
||
Mantido |
|
|
Para a utilização da biblioteca em PHP, recomendamos a instalação através do Composer (gerenciador de dependências).
Caso prefira prosseguir sem o Composer, basta seguir os procedimentos descritos no título 4. Instalação biblioteca PHP da Gerencianet sem o Composer.
Instalaremos o Composer no Windows para baixar as nossas bibliotecas. Se preferir, pode seguir neste link o tutorial do próprio site oficial do Composer.
a) Primeiramente, vamos baixar o instalador do Composer para Windows neste link e, assim que o download for finalizado, execute-o;
b) Você precisará informar o caminho de instalação do seu PHP. Caso você esteja utilizando um servidor Wamp, por exemplo, e na instalação surgir uma mensagem relacionada ao arquivo "openssl", você precisará informar seu arquivo *.exe
do PHP contido no diretório raiz do Wamp (geralmente em \wamp\bin\php\php.7.2\
). Cabe frisar que a pasta php.7.2
refere-se a versão do PHP que está sendo utilizado na confecção dessas instruções, portanto, esse diretório poderá estar com outro nome, conforme a versão do seu PHP;
c) Durante a instalação, após indicar o diretório do seu PHP, clique em next
. A instalação poderá retornar uma mensagem de alerta relacionado à configuração do "openssl". Trata-se de uma mensagem comum que significa que o "openssl" está desabilitado, contudo, vamos resolver de forma rápida e fácil.
Caso não seja retornada nenhuma mensagem sobre o "openssl", apenas prossiga para o subtítulo Baixando as dependências, localizado mais abaixo.
Para habilitar seu "openssl", será necessário alterar o arquivo php.ini
.
a) Abra o diretório de instalação do seu php e localize o arquivo php.ini
;
b) Abra o arquivo php.ini
em um editor de texto (p. ex: notepad++, sublime, etc) e pressione CTRL + F
e pesquise pela palavra “openssl” (sem as aspas);
c) O sinal de ponto e vírgula ( ; ) desabilita o arquivo php_openssl.dll
. Apague este sinal e ele habilitará o arquivo, ou seja:
Está assim: ;extension=php_openssl.dll
Deve ficar assim: extension=php_openssl.dll
Agora, salve o documento (pressione CTRL + S
) e feche o arquivo.
d) A extensão estará habilitada e você poderá continuar com a instalação. Para que a instalação seja atualizada em relação ao procedimento, é importante que você retorne uma tela e depois avance com a instalação normalmente.
a) Crie uma pasta chamada composer
no seu diretório Wamp, dentro da pasta www
, de forma que tenha essa estrutura: \wamp\www\composer
b) Agora, vamos realizar a instalação das dependências. Abra o prompt de comando do Windows (cmd) e navegue até o diretório raiz, em \wamp\www\composer
c) Vamos executar o comando de instalação das dependências (SDK PHP da Gerencianet) dentro desse diretório. Para tal, execute o comando abaixo:
composer require gerencianet/gerencianet-sdk-php
d) Após a execução do comando, todas as dependências serão instaladas em seu diretório, inclusive a pasta vendor
com o arquivo autoload.php
.
Pronto, agora é só começar a utilizar as soluções de integração da Gerencianet. Veja a tabela com os tipos de integrações.
É possível instalar o Composer em cada projeto (instalação local) ou ter acesso a ele em qualquer parte do sistema (instalação global). Se preferir, pode seguir neste link o tutorial do próprio site oficial do Composer. Aqui, vamos efetuar a instalação global. Para tal, execute no Terminal o seguinte comando:
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
Um dos principais arquivos para se trabalhar com o Composer é o composer.json
. É nele que as instruções sobre os pacotes que serão usados no projeto ficam contidas. Este é um arquivo de extensão .json
comum que deve ficar na raiz de seu projeto.
A diretiva require
no arquivo composer.json
informa ao Composer quais os pacotes necessários para o projeto - neste caso, o repositório central é o Packagist.
Agora, vamos informar ao Composer que a Gerencianet fará parte do gerenciamento de dependências inserindo o conteúdo abaixo no final do arquivo composer.json
(que deve ficar na raiz do projeto):
{"require": { "gerencianet/gerencianet-sdk-php": "^4.*" } }
É hora de instalar os pacotes. Vá até o diretório em que está seu projeto no Terminal e execute:
$ composer install
E pronto! O download das dependências irá acontecer automaticamente, estas serão armazenadas em suas respectivas pastas e o Composer continuará com o restante do trabalho ao gerar o arquivo composer.lock
.
Cabe frisar que, caso você necessite, por exemplo, excluir um pacote, basta deletar sua referência do arquivo composer.json
e atualizar o Composer através do seguinte comando:
$ composer update
Dessa forma, o Composer será atualizado e, como não há mais a presença do pacote na diretiva require
, ele será imediatamente "desinstalado".
composer.json
, a SDK da Gerencianet que será instalada;$ composer install
;
O uso do Composer (gerenciador de dependências) é recomendável, mas não obrigatório. Caso seja de seu interesse prosseguir sem utilizá-lo, você pode baixar diretamente uma de nossas branches, descompactar e subir a pasta (inclusive o arquivo "autoload.php") para o diretório de seu projeto.
Atualmente, oferecemos quatro branches, intituladas master
, 3.x
, 2.x
e 1.x
, sendo:
master
: utiliza versão recente do guzzle (^7.0.0) e é compatível com versões recentes do PHP acima da 7.2. Esta é a versão padrão quando se baixa pelo Composer, sendo indicada para todos os projetos. Acesse o Packagist.
3.x
: utiliza até a versão guzzle (6.0.0) e é compatível com versões do PHP (5.5, 5.6, 7.x). Acesse o Packagist.
2.x
: utiliza até a versão guzzle (6.0.0) e é compatível com versões do PHP (5.5, 5.6, 7.0 e 7.1). Acesse o Packagist.
1.x
: versão anterior da SDK, compatível com PHP 5.4 e 5.5 e utiliza guzzle 5.3.0. Baixe neste link.
A branch master
é a default, porém, você pode instalar a branch 1.x
. No decorrer desta página você encontrará orientações para as duas versões.
Importante reforçar que o conteúdo presente neste .zip é apenas um requisito para que você possa começar a utilizar a SDK em PHP da Gerencianet. Esta pasta por si só não é um "exemplo pronto" de uso da API Gerencianet, mas a SDK em PHP da Gerencianet que permite a utilização da API.
Os erros a seguir não são da API Gerencianet, mas relacionados à componentes de seu servidor. Confira abaixo os erros mais comuns durante a instalação de nossa API e veja as soluções:
Como oferecer pagamento online em meu site? - Maykon Silveira
Você tem várias opções para oferecer pagamentos online em seu site. Para escolher a mais adequada, você precisa analisar em qual cenário você se encaixa.
O Botão de Pagamento é uma ferramenta simples que pode ser utilizada por qualquer pessoa. Para incluí-lo em seu site é necessário ter um conhecimento básico de HTML. Com ele, você disponibiliza um botão ou link em seu site para que seu cliente clique quando quiser comprar algum produto ou serviço. Ao clicar no botão, ele será direcionado para a página de pagamentos, onde poderá preencher os dados e escolher a forma de pagamento.
É possível criar botões para pagamentos únicos ou pagamentos recorrentes.
Para integrações mais sofisticadas recomendamos a utilização da nossa API de pagamentos. Tendo em vista a variedade de integrações com a Gerencianet, reunimos nesta tabela informações para facilitar sua escolha. Por isso, escolha a melhor integração, de acordo com suas necessidades.
Como visualizo meu “token único” de integração no Gerencianet? - Maykon Silveira
Este “token único” é utilizado em integrações com a versão anterior da API (também conhecido como “Fortunus”), que era aquela integração em que o token solicitado era único, ou seja, sem utilizar Client_Id e Client_Secret.
Caso seja essa sua necessidade, de uma integração de “token único” na nova versão do sistema, basta seguir os passos abaixo:
Depois que a aplicação for criada, o token de integração estará disponível conforme esta imagem.
Reenvio de callback em aplicações da API em modo de compatibilidade no Gerencianet - Maykon Silveira
Estas orientações são aplicáveis a quem utiliza aplicação da API em “modo de compatibilidade“. Em outras palavras, é voltado para utilizadores de uma versão anterior da API (aquela em que o token solicitado era único, ou seja, que não faz uso de chaves Client_Id e Client_Secret).
Quando a sua URL está configurada corretamente, mas por algum motivo o seu sistema parou de funcionar ou apresentou problema, sua URL é desativada e as notificações não são enviadas. Neste caso, você recebe um e-mail, como o assunto “Falha na URL de callback”, informando sobre desativação da URL.
Quando isso acontece, você deve testar novamente a sua URL no menu “API -> Minhas Aplicações -> Sua Aplicação -> Callbacks” e, em caso de resposta com sucesso (200), clique no botão "Desativado"
. Quando o status do botão for "Ativado"
, reenvie as notificações de confirmação de pagamento. Para isso, siga o procedimento abaixo:
"Logs"
"não"
não foram enviadas por um dos erros explicados nos tópicos abaixo
"Reenviar callbacks"
"Confirmar"
para realizar o reenvio
Pronto! O callback entra em uma fila de envio e dentro de alguns minutos é reenviado.
Também é possível reenviar callbacks de cobrança cancelada.
É importante sempre monitorar o status da sua URL de callback para evitar qualquer problema.
A URL de callback que recebe as nossas notificações nada mais é do que um caminho ou endereço pelo qual entregamos as referidas informações ao seu sistema. Uma similaridade pode ser associada a um endereço de entrega por correspondência, onde o cliente informa para qual destino a correspondência deve ser entregue, por exemplo.
A notificação é uma instrução enviada via POST, que contém um Token (código da notificação) que servirá de parâmetro para que seu sistema consulte a alteração de status de uma determinada transação.
Quando o sistema Gerencianet envia um POST para este arquivo, disponível no endereço da URL, e ele responde dizendo “Recebido”, por meio de um código HTTP de valor “200”, nosso sistema consegue entender que a comunicação foi realizada com sucesso.
Na impossibilidade de recebermos essa confirmação, nosso sistema tenta por mais nove vezes, em intervalos distintos, entregar este POST. Após a última tentativa de entrega, caso não seja possível confirmá-la, sua URL é desativada automaticamente pelo sistema Gerencianet e você recebe um e-mail informando sobre a desativação. Este procedimento é realizado para que o nosso sistema não fique de forma intermitente enviando requisições sem saber se serão entregues ou não para os sistemas dos clientes.
Para os casos em que a URL de notificação do sistema do cliente já tenha funcionado, mas parou, duas situações se apresentam mais comuns:
Se após avaliar estes erros mais comuns não conseguir resolver o problema, envie um ticket para a nossa equipe. É importante colocar todas as informações relacionadas às suas dúvidas para facilitar e agilizar o atendimento. O ticket pode ser enviado a qualquer momento e você receberá a resposta por e-mail em até 1 dia útil.
cURL error 60 ou cURL error 77, como resolver no gerencianet? - Maykon Silveira
Os erros cURL error 60 e cURL error 77 são comuns quando da utilização da linguagem PHP e não são da API Gerencianet, mas relacionados à componentes de seu servidor. Fique tranquilo, é bem simples de resolver, confira:
Este erro está relacionado ao cURL configurado em seu servidor (ou computador) estar exigindo um certificado (https/ssl) local. Geralmente ocorre em servidores Windows ou plataforma Wamp Server, por exemplo. Este erro também pode ser apresentado como CURLE_SSL_CACERT (60) – Peer certificate cannot be authenticated with known CA certificates.
Para resolver, vamos configurar para que seu servidor tenha um certificado para testes:
cacert.pem
em https://curl.haxx.se/ca/cacert.pem e salve-o em qualquer lugar do seu sistema, de preferência na pasta do servidor (C:\Wamp
, caso esteja utilizando-o);
.
php.ini
). Para o WampServer, normalmente este arquivo está localizado em C:\wamp\bin\php\phpX.Y.Z
, onde X.Y.Z
é a versão do seu PHP) e faça a alteração a seguir:.
Procure pela linha abaixo:
;curl.cainfo =
.
Mude para:
curl.cainfo = "C:\caminho\onde\voce\salvou\seu\certificado\cacert.pem"
.
.
Lembrando que estas configurações foram necessárias porque seu servidor está exigindo um certificado local (erro: URL error: 60 - SSL certificate problem: unable to get local issuer certificate
) e sua máquina/servidor não possui.
Esse erro está associado ao caminho do certificado que está definido de forma incorreta no arquivo php.ini
.
Atualmente, deve estar assim:
curl.cainfo = "C:\xampp\php\cacert.pem"
.
Deverá alterar e de forma que fique assim:
curl.cainfo = "C:\xampp\php\cacert.pem.txt"
.
Adicionalmente, caso o método acima não solucione, outra possível solução está relacionada a referência do certificado. Ele pode até já estar instalado local em sua máquina, mas os certificados podem estar localizados em /etc/ssl/certs/ca-certificates.crt
ao invés de /etc/pki/tls/certs/ca-bundle.crt
. Neste caso, bastaria definir a variável de ambiente CURL_CA_BUNDLE
para o caminho correto.
No caso do boleto, quais atributos são obrigatórios e opcionais no gerencianet? - Maykon Silveira
São 4 (quatro) informações obrigatórias ao emitir um boleto:
Essas informações devem ser válidas e únicas por cliente, ou seja, você não pode gerar emissões usando os mesmos dados para vários clientes diferentes.
Para visualizar os atributos opcionais, veja nesta página de nossa documentação.
Esta página tem como objetivo apresentar o Histórico de Notificações
. Este recurso está disponível na API de sua conta Gerencianet e permite visualizar os POSTs que a Gerencianet dispara para a URL de notificação definida pelo integrador. Este POST contém apenas uma informação: um token de notificação.
Ao término da leitura deste conteúdo, espera-se que você consiga interpretar os cenários pertinentes a notificações (callbacks), como em situações em que uma cobrança em seu sistema não foi baixada, o callback foi disparado para uma URL que você definiu previamente mas que não é mais válida, etc.
Outras informações sobre o processo de definição da URL de notificação e a mecânica envolvendo a consulta de detalhes de uma notificação podem ser observadas na página Recebendo as notificações.
Vá direto ao ponto – utilize o índice abaixo para encontrar a resposta de maneira mais eficiente:
Muito bom, bem explicado tirou varias duvidas!