{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","settings":"","examples":{"codes":[]},"results":{"codes":[]},"params":[]},"next":{"description":"","pages":[]},"title":"Gerar boleto bancário (Bolix)","type":"basic","slug":"gerar-boleto-bancario","excerpt":"Passo a passo para gerar boleto bancário na API Gerencianet","body":"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:\n\n1. [Criando a transação em *One Step* (Um passo)](#section-1-cria-o-de-boleto-em-one-step-um-passo-).\n\n2. [Criando a transação em *Two Steps* (Dois passos)](#section-2-cria-o-de-boleto-em-two-steps-dois-passos-).\n\n# 1. Criação de Boleto (Bolix) em *One Step* (Um passo)\n\nNesta opção é necessário que o *body* da requisição contenha todos os atributos mínimos obrigatórios para a emissão do titulo.\nAbaixo temos os exemplos de implementação utilizando as SDK's disponíveis:\n[block:callout]\n{\n \"type\": \"warning\",\n \"title\": \"Importante\",\n \"body\": \"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](https://github.com/gerencianet) e em nossa [documentação](https://dev.gerencianet.com.br/docs/instalacao-da-api).\"\n}\n[/block]\n\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<?php\\n require __DIR__ . '/../../vendor/autoload.php'; // caminho relacionado a SDK\\n\\n use Gerencianet\\\\Exception\\\\GerencianetException;\\n use Gerencianet\\\\Gerencianet;\\n\\n $clientId = 'informe_seu_client_id';// insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n $clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n\\n $options = [\\n 'client_id' => $clientId,\\n 'client_secret' => $clientSecret,\\n 'sandbox' => true // altere conforme o ambiente (true = homologação e false = producao)\\n ];\\n \\n $item_1 = [\\n 'name' => 'Item 1', // nome do item, produto ou serviço\\n 'amount' => 1, // quantidade\\n '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.)\\n ];\\n $items = [\\n $item_1\\n ];\\n $metadata = array('notification_url'=>'sua_url_de_notificacao_.com.br'); //Url de notificações\\n $customer = [\\n 'name' => 'Gorbadoc Oldbuck', // nome do cliente\\n 'cpf' => '94271564656', // cpf válido do cliente\\n 'phone_number' => '5144916523', // telefone do cliente\\n ];\\n $discount = [ // configuração de descontos\\n 'type' => 'currency', // tipo de desconto a ser aplicado\\n 'value' => 599 // valor de desconto \\n ];\\n $configurations = [ // configurações de juros e mora\\n 'fine' => 200, // porcentagem de multa\\n 'interest' => 33 // porcentagem de juros\\n ];\\n $conditional_discount = [ // configurações de desconto condicional\\n 'type' => 'percentage', // seleção do tipo de desconto \\n 'value' => 500, // porcentagem de desconto\\n 'until_date' => '2019-08-30' // data máxima para aplicação do desconto\\n ];\\n $bankingBillet = [\\n 'expire_at' => '2019-09-01', // data de vencimento do titulo\\n 'message' => 'teste\\\\nteste\\\\nteste\\\\nteste', // mensagem a ser exibida no boleto\\n 'customer' => $customer,\\n 'discount' =>$discount,\\n 'conditional_discount' => $conditional_discount\\n ];\\n $payment = [\\n 'banking_billet' => $bankingBillet // forma de pagamento (banking_billet = boleto)\\n ];\\n $body = [\\n 'items' => $items,\\n 'metadata' =>$metadata,\\n 'payment' => $payment\\n ];\\n try {\\n $api = new Gerencianet($options);\\n $pay_charge = $api->oneStep([],$body);\\n echo '<pre>';\\n print_r($pay_charge);\\n echo '<pre>';\\n \\n } catch (GerencianetException $e) {\\n print_r($e->code);\\n print_r($e->error);\\n print_r($e->errorDescription);\\n } catch (Exception $e) {\\n print_r($e->getMessage());\\n }\",\n \"language\": \"php\"\n },\n {\n \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n class OneStep\\n {\\n public static void Execute()\\n {\\n dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret,\\n Credentials.Default.Sandbox);\\n\\n var body = new\\n {\\n items = new[]\\n {\\n new\\n {\\n name = \\\"Product 1\\\",\\n value = 1000,\\n amount = 2\\n }\\n },\\n shippings = new[]\\n {\\n new\\n {\\n name = \\\"Default Shipping Cost\\\",\\n value = 100\\n }\\n },\\n payment = new\\n {\\n banking_billet = new\\n {\\n expire_at = DateTime.Now.AddDays(1).ToString(\\\"yyyy-MM-dd\\\"),\\n customer = new\\n {\\n name = \\\"Gorbadoc Oldbuck\\\",\\n email = \\\"oldbuckaa:::at:::gerencianet.com.br\\\",\\n cpf = \\\"94271564656\\\",\\n birth = \\\"1977-01-15\\\",\\n phone_number = \\\"5144916523\\\"\\n }\\n }\\n }\\n };\\n\\n try\\n {\\n var response = endpoints.OneStep(null, body);\\n Console.WriteLine(response);\\n }\\n catch (GnException e)\\n {\\n Console.WriteLine(e.ErrorType);\\n Console.WriteLine(e.Message);\\n }\\n }\\n }\\n}\",\n \"language\": \"csharp\",\n \"name\": \".Net\"\n },\n {\n \"code\": \"oneStep Node.JS\\n'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar credentials = require('./credentials');\\n\\nvar clientId = 'your_client_id';\\nvar clientSecret = 'your_client_secret';\\n \\nvar options = {\\n client_id: clientId,\\n client_secret: clientSecret,\\n sandbox: true\\n}\\n\\nvar body = {\\n\\n payment: {\\n banking_billet: {\\n expire_at: '2020-06-12', \\n customer: {\\n name: 'Gorbadoc Oldbuck',\\n email: '[email protected]',\\n cpf: '04267484171', \\n birth: '2020-06-10', \\n phone_number: '5144916523' ,\\n juridical_person: {\\n corporate_name: 'Empresa Gorbadoc',\\n cnpj:'92247037000137'\\n }\\n }\\n }\\n },\\n\\n items: [{\\n name: 'Product 1',\\n value: 1000,\\n amount: 2\\n }],\\n shippings: [{\\n name: 'Default Shipping Cost',\\n value: 100\\n }]\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n .oneStep([], body)\\n .then(console.log)\\n .catch(console.log)\\n .done();\",\n \"language\": \"javascript\",\n \"name\": \"NodeJs\"\n },\n {\n \"code\": \"oneStep JAVA\\npackage br.com.gerencianet.charge.json;\\nimport java.util.HashMap;\\nimport org.json.JSONArray;\\nimport org.json.JSONObject;\\nimport br.com.gerencianet.Credentials;\\nimport br.com.gerencianet.gnsdk.Gerencianet;\\nimport br.com.gerencianet.gnsdk.exceptions.GerencianetException;\\npublic class oneStep {\\n public static void main(String[] args) {\\n /* ********* Set credentials parameters ******** */\\n Credentials credentials = new Credentials();\\n JSONObject options = new JSONObject();\\n options.put(\\\"client_id\\\", credentials.getClientId());\\n options.put(\\\"client_secret\\\", credentials.getClientSecret());\\n options.put(\\\"partner_token\\\", credentials.getPartnerToken());\\n options.put(\\\"sandbox\\\", credentials.isSandbox());\\n /* ************************************************* */ \\n \\n // items\\n JSONArray items = new JSONArray();\\n JSONObject item1 = new JSONObject();\\n item1.put(\\\"name\\\", \\\"Item 1\\\");\\n item1.put(\\\"amount\\\", 1);\\n item1.put(\\\"value\\\", 600);\\n JSONObject item2 = new JSONObject(\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Item 2\\\\\\\", \\\\\\\"amount\\\\\\\":1, \\\\\\\"value\\\\\\\":1000}\\\");\\n items.put(item1);\\n items.put(item2);\\n \\n //JSONObject body = new JSONObject();\\n //body.put(\\\"items\\\", items);\\n \\n //customer\\n JSONObject customer = new JSONObject();\\n customer.put(\\\"name\\\", \\\"Gorbadoc Oldbuck\\\");\\n customer.put(\\\"cpf\\\", \\\"94271564656\\\");\\n customer.put(\\\"phone_number\\\", \\\"5144916523\\\");\\n \\n //URL de notificações\\n JSONObject metadata = new JSONObject();\\n metadata.put(\\\"notification_url\\\", \\\"https://requestb.in/16rpx6y1\\\");\\n metadata.put(\\\"custom_id\\\", \\\"sou_fera_0007\\\");\\n \\n //desconto \\n JSONObject discount = new JSONObject();\\n discount.put(\\\"type\\\",\\\"currency\\\");\\n discount.put(\\\"value\\\",599);\\n \\n //juros e mora\\n JSONObject configurations = new JSONObject();\\n configurations.put(\\\"fine\\\", 200);\\n configurations.put(\\\"interest\\\", 33);\\n \\n //disconto condicional\\n JSONObject conditional_discount = new JSONObject();\\n conditional_discount.put(\\\"type\\\",\\\"percentage\\\");\\n conditional_discount.put(\\\"value\\\", 500);\\n conditional_discount.put(\\\"until_date\\\", \\\"2019-08-30\\\");\\n \\n \\n JSONObject bankingBillet = new JSONObject();\\n bankingBillet.put(\\\"expire_at\\\", \\\"2019-09-15\\\");\\n bankingBillet.put(\\\"customer\\\", customer);\\n bankingBillet.put(\\\"discount\\\", discount);\\n bankingBillet.put(\\\"configurations\\\", configurations);\\n bankingBillet.put(\\\"conditional_discount\\\", conditional_discount);\\n \\n JSONObject payment = new JSONObject();\\n payment.put(\\\"banking_billet\\\", bankingBillet);\\n JSONObject body = new JSONObject();\\n body.put(\\\"payment\\\", payment);\\n body.put(\\\"items\\\", items);\\n body.put(\\\"metadata\\\", metadata);\\n \\n try {\\n Gerencianet gn = new Gerencianet(options);\\n JSONObject response = gn.call(\\\"oneStep\\\", new HashMap<String,String>(), body);\\n System.out.println(response);\\n }catch (GerencianetException e){\\n System.out.println(e.getCode());\\n System.out.println(e.getError());\\n System.out.println(e.getErrorDescription());\\n }\\n catch (Exception e) {\\n System.out.println(e.getMessage());\\n }\\n }\\n}\",\n \"language\": \"java\"\n },\n {\n \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/dmalberto/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"../configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tcustomer := map[string]interface{}{\\n\\t\\t\\\"name\\\": \\\"Gorbadoc Oldbuck\\\",\\n\\t\\t\\\"cpf\\\": \\\"04267484171\\\",\\n\\t\\t\\\"phone_number\\\": \\\"51944916523\\\",\\n\\t\\t\\\"email\\\": \\\"[email protected]\\\",\\n\\t}\\n\\n\\tbody := map[string]interface{} {\\n\\t\\t\\\"payment\\\": map[string]interface{} {\\n\\t\\t\\t\\\"banking_billet\\\": map[string]interface{} {\\n\\t\\t\\t\\t\\\"expire_at\\\": \\\"2020-12-12\\\",\\n\\t\\t\\t\\t\\\"customer\\\": customer,\\n\\t\\t\\t},\\n\\t\\t},\\n\\t\\t\\\"items\\\": []map[string]interface{}{\\n\\t\\t\\t{\\n\\t\\t\\t\\t\\\"name\\\": \\\"Product 1\\\",\\n\\t\\t\\t\\t\\\"value\\\": 1000,\\n\\t\\t\\t\\t\\\"amount\\\": 2,\\n\\t\\t\\t},\\n\\t\\t},\\n\\t\\t\\\"shippings\\\": []map[string]interface{} {\\n\\t\\t\\t{\\n\\t\\t\\t\\t\\\"name\\\": \\\"Default Shipping Cost\\\",\\n\\t\\t\\t\\t\\\"value\\\": 100,\\n\\t\\t\\t},\\n\\t\\t},\\n\\t}\\n\\n\\tres, err := gn.CreateChargeOneStep(body) // no lugar do 1 coloque o charge_id certo\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n \"language\": \"go\"\n },\n {\n \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nbody = {\\n 'items': [{\\n 'name': \\\"Product 1\\\",\\n 'value': 1000,\\n 'amount': 2\\n }],\\n 'shippings': [{\\n 'name': \\\"Default Shipping Cost\\\",\\n 'value': 100\\n }],\\n 'payment': {\\n 'banking_billet': {\\n 'expire_at': '2020-12-12',\\n 'customer': {\\n 'name': \\\"Gorbadoc Oldbuck\\\",\\n 'email': \\\"[email protected]\\\",\\n 'cpf': \\\"14014603059\\\",\\n 'birth': \\\"1977-01-15\\\",\\n 'phone_number': \\\"62986070247\\\"\\n \\n }\\n } \\n }\\n}\\n\\nresponse = gn.create_charge_onestep(params=None, body=body)\\nprint(response)\",\n \"language\": \"python\"\n },\n {\n \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n client_id: CREDENTIALS::CLIENT_ID,\\n client_secret: CREDENTIALS::CLIENT_SECRET,\\n sandbox: true\\n}\\n\\nbody = {\\n items: [{\\n name: \\\"Product 1\\\",\\n value: 1000,\\n amount: 2\\n }],\\n shippings: [{\\n name: \\\"Default Shipping Cost\\\",\\n value: 100\\n }],\\n payment: {\\n banking_billet: {\\n expire_at: tomorrow.strftime,\\n customer: {\\n name: \\\"Gorbadoc Oldbuck\\\",\\n email: \\\"[email protected]\\\",\\n cpf: \\\"04267484171\\\",\\n birth: \\\"1977-01-15\\\",\\n phone_number: \\\"5144916523\\\"\\n }\\n }\\n }\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.create_charge_onestep(body: body)\\n\",\n \"language\": \"ruby\"\n },\n {\n \"code\": \"interface\\n\\nfunction PayOneStepWithBillet: String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nvar\\n Body: String;\\nbegin\\n Body :=\\n '{'+\\n '\\\"metadata\\\": {'+\\n '\\\"custom_id\\\": \\\"id_0007\\\",'+\\n '\\\"notification_url\\\": \\\"https://url-do-cliente.com.br/\\\"'+\\n '},'+\\n '\\\"payment\\\": {'+\\n '\\\"banking_billet\\\": {'+\\n '\\\"configurations\\\": {'+\\n '\\\"fine\\\": 200,'+\\n '\\\"interest\\\": 33'+\\n '},'+\\n '\\\"conditional_discount\\\": {'+\\n '\\\"until_date\\\": \\\"2019-08-30\\\",'+\\n '\\\"type\\\": \\\"percentage\\\",'+\\n '\\\"value\\\": 500'+\\n '},'+\\n '\\\"discount\\\": {'+\\n '\\\"type\\\": \\\"currency\\\",'+\\n '\\\"value\\\": 599'+\\n '},'+\\n '\\\"expire_at\\\": \\\"2019-09-15\\\",'+\\n '\\\"customer\\\": {'+\\n '\\\"name\\\": \\\"Gorbadoc Oldbuck\\\",'+\\n '\\\"cpf\\\": \\\"94271564656\\\",'+\\n '\\\"phone_number\\\": \\\"5144916523\\\"'+\\n '}'+\\n '}'+\\n '},'+\\n '\\\"items\\\": ['+\\n '{'+\\n '\\\"amount\\\": 1,'+\\n '\\\"name\\\": \\\"Item 1\\\",'+\\n '\\\"value\\\": 600'+\\n '},'+\\n '{'+\\n '\\\"amount\\\": 1,'+\\n '\\\"name\\\": \\\"Item 2\\\",'+\\n '\\\"value\\\": 1000'+\\n '}'+\\n ']'+\\n '}';\\n Result := ExecuteGerenciaNetRequest( 'payOneStep','','',Body );\\nend;\",\n \"language\": \"javascript\",\n \"name\": \"Delphi\"\n }\n ]\n}\n[/block]\n<br>\n\n### Dados de entrada e saída do Bolix em One Step:\n\n\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"{\\n \\\"items\\\": [\\n {\\n \\\"name\\\": \\\"Meu Produto\\\",\\n \\\"value\\\": 5990,\\n \\\"amount\\\": 1\\n }\\n ],\\n \\\"payment\\\": {\\n \\\"banking_billet\\\": {\\n \\\"customer\\\": {\\n \\\"name\\\": \\\"Gorbadoc Oldbuck\\\",\\n \\\"cpf\\\": \\\"94271564656\\\",\\n \\\"email\\\": \\\"[email protected]\\\",\\n \\\"phone_number\\\": \\\"5144916523\\\",\\n \\\"address\\\": {\\n \\\"street\\\": \\\"Avenida Juscelino Kubitschek\\\",\\n \\\"number\\\": \\\"909\\\",\\n \\\"neighborhood\\\": \\\"Bauxita\\\",\\n \\\"zipcode\\\": \\\"35400000\\\",\\n \\\"city\\\": \\\"Ouro Preto\\\",\\n \\\"complement\\\": \\\"\\\",\\n \\\"state\\\": \\\"MG\\\"\\n }\\n },\\n \\\"expire_at\\\": \\\"2022-12-15\\\",\\n \\\"configurations\\\": {\\n \\\"fine\\\": 200,\\n \\\"interest\\\": 33\\n },\\n \\\"message\\\": \\\"Pague pelo código de barras ou pelo QR Code\\\"\\n }\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de entrada\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200, // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n \\\"data\\\": {\\n \\\"barcode\\\": \\\"00000.00000 00000.000000 00000.000000 0 00000000000000\\\", // linha digitável do boleto\\n \\\"pix\\\":{\\n \\\"qrcode\\\":\\\"00020101021226990014BR.GOV.BCB.PIX2577qrcodes-pix.gerencianet.com.br/bolix/v2/cobv/0000000000000000000000000000GERENCIANET SA6010OURO PRETO62070503***63047CB1\\\", // BRCode ou copia e cola\\n \\\"qrcode_image\\\":\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmc vMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NSA0NSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJNMCAwaDQ1djQ1SD...\\\" // QR Code imagem\\n },\\n \\\"link\\\": \\\"link_https_para_acesso_o_bolix\\\", // link do Bolix gerado\\n \\\"pdf\\\": {\\n \\\"charge\\\": \\\"link_https_do_pdf_da_cobranca\\\" // link do PDF do Bolix\\n },\\n \\\"expire_at\\\": \\\"2022-12-15\\\", // data de vencimento do boleto no seguinte formato: 2022-12-15 (ou seja, equivale a 15/12/2022)\\n \\\"charge_id\\\": numero_charge_id, // número da ID referente à transação gerada\\n \\\"status\\\": \\\"waiting\\\", // forma de pagamento selecionada, aguardando a confirmação do pagamento (\\\"waiting\\\" equivale a \\\"aguardando\\\")\\n \\\"total\\\": 5990, // valor, em centavos. Por exemplo: 5990 (equivale a R$ 59,90)\\n \\\"payment\\\": \\\"banking_billet\\\" // forma de pagamento associada à esta transação (\\\"banking_billet\\\" equivale a \\\"boleto bancário\\\")\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de saída Bolix\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200, // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n \\\"data\\\": {\\n \\\"barcode\\\": \\\"00000.00000 00000.000000 00000.000000 0 00000000000000\\\", // linha digitável do boleto\\n \\\"link\\\": \\\"link_https_para_acesso_o_bolix\\\", // link do Boleto\\n \\\"pdf\\\": {\\n \\\"charge\\\": \\\"link_https_do_pdf_da_cobranca\\\" // link do PDF \\n },\\n \\\"expire_at\\\": \\\"2022-12-15\\\", // data de vencimento do boleto no seguinte formato: 2022-12-15 (ou seja, equivale a 15/12/2022)\\n \\\"charge_id\\\": numero_charge_id, // número da ID referente à transação gerada\\n \\\"status\\\": \\\"waiting\\\", // forma de pagamento selecionada, aguardando a confirmação do pagamento (\\\"waiting\\\" equivale a \\\"aguardando\\\")\\n \\\"total\\\": 5990, // valor, em centavos. Por exemplo: 5990 (equivale a R$ 59,90)\\n \\\"payment\\\": \\\"banking_billet\\\" // forma de pagamento associada à esta transação (\\\"banking_billet\\\" equivale a \\\"boleto bancário\\\")\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de saída boleto tradicional\"\n }\n ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"OneStep\": \"/Charge/one-step\"\n \"items\"\n \"name\"\n \"value\"\n \"amount\"\n \"marketplace\"\n \"payee_code\"\n \"percentage\"\n \"shippings\"\n \"name\"\n \"value\"\n \"payee_code\"\n \"metadata\"\n \"custom_id\"\n \"notification_url\"\n \"payment\"\n \"banking_billet\"\n \"customer\"\n \"name\"\n \"cpf\"\n \"email\"\n \"phone_number\"\n \"birth\"\n \"address\"\n \"street\"\n \"number\"\n \"neighborhood\"\n \"zipcode\"\n \"city\"\n \"complement\"\n \"state\"\n \"juridical_person\"\n \"corporate_name\"\n \"cnpj\"\n \"expire_at\"\n \"discount\"\n \"type\"\n \"percentage\",\n \"currency\"\n \"value\"\n \"conditional_discount\"\n \"type\"\n \"percentage\",\n \"currency\"\n \"value\"\n \"until_date\"\n \"configurations\"\n \"fine\"\n \"interest\"\n \"message\"</pre>\n\n## b) Atributos que podem ser utilizados para criar um titulo:\n<br>\n\n*Objeto **items***\n[block:parameters]\n{\n \"data\": {\n \"h-0\": \"Atributo\",\n \"h-1\": \"Descrição\",\n \"h-2\": \"Obrigatório\",\n \"0-0\": \"<code>items</code>\",\n \"0-1\": \"Item que está sendo vendido. Uma mesma transação pode possuir ilimitados itens.\\n\\n<span class=\\\"tab1\\\"><em>Atributos de items</em></span>\\n\\n<div class=\\\"tab2\\\"><code>name<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Nome do item, produto ou serviço. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255 caracteres (String).</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>value<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Valor, em centavos. Ex: R$ 10,00 = 1000. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Integer.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>amount</code> // Quantidade. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Integer (padrão: 1)</span></strong></div>\",\n \"0-2\": \"Sim\",\n \"h-3\": \"Tipo\",\n \"0-3\": \"Array\",\n \"1-0\": \"<code>shippings</code>\",\n \"1-1\": \"Determina o(s) valor(es) de frete(s) de uma transação. Uma mesma transação pode possuir ilimitados valores de frete.\\n\\n<span class=\\\"tab1\\\"><em>Atributos de shippings</em></span>\\n\\n<div class=\\\"tab2\\\"><code>name<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Rótulo do frete. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. String.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>value<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Valor do frete, em centavos (1990 equivale a R$19,90). <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Integer.</span></strong></div>\",\n \"1-2\": \"Não\",\n \"1-3\": \"Array\",\n \"2-0\": \"<code>metadata</code>\",\n \"2-1\": \"Define dados específicos da transação.\\n\\n<span class=\\\"tab1\\\"><em>Atributos de metadata</em></span>\\n\\n<div class=\\\"tab2\\\"><code>custom_id</code> // 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. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. String/null.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>notification_url</code> // Endereço de sua URL válida que receberá as notificações de mudanças de status das transações. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. String/null.</span></strong></div>\",\n \"2-2\": \"Não\",\n \"2-3\": \"Object\"\n },\n \"cols\": 4,\n \"rows\": 3\n}\n[/block]\n<br>\n\n*Objeto **Payment***\n[block:parameters]\n{\n \"data\": {\n \"h-0\": \"Atributo\",\n \"h-1\": \"Descrição\",\n \"h-2\": \"Obrigatório\",\n \"h-3\": \"Tipo\",\n \"0-0\": \"<code>banking_billet</code>\",\n \"0-1\": \"Forma de pagamento através de \\\"boleto bancário\\\"\",\n \"0-2\": \"Sim\",\n \"0-3\": \"Objeto **Banking_Billet**\"\n },\n \"cols\": 4,\n \"rows\": 1\n}\n[/block]\n<br>\n\n*Objeto **Banking_Billet***\n[block:parameters]\n{\n \"data\": {\n \"h-0\": \"Atributo\",\n \"h-1\": \"Descrição\",\n \"h-2\": \"Obrigatório\",\n \"h-3\": \"Tipo\",\n \"0-0\": \"<code>name</code>\",\n \"0-1\": \"Nome do cliente.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255.</span></strong>\",\n \"0-2\": \"Sim\\n\\n*Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente.*\",\n \"0-3\": \"String\",\n \"1-0\": \"<code>cpf</code>\",\n \"1-1\": \"CPF válido do cliente (sem pontos, vírgulas ou hífen).\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Tamanho: 11 caracteres.</span></strong>\",\n \"1-2\": \"Sim\\n\\n*Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente.*\",\n \"1-3\": \"String\",\n \"2-0\": \"<code>email</code>\",\n \"2-1\": \"Email do cliente.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. Ex.: [email protected]</span></strong>\",\n \"2-2\": \"Não\",\n \"2-3\": \"String\",\n \"3-0\": \"<code>phone_number</code>\",\n \"3-1\": \"Telefone do cliente.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: sem pontos ou vírgulas, com DDD de 2 caracteres (9º dígito é opcional). Ex.: 11988887777</span></strong>\",\n \"3-2\": \"Não\",\n \"3-3\": \"String\",\n \"4-0\": \"<code>birth</code>\",\n \"4-1\": \"Data de nascimento do cliente.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: YYYY-MM-DD</span></strong>\",\n \"4-2\": \"Não\",\n \"4-3\": \"String\",\n \"5-0\": \"<code>address</code>\",\n \"5-1\": \"Endereço do cliente.\\n\\n<span class=\\\"tab1\\\">*Atributos de address*</span>\\n\\n<div class=\\\"tab2\\\"><code>street<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // nome da rua <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(Object)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>number<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // número <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String/Integer)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>neighborhood<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Bairro <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>zipcode<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // CEP (sem pontos ou hífen) <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>city<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // cidade <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>complement</code> // complemento <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String/null)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>state<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // estado (2 caracteres) <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(Object)</strong></span></div>\",\n \"5-2\": \"Não\",\n \"5-3\": \"Object\",\n \"6-0\": \"<code>juridical_person</code>\",\n \"6-1\": \"Dados de pessoa jurídica\\n\\n<span class=\\\"tab1\\\">*Atributos de juridical_person*</span>\\n\\n<div class=\\\"tab2\\\">\\n<code>corporate_name<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Nome da razão social. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255. String.</strong></span></div>\\n\\n<div class=\\\"tab2\\\">\\n<code>cnpj<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // CNPJ da empresa. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Tamanho: 14 caracteres. String.</strong></span>\\n</div>\",\n \"6-2\": \"Não\",\n \"6-3\": \"Object\",\n \"7-0\": \"<code>expire_at</code>\",\n \"7-1\": \"Data de vencimento do boleto.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: YYYY-MM-DD</span></strong>\",\n \"7-2\": \"Sim\",\n \"7-3\": \"String\",\n \"8-0\": \"<code>discount</code>\",\n \"8-1\": \"Define dados de desconto sobre a cobrança.\\n\\n<span class=\\\"tab1\\\">*Atributos de discount*</span>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">type<strong class=\\\"atributo-obrigatorio\\\">*</strong></span>, // Tipo do desconto (String). Valores permitidos:\\n<code>currency</code>: o desconto será informado em centavos;\\n<code>percentage</code>: o desconto será informado em porcentagem.</strong>\\n</div>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">value<strong class=\\\"atributo-obrigatorio\\\">*</strong></span>, // Valor do desconto (Integer). Se o tipo do desconto for <code>currency</code>, 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 <code>percentage</code>, o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:\\n1) <code>currency</code> // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar <code>599</code>;\\n2) <code>percentage</code> // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar <code>1500</code>.\\n</strong>\\n</div>\",\n \"8-2\": \"Não\",\n \"8-3\": \"Object\",\n \"9-0\": \"<code>conditional_discount</code>\",\n \"9-1\": \"Define desconto condicional que é válido até uma data específica. Se o pagamento não for efetuado até aquela data, o desconto é invalidado.\\n\\n<span class=\\\"tab1\\\">*Atributos de conditional_discount*</span>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">type<strong class=\\\"atributo-obrigatorio\\\">*</strong></span>, // Tipo do desconto (String). Valores permitidos:\\n<code>currency</code>: o desconto será informado em centavos;\\n<code>percentage</code>: o desconto será informado em porcentagem.</strong>\\n</div>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">value<strong class=\\\"atributo-obrigatorio\\\">*</strong></span>, // Valor do desconto (Integer). Se o tipo do desconto for <code>currency</code>, 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 <code>percentage</code>, o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:\\n1) <code>currency</code> // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar <code>599</code>;\\n2) <code>percentage</code> // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar <code>1500</code>.</strong></div>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">until_date<strong class=\\\"atributo-obrigatorio\\\">*</strong></span>, // Data máxima que o desconto será concedido. (String). </strong><strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: YYYY-MM-DD</span></strong></div>\",\n \"9-2\": \"Não\",\n \"9-3\": \"Object\",\n \"10-0\": \"<code>configurations</code>\",\n \"10-1\": \"Permite incluir no boleto multa e juros caso seja pago após o vencimento.\\n\\n<span class=\\\"tab1\\\">*Atributos de configurations*</span>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">fine</span>, // valor cobrado de multa após o vencimento. Por exemplo: se você quiser 2%, você deve informar <code>200</code>. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 0 e máximo de 1000. Integer. \\n\\nCaso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem multa, utilize <code>0</code> como valor do atributo <code>fine</code></strong></span></div>\\n</strong>\\n</div>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">interest</span>, // valor cobrado de juros por dia após a data de vencimento. Por exemplo: se você quiser 0,033%, você deve informar <code>33</code>. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 0 e máximo de 330. Integer.\\n\\nCaso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem juros, utilize <code>0</code> como valor do atributo <code>interest</code></strong></span></div>\\n</strong>\\n</div>\",\n \"10-2\": \"Não\",\n \"10-3\": \"Object\",\n \"11-0\": \"<code>message</code>\",\n \"11-1\": \"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<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Até 4 linhas contendo 100 caracteres em cada linha. String.</span></strong>\\n\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">O operador <code>\\\\n</code> é utilizado para efetuar a quebra de linha.</span></strong>\",\n \"11-2\": \"Não\",\n \"11-3\": \"String\"\n },\n \"cols\": 4,\n \"rows\": 12\n}\n[/block]\n<strong style=\"font-size:10px;color:#ea6e1c\">* valor obrigatório</strong>\n\n# 2. Criação de Boleto em *Two Steps* (Dois passos)\n\n1. [Crie a transação](#section-2-1-criar-transa-o), informando o item/produto/serviço, valor, quantidade, etc;\n\n2. [Associe à forma de pagamento via boleto](#section-2-2-associar-forma-de-pagamento-via-boleto), informando o <code>charge_id</code> da transação e os dados do cliente.\n\nO 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](https://dev.gerencianet.com.br/docs/instalacao-da-api).\n\n<hr>\n\n## 2.1. Criar transação\n\nPrimeiramente, 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.\n\nApós criá-la, será retornado o <code>charge_id</code>, que é o identificador único da transação e que será utilizado para associar à forma de pagamento.\n\nAssim que essa transação é criada, ela recebe o status <code>new</code>, 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.\n\nPara gerar uma transação, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/charge</code>.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n 'client_id' => $clientId,\\n 'client_secret' => $clientSecret,\\n 'sandbox' => true // altere conforme o ambiente (true = Homologação e false = producao)\\n];\\n \\n$item_1 = [\\n 'name' => 'Item 1', // nome do item, produto ou serviço\\n 'amount' => 1, // quantidade\\n '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.)\\n];\\n \\n$item_2 = [\\n 'name' => 'Item 2', // nome do item, produto ou serviço\\n 'amount' => 2, // quantidade\\n 'value' => 2000 // valor (2000 = R$ 20,00)\\n];\\n \\n$items = [\\n $item_1,\\n $item_2\\n];\\n\\n// Exemplo para receber notificações da alteração do status da transação:\\n// $metadata = ['notification_url'=>'sua_url_de_notificacao_.com.br']\\n// Outros detalhes em: https://dev.gerencianet.com.br/docs/notificacoes\\n\\n// Como enviar seu $body com o $metadata\\n// $body = [\\n// 'items' => $items,a\\n//\\t\\t'metadata' => $metadata\\n// ];\\n\\n$body = [\\n 'items' => $items\\n];\\n\\ntry {\\n $api = new Gerencianet($options);\\n $charge = $api->createCharge([], $body);\\n \\n print_r($charge);\\n} catch (GerencianetException $e) {\\n print_r($e->code);\\n print_r($e->error);\\n print_r($e->errorDescription);\\n} catch (Exception $e) {\\n print_r($e->getMessage());\\n}\",\n \"language\": \"php\"\n },\n {\n \"code\": \"'use strict';\\n \\nvar Gerencianet = require('gn-api-sdk-node');\\n \\nvar clientId = 'informe_seu_client_id';\\nvar clientSecret = 'informe_seu_client_secret';\\n \\nvar options = {\\n client_id: clientId,\\n client_secret: clientSecret,\\n sandbox: true\\n}\\n \\nvar body = {\\n items: [{\\n name: 'Product 1',\\n value: 1000,\\n amount: 2\\n }],\\n shippings: [{\\n name: 'Default Shipping Cost',\\n value: 100\\n }]\\n}\\n \\nvar gerencianet = new Gerencianet(options);\\n \\ngerencianet\\n .createCharge({}, body)\\n .then(console.log)\\n .catch(console.log)\\n .done();\",\n \"language\": \"javascript\",\n \"name\": \"NodeJS\"\n },\n {\n \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n client_id: CREDENTIALS::CLIENT_ID,\\n client_secret: CREDENTIALS::CLIENT_SECRET,\\n sandbox: true\\n}\\n\\nbody = {\\n items: [{\\n name: \\\"Product 1\\\",\\n value: 1000,\\n amount: 2\\n }],\\n shippings: [{\\n name: \\\"Default Shipping Cost\\\",\\n value: 100\\n }]\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.create_charge(body: body)\",\n \"language\": \"ruby\"\n },\n {\n \"code\": \"from gerencianet import Gerencianet\\n \\noptions = {\\n 'client_id': 'client_id',\\n 'client_secret': 'client_secret',\\n 'sandbox': True\\n}\\n \\ngn = Gerencianet(options)\\n \\nbody = {\\n 'items': [{\\n 'name': \\\"Product 1\\\",\\n 'value': 1000,\\n 'amount': 2\\n }],\\n 'shippings': [{\\n 'name': \\\"Default Shipping Cost\\\",\\n 'value': 100\\n }]\\n}\\n \\ngn.create_charge(body=body)\",\n \"language\": \"python\"\n },\n {\n \"code\": \"dynamic endpoints = new Endpoints(\\\"client_id\\\", \\\"client_secret\\\", true);\\n \\nvar body = new\\n{\\n items = new[] {\\n new {\\n name = \\\"Product 1\\\",\\n value = 1000,\\n amount = 2\\n }\\n },\\n shippings = new[] {\\n new {\\n name = \\\"Default Shipping Cost\\\",\\n value = 100\\n }\\n }\\n};\\n \\nvar response = endpoints.CreateCharge(null, body);\\nConsole.WriteLine(response);\",\n \"language\": \"asp\",\n \"name\": \".NET\"\n },\n {\n \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\\n\\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\\ne Map<String, Object>\\n\\n\\nJSONObject\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/json/CreateCharge.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/map/CreateCharge.java\\n\\n*/\",\n \"language\": \"java\"\n },\n {\n \"code\": \"interface\\nfunction CreateCharge: String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction CreateCharge: String;\\nvar \\nBody : String;\\n\\nbegin \\n EnableService( 'GerenciaNet.dll' ); \\n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n GerenciaNetAuthorize(); \\n\\n Body := \\n '{'+\\n '\\\"items\\\":'+\\n '['+\\n '{'+\\n '\\\"name\\\":\\\"test article\\\",'+\\n '\\\"value\\\":1900,'+\\n '\\\"amount\\\":2'+\\n '},'+\\n '{'+\\n '\\\"name\\\":\\\"test article 2\\\",'+\\n '\\\"value\\\":3000,'+\\n '\\\"amount\\\":1'+\\n '}'+\\n ']'+\\n '}';\\n\\n Result := ExecuteGerenciaNetRequest( 'createCharge','','',Body );\\nend;\",\n \"language\": \"json\",\n \"name\": \"Delphi\"\n },\n {\n \"code\": \"\",\n \"language\": \"go\"\n }\n ]\n}\n[/block]\n<br>\n\n### Dados de entrada e saída na criação da transação:\n\n\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"{\\n \\\"items\\\": [\\n {\\n \\\"name\\\": \\\"Meu Produto\\\",\\n \\\"value\\\": 8900,\\n \\\"amount\\\": 1\\n }\\n ]\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de entrada\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200, // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n \\\"data\\\": {\\n \\\"charge_id\\\": numero_charge_id, // número da ID referente à transação gerada\\n \\\"status\\\": \\\"new\\\", // cobrança gerada, aguardando definição da forma de pagamento\\n \\\"total\\\": 8900, // valor total da transação (em centavos, sendo 8900 = R$89,00)\\n \\\"custom_id\\\": null, // identificador próprio opcional\\n \\\"created_at\\\": \\\"2021-06-01 14:58:46\\\" // data e hora da criação da transação\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de saída\"\n }\n ]\n}\n[/block]\n<br>\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/Charge\"\n \"items\"\n \"name\"\n \"value\"\n \"amount\"\n \"marketplace\"\n \"payee_code\"\n \"percentage\"\n \"shippings\"\n \"name\"\n \"value\"\n \"payee_code\"\n \"metadata\"\n \"custom_id\"\n \"notification_url\"</pre>\n\nPara verificar mais detalhes, <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge\" target=\"_blank\">acesse aqui</a> e explore em nosso Playground.\n\n<br>\n\n## b) Atributos que podem ser utilizados para criar uma transação:\n[block:parameters]\n{\n \"data\": {\n \"h-0\": \"Atributo\",\n \"h-1\": \"Descrição\",\n \"h-2\": \"Obrigatório\",\n \"h-3\": \"Tipo\",\n \"0-0\": \"<code>items</code>\",\n \"1-0\": \"<code>shippings</code>\",\n \"2-0\": \"<code>metadata</code>\",\n \"0-1\": \"Item que está sendo vendido. Uma mesma transação pode possuir ilimitados itens.\\n\\n<span class=\\\"tab1\\\"><em>Atributos de items</em></span>\\n\\n<div class=\\\"tab2\\\"><code>name<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Nome do item, produto ou serviço. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255 caracteres (String).</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>value<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Valor, em centavos. Ex: R$ 10,00 = 1000. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Integer.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>amount</code> // Quantidade. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Integer (padrão: 1)</span></strong></div>\",\n \"1-1\": \"Determina o(s) valor(es) de frete(s) de uma transação. Uma mesma transação pode possuir ilimitados valores de frete.\\n\\n<span class=\\\"tab1\\\"><em>Atributos de shippings</em></span>\\n\\n<div class=\\\"tab2\\\"><code>name<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Rótulo do frete. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. String.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>value<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Valor do frete, em centavos (1990 equivale a R$19,90). <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Integer.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>payeeCode</code>, // código da conta Gerencianet que receberá o repasse do valor total do frete - refere-se ao \\\"identificador da conta\\\" Gerencianet (<a href=\\\"https://cdn.discordapp.com/attachments/652136190006525955/809138574549188618/identificador-conta.jpg\\\" target=\\\"_blank\\\">onde localizar meu identificador?</a>) <span class=\\\"atributo\\\">(String)</span></strong>\\n<strong class=\\\"descricao-atributo\\\"></div>\",\n \"2-1\": \"Define dados específicos da transação.\\n\\n<span class=\\\"tab1\\\"><em>Atributos de metadata</em></span>\\n\\n<div class=\\\"tab2\\\"><code>custom_id</code> // 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. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. String/null.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>notification_url</code> // Endereço de sua URL válida que receberá as notificações de mudanças de status das transações. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. String/null.</span></strong></div>\",\n \"0-2\": \"Sim\",\n \"1-2\": \"Não\",\n \"2-2\": \"Não\",\n \"0-3\": \"Array\",\n \"1-3\": \"Array\",\n \"2-3\": \"Object\"\n },\n \"cols\": 4,\n \"rows\": 3\n}\n[/block]\n<strong class=\"atributo-obrigatorio-texto\">* valor obrigatório</strong>\n\n<br>\n\n<hr>\n\n## 2.2. Associar à forma de pagamento via boleto\n\nCom a transação gerada com sucesso, agora vamos associar com a forma de pagamento desejada - neste caso, será <code>banking_billet</code> (boleto bancário). Para tal, deverá ser informado o <code>charge_id</code> obtido ao criar a transação.\n\nNeste momento, ao definir boleto bancário como forma de pagamento da transação, seu status será alterado de <code>new</code> para <code>waiting</code>. Isso significa que a forma de pagamento foi selecionada e está aguardando a confirmação do pagamento.\n\nPara associar à forma de pagamento, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/charge/:id/pay</code>, onde <code>:id</code> é o <code>charge_id</code> da transação desejada.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_pay\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n 'client_id' => $clientId,\\n 'client_secret' => $clientSecret,\\n 'sandbox' => true // altere conforme o ambiente (true = Homologação e false = producao)\\n];\\n \\n// $charge_id refere-se ao ID da transação gerada anteriormente\\n$params = [\\n 'id' => $charge_id\\n];\\n \\n$customer = [\\n 'name' => 'Gorbadoc Oldbuck', // nome do cliente\\n 'cpf' => '94271564656' , // cpf válido do cliente\\n 'phone_number' => '5144916523' // telefone do cliente\\n];\\n \\n$bankingBillet = [\\n 'expire_at' => '2018-12-12', // data de vencimento do boleto (formato: YYYY-MM-DD)\\n 'customer' => $customer\\n];\\n \\n$payment = [\\n 'banking_billet' => $bankingBillet // forma de pagamento (banking_billet = boleto)\\n];\\n \\n$body = [\\n 'payment' => $payment\\n];\\n \\ntry {\\n $api = new Gerencianet($options);\\n $charge = $api->payCharge($params, $body);\\n \\n print_r($charge);\\n} catch (GerencianetException $e) {\\n print_r($e->code);\\n print_r($e->error);\\n print_r($e->errorDescription);\\n} catch (Exception $e) {\\n print_r($e->getMessage());\\n}\",\n \"language\": \"php\"\n },\n {\n \"code\": \"'use strict';\\n \\nvar moment = require('moment');\\nvar Gerencianet = require('gn-api-sdk-node');\\n \\nvar clientId = 'your_client_id';\\nvar clientSecret = 'your_client_secret';\\n \\nvar options = {\\n client_id: clientId,\\n client_secret: clientSecret,\\n sandbox: true\\n}\\nvar tomorrow = moment()\\n .add(1, 'days')\\n .format('YYYY-MM-DD');\\n\\nvar params = {\\n id: 1078425\\n}\\n\\nvar body = {\\n payment: {\\n banking_billet: {\\n expire_at: tomorrow,\\n customer: {\\n name: 'Gorbadoc Oldbuck',\\n email: '[email protected]',\\n cpf: '04267484171',\\n birth: '1977-01-15',\\n phone_number: '5144916523'\\n }\\n }\\n }\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n .payCharge(params, body)\\n .then(console.log)\\n .catch(console.log)\\n .done();\\n \\n\",\n \"language\": \"javascript\",\n \"name\": \"NodeJS\"\n },\n {\n \"code\": \"require \\\"gerencianet\\\"\\nrequire \\\"date\\\"\\n \\noptions = {\\n client_id: \\\"client_id\\\",\\n client_secret: \\\"client_secret\\\",\\n sandbox: true\\n}\\n \\ntomorrow = Date.today + 1\\n \\nparams = {\\n id: 1000\\n}\\n \\nbody = {\\n payment: {\\n banking_billet: {\\n expire_at: tomorrow.strftime,\\n customer: {\\n name: \\\"Gorbadoc Oldbuck\\\",\\n email: \\\"[email protected]\\\",\\n cpf: \\\"94271564656\\\",\\n birth: \\\"1977-01-15\\\",\\n phone_number: \\\"5144916523\\\"\\n }\\n }\\n }\\n}\\n \\ngerencianet = Gerencianet.new(options)\\ngerencianet.pay_charge(params: params, body: body)\",\n \"language\": \"ruby\"\n },\n {\n \"code\": \"from gerencianet import Gerencianet\\n \\noptions = {\\n 'client_id': 'client_id',\\n 'client_secret': 'client_secret',\\n 'sandbox': True\\n}\\n \\ngn = Gerencianet(options)\\n \\nparams = {\\n 'id': 1000\\n}\\n \\nbody = {\\n 'payment': {\\n 'banking_billet': {\\n 'expire_at': '2016-12-12',\\n 'customer': {\\n 'name': \\\"Gorbadoc Oldbuck\\\",\\n 'email': \\\"[email protected]\\\",\\n 'cpf': \\\"94271564656\\\",\\n 'birth': \\\"1977-01-15\\\",\\n 'phone_number': \\\"5144916523\\\"\\n }\\n }\\n }\\n}\\n \\ngn.pay_charge(params=params, body=body)\",\n \"language\": \"python\"\n },\n {\n \"code\": \"dynamic endpoints = new Endpoints(\\\"client_id\\\", \\\"client_secret\\\", true);\\n \\nvar param = new {\\n id = 1000\\n};\\n \\nvar body = new {\\n payment = new {\\n banking_billet = new {\\n expire_at = \\\"2016-12-12\\\",\\n customer = new {\\n name = \\\"Gorbadoc Oldbuck\\\",\\n email = \\\"[email protected]\\\",\\n cpf = \\\"94271564656\\\",\\n birth = \\\"1977-01-15\\\",\\n phone_number = \\\"5144916523\\\"\\n }\\n }\\n }\\n};\\n \\nvar response = endpoints.PayCharge(param, body);\",\n \"language\": \"asp\",\n \"name\": \".NET\"\n },\n {\n \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\\n\\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\\ne Map<String, Object>\\n\\n\\nJSONObject\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/json/Billet.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/map/Billet.java\\n\\n*/\",\n \"language\": \"java\"\n },\n {\n \"code\": \"interface\\nfunction PayChargeWithBillet(Id: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction PayChargeWithBillet(Id: String): String;\\nvar \\n Body : String;\\n PaymentParams: String;\\n \\nconst \\n BodyText = \\n '{'+\\n '\\\"payment\\\": {'+\\n '\\\"banking_billet\\\": {'+\\n '\\\"customer\\\": {'+\\n '\\\"email\\\": \\\"[email protected]\\\",'+\\n '\\\"phone_number\\\": \\\"5144916523\\\",'+\\n '\\\"birth\\\": \\\"1977-07-17\\\",'+\\n '\\\"address\\\": {'+\\n '\\\"street\\\": \\\"Av. JK\\\",'+\\n '\\\"number\\\": 909,'+\\n '\\\"neighborhood\\\": \\\"Bauxita\\\",'+\\n '\\\"complement\\\": \\\"\\\",'+\\n '\\\"city\\\": \\\"Ouro Preto\\\",'+\\n '\\\"state\\\": \\\"MG\\\",'+\\n '\\\"zipcode\\\": \\\"35400000\\\"'+\\n '},'+\\n '\\\"name\\\": \\\"Gorbadoc Oldbuck\\\",'+\\n '\\\"cpf\\\": \\\"94271564656\\\"'+\\n '},'+\\n '\\\"message\\\": \\\"Test\\\",'+\\n '\\\"expire_at\\\": \\\"2019-02-21\\\"'+\\n '}'+\\n '}'+\\n '}';\\n\\nbegin\\n EnableService( 'GerenciaNet.dll' ); \\n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n GerenciaNetAuthorize(); \\n\\n PaymentParams := CreateRequestParams( [ 'id='+Id ] ).Text; // Passa o id da transação\\n Body := BodyText;\\n\\n Result := ExecuteGerenciaNetRequest( 'payCharge',PaymentParams,'',Body );\\nend;\",\n \"language\": \"json\",\n \"name\": \"Delphi\"\n },\n {\n \"code\": \"// No código de exemplo de uso da SDK de Go, definimos as credenciais de acesso à API (Client_Id e Client_Secret) e o ambiente a ser usado (sandbox como 'true' ou 'false') dentro de um arquivo específico (configs.go), que está localizado no diretório \\\"_examples/configs\\\". Essas credenciais são exportadas através da variável 'Credentials'.\\n\\npackage main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tcustomer := map[string]interface{}{\\n\\t\\t\\\"name\\\": \\\"Gorbadoc Oldbuck\\\",\\n\\t\\t\\\"cpf\\\": \\\"04267484171\\\",\\n\\t\\t\\\"phone_number\\\": \\\"5144916523\\\",\\n\\t}\\n\\n\\tbody := map[string]interface{} {\\n\\t\\t\\\"payment\\\": map[string]interface{} {\\n\\t\\t\\t\\\"banking_billet\\\": map[string]interface{} {\\n\\t\\t\\t\\t\\\"expire_at\\\": \\\"2018-12-12\\\",\\n\\t\\t\\t\\t\\\"customer\\\": customer,\\n\\t\\t\\t},\\n\\t\\t},\\n\\t}\\n\\n\\tres, err := gn.PayCharge(1, body) // no lugar do 1 coloque o charge_id certo\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n \"language\": \"go\"\n }\n ]\n}\n[/block]\n<br>\n\n### Dados de entrada e saída na criação da transação:\n\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"{\\n \\\"payment\\\": {\\n \\\"banking_billet\\\": {\\n \\\"customer\\\": {\\n \\\"name\\\": \\\"Gorbadoc Oldbuck\\\",\\n \\\"cpf\\\": \\\"94271564656\\\",\\n \\\"email\\\": \\\"[email protected]\\\",\\n \\\"phone_number\\\": \\\"5144916523\\\",\\n \\\"address\\\": {\\n \\\"street\\\": \\\"Avenida Juscelino Kubitschek\\\",\\n \\\"number\\\": \\\"909\\\",\\n \\\"neighborhood\\\": \\\"Bauxita\\\",\\n \\\"zipcode\\\": \\\"35400000\\\",\\n \\\"city\\\": \\\"Ouro Preto\\\",\\n \\\"complement\\\": \\\"\\\",\\n \\\"state\\\": \\\"MG\\\"\\n }\\n },\\n \\\"expire_at\\\": \\\"2022-12-30\\\",\\n \\\"configurations\\\": {\\n \\\"fine\\\": 200,\\n \\\"interest\\\": 33\\n },\\n \\\"message\\\": \\\"Pague pelo código de barras ou pelo QR Code\\\"\\n }\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de entrada\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200, // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n \\\"data\\\": {\\n \\\"barcode\\\": \\\"00000.00000 00000.000000 00000.000000 0 00000000000000\\\", // linha digitável do boleto\\n \\\"pix\\\":{\\n \\\"qrcode\\\":\\\"00020101021226990014BR.GOV.BCB.PIX2577qrcodes-pix.gerencianet.com.br/bolix/v2/cobv/0000000000000000000000000000GERENCIANET SA6010OURO PRETO62070503***63047CB1\\\", // BRCode ou copia e cola\\n \\\"qrcode_image\\\":\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcm cvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NSA0NSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJNMCAwaDQ1djQ1SD...\\\" // QRCode imagem\\n },\\n \\\"link\\\": \\\"link_https_para_acesso_o_bolix\\\", // link do Bolix gerado\\n \\\"pdf\\\": {\\n \\\"charge\\\": \\\"link_https_do_pdf_da_cobranca\\\" // link do PDF do Bolix\\n },\\n \\\"expire_at\\\": \\\"2022-12-30\\\", // data de vencimento do boleto no seguinte formato: 2022-12-15 (ou seja, equivale a 15/12/2022)\\n \\\"charge_id\\\": numero_charge_id, // número da ID referente à transação gerada\\n \\\"status\\\": \\\"waiting\\\", // forma de pagamento selecionada, aguardando a confirmação do pagamento (\\\"waiting\\\" equivale a \\\"aguardando\\\")\\n \\\"total\\\": 8900, // valor, em centavos. Por exemplo: 5990 (equivale a R$ 59,90)\\n \\\"payment\\\": \\\"banking_billet\\\" // forma de pagamento associada à esta transação (\\\"banking_billet\\\" equivale a \\\"boleto bancário\\\")\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de saída Bolix\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200, // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n \\\"data\\\": {\\n \\\"barcode\\\": \\\"00000.00000 00000.000000 00000.000000 0 00000000000000\\\", // linha digitável do boleto\\n \\\"link\\\": \\\"link_https_para_acesso_o_bolix\\\", // link do Boleto gerado\\n \\\"pdf\\\": {\\n \\\"charge\\\": \\\"link_https_do_pdf_da_cobranca\\\" // link do PDF\\n },\\n \\\"expire_at\\\": \\\"2022-12-30\\\", // data de vencimento do boleto no seguinte formato: 2022-12-15 (ou seja, equivale a 15/12/2022)\\n \\\"charge_id\\\": numero_charge_id, // número da ID referente à transação gerada\\n \\\"status\\\": \\\"waiting\\\", // forma de pagamento selecionada, aguardando a confirmação do pagamento (\\\"waiting\\\" equivale a \\\"aguardando\\\")\\n \\\"total\\\": 8900, // valor, em centavos. Por exemplo: 5990 (equivale a R$ 59,90)\\n \\\"payment\\\": \\\"banking_billet\\\" // forma de pagamento associada à esta transação (\\\"banking_billet\\\" equivale a \\\"boleto bancário\\\")\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de saída boleto tradicional\"\n }\n ]\n}\n[/block]\n<br>\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/Pay\",\n \"payment\"\n \"banking_billet\"\n \"customer\"\n \"name\"\n \"cpf\"\n \"email\"\n \"phone_number\"\n \"birth\"\n \"address\"\n \"street\"\n \"number\"\n \"neighborhood\"\n \"zipcode\"\n \"city\"\n \"complement\"\n \"state\"\n \"juridical_person\"\n \"corporate_name\"\n \"cnpj\"\n \"expire_at\"\n \"discount\"\n \"type\"\n \"percentage\",\n \"currency\"\n \"value\"\n \"conditional_discount\"\n \"type\"\n \"percentage\",\n \"currency\"\n \"value\"\n \"until_date\"\n \"configurations\"\n \"fine\"\n \"interest\"\n \"message\"</pre>\n\nPara verificar mais detalhes, <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_pay\" target=\"_blank\">acesse aqui</a> e explore em nosso Playground.\n\n<br>\n\n## b) Atributos que podem ser utilizados para gerar um boleto bancário:\n[block:parameters]\n{\n \"data\": {\n \"h-0\": \"Atributo\",\n \"h-1\": \"Descrição\",\n \"h-2\": \"Obrigatório\",\n \"h-3\": \"Tipo\",\n \"0-0\": \"<code>payment</code>\",\n \"0-2\": \"Sim\",\n \"0-3\": \"Objeto **Payment**\",\n \"0-1\": \"Tag raiz\"\n },\n \"cols\": 4,\n \"rows\": 1\n}\n[/block]\n<br>\n\n*Objeto **Payment***\n[block:parameters]\n{\n \"data\": {\n \"h-0\": \"Atributo\",\n \"h-1\": \"Descrição\",\n \"h-2\": \"Obrigatório\",\n \"h-3\": \"Tipo\",\n \"0-0\": \"<code>banking_billet</code>\",\n \"0-1\": \"Forma de pagamento através de \\\"boleto bancário\\\"\",\n \"0-3\": \"Objeto **Banking_Billet**\",\n \"0-2\": \"Sim\"\n },\n \"cols\": 4,\n \"rows\": 1\n}\n[/block]\n<br>\n\n*Objeto **Banking_Billet***\n[block:parameters]\n{\n \"data\": {\n \"h-0\": \"Atributo\",\n \"h-1\": \"Descrição\",\n \"h-2\": \"Obrigatório\",\n \"h-3\": \"Tipo\",\n \"0-0\": \"<code>name</code>\",\n \"1-0\": \"<code>cpf</code>\",\n \"2-0\": \"<code>email</code>\",\n \"3-0\": \"<code>phone_number</code>\",\n \"4-0\": \"<code>birth</code>\",\n \"5-0\": \"<code>address</code>\",\n \"6-0\": \"<code>juridical_person</code>\",\n \"7-0\": \"<code>expire_at</code>\",\n \"10-0\": \"<code>configurations</code>\",\n \"0-2\": \"Sim\\n\\n*Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente.*\",\n \"1-2\": \"Sim\\n\\n*Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente.*\",\n \"2-2\": \"Não\",\n \"3-2\": \"Não\",\n \"4-2\": \"Não\",\n \"5-2\": \"Não\",\n \"7-2\": \"Sim\",\n \"6-2\": \"Não\",\n \"10-2\": \"Não\",\n \"5-3\": \"Object\",\n \"6-3\": \"Object\",\n \"0-3\": \"String\",\n \"1-3\": \"String\",\n \"2-3\": \"String\",\n \"3-3\": \"String\",\n \"4-3\": \"String\",\n \"7-3\": \"String\",\n \"10-3\": \"Object\",\n \"0-1\": \"Nome do cliente.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255.</span></strong>\",\n \"1-1\": \"CPF válido do cliente (sem pontos, vírgulas ou hífen).\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Tamanho: 11 caracteres.</span></strong>\",\n \"2-1\": \"Email do cliente.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. Ex.: [email protected]</span></strong>\",\n \"3-1\": \"Telefone do cliente.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: sem pontos ou vírgulas, com DDD de 2 caracteres (9º dígito é opcional). Ex.: 11988887777</span></strong>\",\n \"4-1\": \"Data de nascimento do cliente.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: YYYY-MM-DD</span></strong>\",\n \"5-1\": \"Endereço do cliente.\\n\\n<span class=\\\"tab1\\\">*Atributos de address*</span>\\n\\n<div class=\\\"tab2\\\"><code>street<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // nome da rua <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(Object)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>number<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // número <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String/Integer)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>neighborhood<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Bairro <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>zipcode<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // CEP (sem pontos ou hífen) <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>city<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // cidade <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>complement</code> // complemento <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String/null)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>state<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // estado (2 caracteres) <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(Object)</strong></span></div>\",\n \"6-1\": \"Dados de pessoa jurídica\\n\\n<span class=\\\"tab1\\\">*Atributos de juridical_person*</span>\\n\\n<div class=\\\"tab2\\\">\\n<code>corporate_name<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Nome da razão social. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255. String.</strong></span></div>\\n\\n<div class=\\\"tab2\\\">\\n<code>cnpj<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // CNPJ da empresa. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Tamanho: 14 caracteres. String.</strong></span>\\n</div>\",\n \"7-1\": \"Data de vencimento do boleto.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: YYYY-MM-DD</span></strong>\",\n \"10-1\": \"Permite incluir no boleto multa e juros caso seja pago após o vencimento.\\n\\n<span class=\\\"tab1\\\">*Atributos de configurations*</span>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">fine</span>, // valor cobrado de multa após o vencimento. Por exemplo: se você quiser 2%, você deve informar <code>200</code>. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 0 e máximo de 1000. Integer. \\n\\nCaso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem multa, utilize <code>0</code> como valor do atributo <code>fine</code></strong></span></div>\\n</strong>\\n</div>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">interest</span>, // valor cobrado de juros por dia após a data de vencimento. Por exemplo: se você quiser 0,033%, você deve informar <code>33</code>. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 0 e máximo de 330. Integer.\\n\\nCaso você possua configurações de multa ativada na Gerencianet e queira gerar emissões na API sem juros, utilize <code>0</code> como valor do atributo <code>interest</code></strong></span></div>\\n</strong>\\n</div>\",\n \"8-0\": \"<code>discount</code>\",\n \"8-1\": \"Define dados de desconto sobre a cobrança.\\n\\n<span class=\\\"tab1\\\">*Atributos de discount*</span>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">type<strong class=\\\"atributo-obrigatorio\\\">*</strong></span>, // Tipo do desconto (String). Valores permitidos:\\n<code>currency</code>: o desconto será informado em centavos;\\n<code>percentage</code>: o desconto será informado em porcentagem.</strong>\\n</div>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">value<strong class=\\\"atributo-obrigatorio\\\">*</strong></span>, // Valor do desconto (Integer). Se o tipo do desconto for <code>currency</code>, 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 <code>percentage</code>, o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:\\n1) <code>currency</code> // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar <code>599</code>;\\n2) <code>percentage</code> // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar <code>1500</code>.\\n</strong>\\n</div>\",\n \"8-2\": \"Não\",\n \"8-3\": \"Object\",\n \"11-0\": \"<code>message</code>\",\n \"11-2\": \"Não\",\n \"11-3\": \"String\",\n \"11-1\": \"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<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Até 4 linhas contendo 100 caracteres em cada linha. String.</span></strong>\\n\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">O operador <code>\\\\n</code> é utilizado para efetuar a quebra de linha.</span></strong>\",\n \"9-0\": \"<code>conditional_discount</code>\",\n \"9-1\": \"Define desconto condicional que é válido até uma data específica. Se o pagamento não for efetuado até aquela data, o desconto é invalidado.\\n\\n<span class=\\\"tab1\\\">*Atributos de conditional_discount*</span>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">type<strong class=\\\"atributo-obrigatorio\\\">*</strong></span>, // Tipo do desconto (String). Valores permitidos:\\n<code>currency</code>: o desconto será informado em centavos;\\n<code>percentage</code>: o desconto será informado em porcentagem.</strong>\\n</div>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">value<strong class=\\\"atributo-obrigatorio\\\">*</strong></span>, // Valor do desconto (Integer). Se o tipo do desconto for <code>currency</code>, 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 <code>percentage</code>, o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:\\n1) <code>currency</code> // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar <code>599</code>;\\n2) <code>percentage</code> // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar <code>1500</code>.</strong></div>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">until_date<strong class=\\\"atributo-obrigatorio\\\">*</strong></span>, // Data máxima que o desconto será concedido. (String). </strong><strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: YYYY-MM-DD</span></strong></div>\",\n \"9-2\": \"Não\",\n \"9-3\": \"Object\"\n },\n \"cols\": 4,\n \"rows\": 12\n}\n[/block]\n<strong style=\"font-size:10px;color:#ea6e1c\">* valor obrigatório</strong>\n[block:callout]\n{\n \"type\": \"info\",\n \"title\": \"Pagamento realizado como Pessoa Jurídica (PJ)\",\n \"body\": \"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 <code>juridical_person</code>.\\n\\n<a href=\\\"https://dev.gerencianet.com.br/docs/pagar-com-pessoa-juridica\\\" target=\\\"_blank\\\" title=\\\"Link Interno\\\">Veja detalhes neste link</a> sobre como gerar um pagamento cuja forma de pagamento seja \\\"boleto bancário\\\" para um cliente que seja Pessoa Jurídica (PJ).\"\n}\n[/block]\n\n[block:callout]\n{\n \"type\": \"info\",\n \"title\": \"Relação de todos os possíveis status de uma transação\",\n \"body\": \"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.\\n\\nConfira <a href=\\\"https://dev.gerencianet.com.br/docs/transacoes\\\" target=\\\"_blank\\\" title=\\\"Link Interno\\\">neste link</a> todos os detalhes dos possíveis status das transações.\"\n}\n[/block]\n\n[block:callout]\n{\n \"type\": \"warning\",\n \"title\": \"Callbacks (notificações) das transações da API para seu sistema\",\n \"body\": \"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.\\n\\nConfira <a href=\\\"https://dev.gerencianet.com.br/docs/notificacoes-recebendo\\\" target=\\\"_blank\\\" title=\\\"Link Interno\\\">neste link</a> todos os detalhes sobre como implementar a sua URL de notificação.\"\n}\n[/block]\n<br>\n<hr>\n\n# 3. Outros endpoints\n\nExistem 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:\n\n- [Alterar data de vencimento de boleto bancário](https://dev.gerencianet.com.br/docs/pagar-boleto-outros-endpoints#section-1-alterar-data-de-vencimento-de-boleto-banc-rio)\n\n- [Cancelar determinada transação](https://dev.gerencianet.com.br/docs/pagar-boleto-outros-endpoints#section-2-cancelar-determinada-transa-o)\n\n- [Alterar URL de notificação (notification_url) e/ou custom_id de transação](https://dev.gerencianet.com.br/docs/pagar-boleto-outros-endpoints#section-3-alterar-url-de-notifica-o-notification_url-e-ou-custom_id-de-transa-o)\n\n- [Reenviar boleto bancário por e-mail](https://dev.gerencianet.com.br/docs/pagar-boleto-outros-endpoints#section-4-reenviar-boleto-banc-rio-por-e-mail)\n\n- [Acrescentar informações ao histórico da transação](https://dev.gerencianet.com.br/docs/pagar-boleto-outros-endpoints#section-5-acrescentar-informa-es-ao-hist-rico-da-transa-o)\n\n- [Retornar informações sobre transação](https://dev.gerencianet.com.br/docs/pagar-boleto-outros-endpoints#section-6-retornar-informa-es-sobre-transa-o)\n\n<br>\n<hr>\n\n# 4. Vídeos: Criando transação e gerando boleto bancário\n\nPensando em oferecer novos meios de transmitir informações, a Gerencianet disponibiliza os vídeos a seguir com o objetivo de explicar, de maneira clara e objetiva, como criar uma transação via integração e associá-la à forma de pagamento por \"boleto bancário\".\n\n## 4.1. Criando transação via Playground (ambiente de testes/sandbox)\n[block:html]\n{\n \"html\": \"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/ylqJUpHqwfY\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"\n}\n[/block]\n<br>\n\n## 4.2. Definindo método de pagamento por Boleto Bancário (via Playground)\n[block:html]\n{\n \"html\": \"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/TNAl8ogvfGQ\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"\n}\n[/block]\n<br>\n\n## 4.3. Criando uma transação por integração - Pagamento por Boleto Bancário\n[block:html]\n{\n \"html\": \"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/A6p1thz6Pe8\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"\n}\n[/block]\n<br>\n[block:callout]\n{\n \"type\": \"info\",\n \"title\": \"Curso Completo de Integração com a API Gerencianet\",\n \"body\": \"Para acesso as demais aulas, de outros assuntos, acesse a página <a href=\\\"https://dev.gerencianet.com.br/docs/curso-online-gerencianet\\\" target=\\\"_blank\\\" title=\\\"Link Interno\\\">Curso Online de Integrações</a>.\"\n}\n[/block]\n<br>\n<hr>\n\n# 5. Próximos Passos\n\nExistem outras soluções da API que permitem a utilização de pagamento por boleto bancário, quer conhecê-las?\n\n- <a href=\"https://dev.gerencianet.com.br/docs/criando-assinaturas\" title=\"Link Interno\">Assinaturas (cobrança recorrente)</a>\n- <a href=\"https://dev.gerencianet.com.br/docs/carnes-criando\" title=\"Link Interno\">Carnês</a>\n- <a href=\"https://dev.gerencianet.com.br/docs/marketplace-recebimentos\" title=\"Link Interno\">Marketplace (split)</a>\n- <a href=\"https://dev.gerencianet.com.br/docs/link-pagamento-criando\" title=\"Link Interno\">Link de Pagamento</a>\n- <a href=\"https://gerencianet.com.br/artigo/sistemas-integrados/\" title=\"Link Interno\">Módulos e Plugins Gerencianet</a>","updates":[],"order":1,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"606f2ca7c5ba9100787834b3","project":"575aeffae12cf20e002f306c","version":{"version":"1.1.0","version_clean":"1.1.0","codename":"2021","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["606f2ca6c5ba91007878342b","575af039a083950e004487f7","575af5c7ba4ed70e000ca288","606f2ca6c5ba91007878342c","606f2ca6c5ba91007878342d","606f2ca6c5ba91007878342e","606f2ca6c5ba91007878342f","5761a63d207db7170022fc14","5761b9a2b65324200072d79e","576832939f0bf4190014ffdf","576832c09f0bf4190014ffe1","576832cba151c10e004316f0","576832d5bb15f40e00a288ec","576832e107b1f30e0039c645","606f2ca6c5ba910078783430","606f2ca6c5ba910078783431","5783f78c5cbce30e0074e2b7","606f2ca6c5ba910078783432","606f2ca6c5ba910078783433","606f2ca6c5ba910078783434","606f2ca6c5ba910078783435","606f2ca6c5ba910078783436","606f2ca6c5ba910078783437","578529f887c9280e0090394b","606f2ca6c5ba910078783438","606f2ca6c5ba910078783439","606f2ca6c5ba91007878343a","606f2ca6c5ba91007878343b","606f2ca6c5ba91007878343c","606f2ca6c5ba91007878343d","606f2ca6c5ba91007878343e","606f2ca6c5ba91007878343f","606f2ca6c5ba910078783440","606f2ca6c5ba910078783441","60d61f026ddc3901a32ee5f1","60ec37c637005f015e54174e","61473375119247002a9c14d7","6283a3819575c60045513ea2"],"_id":"606f2ca7c5ba9100787834c6","project":"575aeffae12cf20e002f306c","createdAt":"2016-06-10T16:51:06.080Z","releaseDate":"2016-06-10T16:51:06.080Z","__v":4,"forked_from":"575aeffae12cf20e002f306f"},"category":{"sync":{"isSync":false,"url":""},"pages":[],"title":"Pagar com Boleto (Bolix)","slug":"pagar-com-boleto","order":10,"from_sync":false,"reference":false,"_id":"606f2ca6c5ba910078783432","createdAt":"2016-07-11T19:49:54.838Z","__v":1,"project":"575aeffae12cf20e002f306c","version":"606f2ca7c5ba9100787834c6"},"user":"5cd2d0083432a2004b7a6b83","createdAt":"2019-08-09T12:41:44.298Z","__v":0,"parentDoc":null}
Gerar boleto bancário (Bolix)
Passo a passo para gerar boleto bancário na API Gerencianet