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 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: