{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","settings":"","results":{"codes":[]},"params":[]},"next":{"description":"","pages":[]},"title":"Gerar Bolix","type":"basic","slug":"bolix-boleto-carne","excerpt":"Passo a passo para gerar Bolix na API Gerencianet, o Bolix permite gerar cobranças com o pix no boleto, possibilitando mais de uma forma de pagamento aos clientes","body":"O Bolix, pix no boleto, permite gerar transações do tipo boleto e carnê para seu cliente com o acréscimo do Pix como forma de pagamento. \nO Bolix quando emitido na forma de boleto pode ser gerado via API em um passo, também conhecido como *One Step* ou em dois passos, o *Two Steps*. \nTambém é disponibilizado a emissão do Bolix como carnê, que consiste em um conjunto de transações (parcelas) geradas em lote e com forma de pagamento já definida com vencimento mensal.\n\nTodos os fluxos e informações para emissões do Bolix tanto como boleto bancário quanto carnê estão detalhados a seguir:\n1. [Criando Bolix com o método de pagamento boleto bancário, transação em *One Step* (Um passo)](#section-1-cria-o-do-bolix-boleto-com-pix-em-one-step-um-passo-).\n\n2. [Criando Bolix com o método de pagamento boleto bancário, transação em *Two Steps* (Dois passos)](#section-2-cria-o-do-bolix-boleto-com-pix-em-two-steps-dois-passos-).\n\n3. [Criando Bolix com o método de pagamento carnê](#section-3-gerando-um-bolix-com-o-m-todo-de-pagamento-carn-).\n[block:callout]\n{\n  \"type\": \"danger\",\n  \"title\": \"Ativação do Bolix\",\n  \"body\": \"Para que você consiga emitir cobranças Bolix, boleto com pix, primeiramente deve-se ativar o Bolix em sua conta Gerencianet, siga estes passos:\\n\\n1- Acesse sua Conta Digital na <a href=\\\"https://sistema.gerencianet.com.br/\\\" target=\\\"_blank\\\" title=\\\"Acessar a conta Gerencianet\\\">plataforma web</a>.\\n2- Clique no menu Cobranças > Configurações > Boletos Bancários e Carnês.\\n3- Por fim, habilite a função “**Bolix**” como nesta <a href=\\\"https://s3.amazonaws.com/gerencianet-pub-prod-1/printscreen/2021/07/12/matheus.rodrigues/c4c98a-4bdd27a8-c0f2-4580-ab12-feccde184c96.png\\\" target=\\\"_blank\\\" title=\\\"Passo a passo para habilitar o Bolix\\\">imagem</a>.\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"O restante desta página apresenta os procedimentos detalhados para criação do Bolix com os métodos de pagamento boleto bancário e carnê, mas você precisa instalar uma de nossas bibliotecas em seu servidor para executar os códigos de exemplo. Certifique-se de que a SDK da Gerencianet foi instalada.\",\n  \"title\": \"SDK's\"\n}\n[/block]\n# 1. Criação do Bolix, boleto com pix, 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: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 onde vamos notificá-lo, independente se for pago pelo código de barras do boleto quanto pelo QR Code.\\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' => '2022-09-01', // data de vencimento do titulo\\n       'message' => 'Pague pelo código de barras ou pelo QR Code', // 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 = Bolix)\\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      \"name\": \"PHP\"\n    },\n    {\n      \"code\": \"oneStep Node.JS\\n'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar options = require('../../credentials');\\n\\nvar body = {\\n\\n  payment: {\\n    banking_billet: {\\n      expire_at: '2020-06-12', \\n      customer: {\\n        name: 'Gorbadoc Oldbuck',\\n        email: 'oldbuck:::at:::gerencianet.com.br',\\n        cpf: '94271564656', \\n        phone_number: '5144916523'\\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\": \"# encoding: utf-8\\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': 1\\n    }],\\n    'shippings': [{\\n        'name': \\\"Default Shipping Cost\\\",\\n        'value': 100\\n    }],\\n    'payment': {\\n        'banking_billet': {\\n            'expire_at': '2022-12-12',\\n            'customer': {\\n                'name': \\\"Gorbadoc Oldbuck\\\",\\n                'email': \\\"[email protected]\\\",\\n                'cpf': \\\"94271564656\\\",\\n                'birth': \\\"1977-01-15\\\",\\n                'phone_number': \\\"62986070247\\\"\\n            \\n            },\\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\\nresponse = gn.create_charge_onestep(params=None, body=body)\\nprint(response)\",\n      \"language\": \"python\",\n      \"name\": \"Python\"\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\\\", \\\"0007\\\");\\n        \\n        //desconto        \\n        JSONObject discount = new JSONObject();\\n        discount.put(\\\"type\\\",\\\"currency\\\");\\n        discount.put(\\\"value\\\",599);\\n        \\n        //juros e multa\\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\\\", \\\"2022-08-30\\\");\\n        \\n        \\n        JSONObject bankingBillet = new JSONObject();\\n        bankingBillet.put(\\\"expire_at\\\", \\\"2022-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      \"name\": \"Java\"\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,\\nCredentials.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 = \\\"[email protected]\\\",\\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\": \"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\\\": \\\"94271564656\\\",\\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\\\": \\\"2022-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      \"name\": \"Go\"\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: CREDENTIALS::SANDBOX\\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: \\\"94271564656\\\",\\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      \"language\": \"ruby\",\n      \"name\": \"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\\\": \\\"2022-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\": \"d\",\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[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\"\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 título:\n<br>\n\n*Objeto **items***\n\n[block:parameters]\n{\n  \"data\": {\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    \"0-3\": \"Array\",\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\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    \"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    \"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    \"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    \"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    \"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    \"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    \"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    \"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    \"3-2\": \"Não\",\n    \"4-2\": \"Não\",\n    \"5-2\": \"Não\",\n    \"6-2\": \"Não\",\n    \"7-2\": \"Sim\",\n    \"8-2\": \"Não\",\n    \"9-2\": \"Não\",\n    \"10-2\": \"Não\",\n    \"3-3\": \"String\",\n    \"4-3\": \"String\",\n    \"5-3\": \"Object\",\n    \"6-3\": \"Object\",\n    \"7-3\": \"String\",\n    \"8-3\": \"Object\",\n    \"9-3\": \"Object\",\n    \"10-3\": \"Object\",\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  },\n  \"cols\": 4,\n  \"rows\": 11\n}\n[/block]\n<strong style=\"font-size:10px;color:#ea6e1c\">* valor obrigatório</strong>\n\n# 2. Criação do Bolix, boleto com pix, 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\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';\\n\\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n\\n$file = file_get_contents(__DIR__ . '/../config.json');\\n$options = json_decode($file, true);\\nunset($options['pix_cert']);\\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      \"name\": \"PHP\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar options = require('../../credentials');\\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\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nbody = {\\n    'items': [{\\n        'name': \\\"Product 1\\\",\\n        'value': 1100,\\n        'amount': 2\\n    }],\\n    'shippings': [{\\n        'name': \\\"Default Shipping Cost\\\",\\n        'value': 100\\n    }]\\n}\\n\\nresponse =  gn.create_charge(body=body)\\nprint(response)\",\n      \"language\": \"python\",\n      \"name\": \"Python\"\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      \"name\": \"Java\"\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\": \"csharp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"package 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\\tbody := map[string]interface{} {\\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.CreateCharge(body)\\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      \"name\": \"Go\"\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      \"name\": \"Ruby\"\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\": \"d\",\n      \"name\": \"Delphi\"\n    }\n  ]\n}\n[/block]\n###  Dados de entrada e saída na criação da transação:\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\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\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    \"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    \"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<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 <code>banking_billet</code> (boleto bancário) e assim gerar o Bolix. 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\nO boleto bancário que será gerado já vem com a forma de pagamento Pix inclusa.\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';\\n\\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n\\n$file = file_get_contents(__DIR__ . '/../config.json');\\n$options = json_decode($file, true);\\nunset($options['pix_cert']);\\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' => '2022-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      \"name\": \"PHP\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\nvar moment = require('moment');\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar options = require('../../credentials');\\n\\n\\nvar tomorrow = moment()\\n  .add(1, 'days')\\n  .format('YYYY-MM-DD');\\n\\nvar params = {\\n  id: 0\\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: '94271564656',\\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      \"language\": \"javascript\",\n      \"name\": \"NodeJs\"\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      \"name\": \"Python\"\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*/s\",\n      \"language\": \"java\",\n      \"name\": \"Java\"\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\": \"csharp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"package 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\\\": \\\"94271564656\\\",\\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\\\": \\\"2022-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 da transação\\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      \"name\": \"Go\"\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      \"name\": \"Ruby\"\n    },\n    {\n      \"code\": \"\",\n      \"language\": \"d\",\n      \"name\": \"Delphi\"\n    }\n  ]\n}\n[/block]\n###  Dados de entrada e saída na criação da transação:\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\"\n    }\n  ]\n}\n[/block]\n<br>\n\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 Bolix, pix no 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-3\": \"Objeto **Payment**\",\n    \"0-2\": \"Sim\",\n    \"0-1\": \"Tag raiz\",\n    \"0-0\": \"<code>payment</code>\"\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-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\n\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# 3. Gerando um Bolix com o método de pagamento carnê\n\nO carnê é um método de pagamento que gera um conjunto de transações (parcelas) com as mesmas informações de pagamento e do cliente em todas elas, as parcelas de um carnê vencem mensalmente, de acordo com a data definida pelo integrador. Para gerar um carnê, você precisa informar os seguintes dados:\n\n- Itens (ou serviço) oferecido;\n- Data de vencimento da 1ª parcela;\n- Número de parcelas (repetições).\n\n\nA seguir, um código de exemplo de criação de um Bolix com o método de pagamento carnê utilizando as SDK's disponíveis. Note que já estamos definindo os itens, os dados do cliente, data de vencimento da primeira parcela do carnê e a quantidade de repetições (em meses):\n\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php\\n\\nrequire __DIR__ . '/../../vendor/autoload.php';\\n\\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n\\n$file = file_get_contents(__DIR__ . '/../config.json');\\n$options = json_decode($file, true);\\nunset($options['pix_cert']);\\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$customer = [\\n  'name' => 'Gorbadoc Oldbuck', // nome do cliente\\n  'cpf' => '94271564656' , // cpf do cliente\\n  'phone_number' => '5144916523' // telefone do cliente\\n];\\n\\n// Exemplo para receber notificações da alteração do status do carne.\\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,\\n// 'customer' => $customer,\\n// 'expire_at' => '2022-12-02',\\n// 'repeats' => 5,\\n// 'split_items' => false,\\n// 'metadata' => $metadata\\n// ];\\n\\n$body = [\\n  'items' => $items,\\n  'customer' => $customer,\\n  'expire_at' => '2022-12-02', // data de vencimento da primeira parcela do carnê\\n  'repeats' => 5, // número de parcelas do carnê\\n  'split_items' => false // Define se os itens do carnê serão divididos entre as parcelas (true), ou se o valor de cada parcela será o valor total dos itens (false)\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $carnet = $api->createCarnet([], $body);\\n \\n    print_r($carnet);\\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\",\n      \"language\": \"php\",\n      \"name\": \"PHP\"\n    },\n    {\n      \"code\": \"'use strict';\\n \\nvar Gerencianet = require('gn-api-sdk-node');\\nvar options = require('../../credentials');\\n \\nvar body = {\\n  items: [{\\n    name: 'Carnet Item 1',\\n    value: 1000,\\n    amount: 2\\n  }],\\n  customer: {\\n    name: 'Gorbadoc Oldbuck',\\n    email: '[email protected]',\\n    cpf: '94271564656',\\n    birth: '1977-01-15',\\n    phone_number: '5144916523'\\n  },\\n  expire_at: '2022-12-12',\\n  repeats: 12,\\n  split_items: false\\n}\\n \\nvar gerencianet = new Gerencianet(options);\\n \\ngerencianet\\n  .createCarnet({}, body)\\n  .then(console.log)\\n  .catch(console.log)\\n  .done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"from gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n \\nbody = {\\n    'items': [{\\n        'name': 'Carnet Item 1',\\n        'value': 1000,\\n        'amount': 2\\n    }],\\n    'customer': {\\n        'name': 'Gorbadoc Oldbuck',\\n        'email': '[email protected]',\\n        'cpf': '94271564656',\\n        'birth': '1977-01-15',\\n        'phone_number': '5144916523'\\n    },\\n    'repeats': 4,\\n    'expire_at': '2020-12-12'\\n}\\n \\ngn.create_carnet(body=body)\",\n      \"language\": \"python\",\n      \"name\": \"Python\"\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/carnet/json/Create.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/Create.java\\n\\n*/\",\n      \"language\": \"java\",\n      \"name\": \"Java\"\n    },\n    {\n      \"code\": \"dynamic endpoints = new Endpoints(\\\"client_id\\\", \\\"client_secret\\\", true);\\n \\nvar body = new {\\n    items = new [] {\\n        new {\\n            name = \\\"Carnet Item 1\\\",\\n            value = 1000,\\n            amount = 2\\n        }\\n    },\\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    repeats = 4,\\n    expire_at = \\\"2022-12-12\\\",\\n    metadata = new {\\n        custom_id = \\\"my_id\\\",\\n        notification_url = \\\"http://yourdomain.com\\\"\\n    }\\n};\\n \\nvar response = endpoints.CreateCarnet(null, body);\",\n      \"language\": \"csharp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"package 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\\titems := []map[string]interface{}{\\n\\t\\t{\\n\\t\\t\\t\\\"name\\\": \\\"Item 1\\\",\\n\\t\\t\\t\\\"value\\\": 1000,\\n\\t\\t\\t\\\"amount\\\": 1,\\n\\t\\t},\\n\\t\\t{\\n\\t\\t\\t\\\"name\\\": \\\"Item 2\\\",\\n\\t\\t\\t\\\"value\\\": 2000,\\n\\t\\t\\t\\\"amount\\\": 2,\\n\\t\\t},\\n\\t}\\n\\n\\tbody := map[string]interface{} {\\n\\t\\t\\\"items\\\": items,\\n\\t\\t\\\"customer\\\": customer,\\n\\t\\t\\\"expire_at\\\": \\\"2022-12-02\\\",\\n\\t\\t\\\"repeats\\\": 5,\\n\\t\\t\\\"split_items\\\": false,\\n\\t}\\n\\n\\tres, err := gn.CreateCarnet(body)\\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      \"name\": \"Go\"\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 \\nbody = {\\n  expire_at: tomorrow.strftime,\\n  items: [{\\n    name: \\\"Carnet Item 1\\\",\\n    value: 1000,\\n    amount: 2\\n  }],\\n  customer: {\\n    name: \\\"Gorbadoc Oldbuck\\\",\\n    email: \\\"[email protected]\\\",\\n    cpf: \\\"94271564656\\\",\\n    birth: \\\"1977-01-15\\\",\\n    phone_number: \\\"5144916523\\\"\\n  },\\n  repeats: 12,\\n  split_items: false\\n}\\n \\ngerencianet = Gerencianet.new(options)\\ngerencianet.create_carnet(body: body)\",\n      \"language\": \"ruby\",\n      \"name\": \"Ruby\"\n    },\n    {\n      \"code\": \"interface\\nfunction CarnetCreate: String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction CarnetCreate: String;\\nconst\\n      Body_Customer_Address = \\n      '\\\"street\\\": \\\"Via Monte di Dio\\\",'+\\n      '\\\"number\\\": 66,'+\\n      '\\\"neighborhood\\\": \\\"Sao Paulo\\\",'+\\n      '\\\"complement\\\": \\\"\\\",'+\\n      '\\\"city\\\": \\\"Naples\\\",'+\\n      '\\\"state\\\": \\\"SP\\\",'+\\n      '\\\"zipcode\\\": \\\"35400000\\\"';\\n\\n      Body_Customer_Before_Address = \\n      '\\\"email\\\": \\\"[email protected]\\\",'+\\n      '\\\"phone_number\\\": \\\"94271564656\\\",'+\\n      '\\\"birth\\\": \\\"1977-07-17\\\",';\\n\\n      Body_Customer_After_Address = \\n      '\\\"name\\\": \\\"Gorbadoc Oldbuck\\\",     \\\"cpf\\\": \\\"94271564656\\\"';\\n\\n      Body_Customer = \\n      '\\\"customer\\\": { '+Body_Customer_Before_Address + \\n      '\\\"address\\\": {  '+ Body_Customer_Address + ' }, '\\n      +Body_Customer_After_Address + ' }, ';\\n\\n      Body_After_Customer_Line1 = \\n      '\\\"expire_at\\\": \\\"2017-07-10\\\",'+\\n      '\\\"repeats\\\": 4,   \\\"split_items\\\": false,';\\n\\n      Body_Items = \\n      '\\\"items\\\": ['+ \\n        '{'+ \\n          '\\\"name\\\": \\\"Item 1\\\",'+\\n          '\\\"value\\\": 1900,'+\\n          '\\\"amount\\\": 2'+\\n        '},'+\\n        '{'+\\n            '\\\"name\\\": \\\"Item 2\\\",'+\\n            '\\\"value\\\": 3000,'+\\n            '\\\"amount\\\": 1'+     \\n        '}'+\\n      ']';\\n\\n      Body = '{ '+Body_Customer + Body_After_Customer_Line1 + Body_Instructions + Body_Items + ' }';\\n\\nbegin\\n    EnableService( 'GerenciaNet.dll' ); \\n    ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n    GerenciaNetAuthorize(); \\n\\n    Result := ExecuteGerenciaNetRequest( 'createCarnet','','',Body );\\nend;\",\n      \"language\": \"d\",\n      \"name\": \"Delphi\"\n    }\n  ]\n}\n[/block]\n### Dados de entrada e saída na criação do Bolix com o método de pagamento carnê:\n\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"items\\\": [\\n    {\\n      \\\"name\\\": \\\"Meu Produto\\\",\\n      \\\"value\\\": 7500,\\n      \\\"amount\\\": 1\\n    }\\n  ],\\n  \\\"customer\\\": {\\n    \\\"name\\\": \\\"Gorbadoc Oldbuck\\\",\\n    \\\"cpf\\\": \\\"94271564656\\\",\\n    \\\"phone_number\\\": \\\"5144916523\\\"\\n  },\\n  \\\"expire_at\\\": \\\"2022-12-20\\\",\\n  \\\"configurations\\\": {\\n        \\\"fine\\\": 200,\\n        \\\"interest\\\": 33\\n      },\\n  \\\"message\\\": \\\"Este carnê aceita o pagamento por QR Code Pix e por código de barras\\\",\\n  \\\"repeats\\\": 3,\\n  \\\"split_items\\\": false\\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    \\\"carnet_id\\\": 12345, // identificador único do carnê\\n    \\\"status\\\": \\\"up_to_date\\\", // carnê encontra-se em dia, não há nenhuma parcela inadimplente. Assim que o carnê é criado, ele também recebe este status up_to_date. O termo \\\"up_to_date\\\" equivale a \\\"em dia\\\"\\n    \\\"cover\\\": \\\"link_https_capa_do_carne\\\", // link da capa do carnê\\n    \\\"link\\\": \\\"link_https_do_carne\\\", // link do carnê, de acordo com as repetições\\n    \\\"pdf\\\": {\\n      \\\"carnet\\\": \\\"link_https_do_pdf_do_carne\\\", // link do PDF do Bolix (carnê), de acordo com as repetições\\n      \\\"cover\\\": \\\"link_https_do_pdf_da_capa_do_carne\\\" // link do PDF da capa do carnê\\n    },\\n    \\\"charges\\\": [\\n      {\\n        \\\"charge_id\\\": 511813, // número identificador da primeira parcela do carnê\\n        \\\"parcel\\\": \\\"1\\\", // número da parcela do carnê\\n        \\\"status\\\": \\\"waiting\\\", // forma de pagamento selecionada, aguardando a confirmação do pagamento\\n        \\\"value\\\": 7500, // valor, em centavos, da primeira parcela do carnê (7500 equivale a R$ 75,00)\\n        \\\"expire_at\\\": \\\"2022-12-20\\\", // data de vencimento da parcela do carnê no seguinte formato: 2022-12-20 (equivale a 20/12/2022)\\n        \\\"url\\\": \\\"link_https_da_primeira_lamina\\\", // link da primeira parcela (lâmina) do Bolix (carnê)\\n        \\\"pdf\\\": {\\n          \\\"charge\\\": \\\"link_https_da_primeira_lamina\\\" // link do PDF da primeira parcela (lâmina) Bolix (carnê)\\n        },\\n        \\\"barcode\\\": \\\"00000.00000 00000.000000 00000.000000 0 00000000000000\\\", // linha digitável da primeira parcela (lâmina) Bolix (carnê)\\n        \\\"pix\\\":{\\n          \\\"qrcode\\\":\\\"00020101021226990014BR.GOV.BCB.PIX2577qrcodes-pix.gerencianet.com.br/bolix/v2/cobv/0000000000000000000000000000GERENCIANET SA6010OURO PRETO62070503***63047\\\", // BRCode ou copia e cola\\n          \\\"qrcode_image\\\":\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy 53My5vcmcv MjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NSA0NS...\\n      }\\n    },\\n      {\\n        \\\"charge_id\\\": 511814, // número identificador da segunda parcela do carnê\\n        \\\"parcel\\\": \\\"2\\\", // número da parcela do carnê\\n        \\\"status\\\": \\\"waiting\\\", // forma de pagamento selecionada, aguardando a confirmação do pagamento\\n        \\\"value\\\": 7500, // valor, em centavos, da segunda parcela do carnê (7500 equivale a R$ 75,00)\\n        \\\"expire_at\\\": \\\"2023-01-20\\\", // data de vencimento da parcela do carnê no seguinte formato: 2023-01-20 (equivale a 20/01/2023)\\n        \\\"url\\\": \\\"link_https_da_segunda_lamina\\\", // link da segunda parcela (lâmina) do carnê\\n        \\\"pdf\\\": {\\n          \\\"charge\\\": \\\"link_https_da_segunda_lamina\\\" // link do PDF da segunda parcela (lâmina) do Bolix (carnê)\\n        },\\n        \\\"barcode\\\": \\\"00000.00000 00000.000000 00000.000000 0 00000000000000\\\", // linha digitável da segunda parcela (lâmina) do Bolix (carnê)\\n        \\\"pix\\\":{\\n          \\\"qrcode\\\":\\\"00020101021226990014BR.GOV.BCB.PIX2577qrcodes-pix.gerencianet.com.br/bolix/v2/cobv/0000000000000000000000000000GERENCIANET SA6010OURO PRETO62070503***63047\\\", // BRCode ou copia e cola\\n          \\\"qrcode_image\\\":\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy 53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NSA0NS...\\n      }\\n      },\\n      {\\n        \\\"charge_id\\\": 511815, // número identificador da terceira parcela do carnê\\n        \\\"parcel\\\": \\\"3\\\", // número da parcela do carnê\\n        \\\"status\\\": \\\"waiting\\\", // forma de pagamento selecionada, aguardando a confirmação do pagamento\\n        \\\"value\\\": 7500, // valor, em centavos, da terceira parcela do carnê (7500 equivale a R$ 75,00)\\n        \\\"expire_at\\\": \\\"2023-02-20\\\", // data de vencimento da parcela do carnê no seguinte formato: 2023-02-20 (equivale a 20/02/2023)\\n        \\\"url\\\": \\\"link_https_da_terceira_lamina\\\", // link da terceira parcela (lâmina) do carnê\\n        \\\"pdf\\\": {\\n          \\\"charge\\\": \\\"link_https_da_terceira_lamina\\\" // link do PDF da terceira parcela (lâmina) Bolix (carnê)\\n        },\\n        \\\"barcode\\\": \\\"00000.00000 00000.000000 00000.000000 0 00000000000000\\\", // linha digitável da terceira parcela (lâmina) Bolix (carnê)\\n        \\\"pix\\\":{\\n          \\\"qrcode\\\":\\\"00020101021226990014BR.GOV.BCB.PIX2577qrcodes-pix.gerencianet.com.br/bolix/v2/cobv/0000000000000000000000000000GERENCIANET SA6010OURO PRETO62070503***63047\\\", // BRCode ou copia e cola\\n          \\\"qrcode_image\\\":\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy 53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NSA0NS...\\n      }\\n      }\\n    ]\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de saída\"\n    }\n  ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/Carnet\"\n    \"items\"\n        \"name\"\n        \"value\"\n        \"amount\"\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    \"repeats\"\n    \"split_items\"\n    \"metadata\"\n        \"custom_id\"\n        \"notification_url\"\n    \"configurations\"\n        \"fine\"\n        \"interest\"\n    \"message\"\n    \"discount\"\n        \"type\"\n            \"percentage\",\n            \"currency\"\n        \"value\"\n    \"conditional_discount\"\n        \"type\"\n            \"percentage\",\n            \"currency\"\n        \"value\"\n        \"until_date\"</pre> \n\nPara verificar mais detalhes, <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet\" target=\"_blank\">acesse aqui</a> e explore em nosso Playground.\n\n<br>\n\n## b) Atributos que podem ser usados para criar um carnê:\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    \"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    \"0-3\": \"Object\",\n    \"1-0\": \"<code>customer</code>\",\n    \"1-1\": \"Dados pessoais do pagador.\\n\\n<span class=\\\"tab1\\\">*Atributos de customer*</span>\\n\\n<div class=\\\"tab2\\\"><code>name<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // nome <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>cpf<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // CPF do cliente (sem pontos, vírgulas ou hífen) <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>email</code> // Endereço de email válido do cliente <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>phone_number</code> // Telefone válido do cliente, sem caracteres especiais <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>birth</code> // Data de Nascimento (data válida em formato YYYY-MM-DD) <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>address</code> // Endereço do Cliente <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(Object)</strong></span> (<a href=\\\"https://dev.gerencianet.com.br/docs/definir-enderecos\\\" target=\\\"_blank\\\">mais informações</a>)</div>\\n\\n<div class=\\\"tab2\\\"><code>juridical_person</code> // Dados de pessoa jurídica <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(Object) (<a href=\\\"https://dev.gerencianet.com.br/docs/pagar-com-pessoa-juridica\\\" target=\\\"_blank\\\">mais informações</a>)</strong></span></div>\",\n    \"1-2\": \"Sim\",\n    \"1-3\": \"Object\",\n    \"2-0\": \"<code>expire_at</code>\",\n    \"2-1\": \"Data de vencimento do carnê. O intervalo das parcelas de um carnê é sempre de 1 (um) mês entre elas.\\n<code>Formato: YYYY-MM-DD</code>\",\n    \"2-2\": \"Sim\",\n    \"2-3\": \"String\",\n    \"3-0\": \"<code>repeats</code>\",\n    \"3-1\": \"Número de parcelas do carnê.\\n<code>Mínimo de 2 parcelas e máximo de 12 parcelas</code>\",\n    \"3-2\": \"Sim\",\n    \"3-3\": \"Integer\",\n    \"4-0\": \"<code>split_items</code>\",\n    \"4-1\": \"Dividir itens entre as parcelas. Define se os itens do carnê serão divididos entre as parcelas (true), ou se o valor de cada parcela será o valor total dos itens (false).\",\n    \"4-2\": \"Não\",\n    \"4-3\": \"Boolean\",\n    \"5-0\": \"<code>metadata</code>\",\n    \"5-1\": \"Define dados específicos da transação.\\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    \"5-2\": \"Não\",\n    \"5-3\": \"Object\",\n    \"6-0\": \"<code>configurations</code>\",\n    \"6-1\": \"Permite incluir no carnê 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,33%, 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    \"6-2\": \"Não\",\n    \"6-3\": \"Object\",\n    \"7-0\": \"<code>message</code>\",\n    \"7-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\\\">Máximo de 80 caracteres. String.</span></strong>\",\n    \"7-2\": \"Não\",\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  },\n  \"cols\": 4,\n  \"rows\": 10\n}\n[/block]\n<strong class=\"atributo-obrigatorio-texto\">* valor obrigatório</strong>\n<br>\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Pagamento do Bolix 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 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 Bolix 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# 4. Outros endpoints Bolix\n\nExistem outros endpoints e métodos relacionados a pagamento via boleto bancário e carnê que estão disponíveis na API e podem ser explorados pelo integrador. Confira a relação completa:\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- [Retornar informações sobre um carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-1-retornar-informa-es-sobre-um-carn-)\n\n- [Alterar URL de notificação (notification_url) e/ou custom_id de carnês](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-2-alterar-url-de-notifica-o-notification_url-e-ou-custom_id-de-carn-s)\n\n- [Alterar data de vencimento de parcela do carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-3-alterar-data-de-vencimento-de-parcela-do-carn-)\n\n- [Cancelar um carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-4-cancelar-um-carn-)\n\n- [Cancelar parcela específica de carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-5-cancelar-parcela-espec-fica-de-carn-)\n\n- [Reenviar carnê por e-mail](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-6-reenviar-carn-por-e-mail)\n\n- [Reenviar parcela específica de carnê por e-mail](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-7-reenviar-parcela-espec-fica-de-carn-por-e-mail)\n\n- [Acrescentar informações ao histórico do carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-8-acrescentar-informa-es-ao-hist-rico-do-carn-)\n\n# 5. Próximos Passos\n\nExistem outras soluções da API que permitem a utilização do Bolix com o método de pagamento por **boleto bancário**, quer conhecê-las?\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/v1.1.0/docs/dividindo-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":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"60ec386b3dc8b50016294797","createdAt":"2021-07-12T12:41:15.238Z","user":"5e8b36bc27ee9b00181b36bf","category":{"sync":{"isSync":false,"url":""},"pages":[],"title":"Pagar com Bolix","slug":"pagar-com-bolix","order":8,"from_sync":false,"reference":false,"_id":"60ec37c637005f015e54174e","createdAt":"2021-07-12T12:38:30.266Z","version":"606f2ca7c5ba9100787834c6","project":"575aeffae12cf20e002f306c","__v":0},"version":{"version":"1.1.0","version_clean":"1.1.0","codename":"2021","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["606f2ca6c5ba91007878342b","575af039a083950e004487f7","575af5c7ba4ed70e000ca288","606f2ca6c5ba91007878342c","606f2ca6c5ba91007878342d","606f2ca6c5ba91007878342e","606f2ca6c5ba91007878342f","5761a63d207db7170022fc14","5761b9a2b65324200072d79e","576832939f0bf4190014ffdf","576832c09f0bf4190014ffe1","576832cba151c10e004316f0","576832d5bb15f40e00a288ec","576832e107b1f30e0039c645","606f2ca6c5ba910078783430","606f2ca6c5ba910078783431","5783f78c5cbce30e0074e2b7","606f2ca6c5ba910078783432","606f2ca6c5ba910078783433","606f2ca6c5ba910078783434","606f2ca6c5ba910078783435","606f2ca6c5ba910078783436","606f2ca6c5ba910078783437","578529f887c9280e0090394b","606f2ca6c5ba910078783438","606f2ca6c5ba910078783439","606f2ca6c5ba91007878343a","606f2ca6c5ba91007878343b","606f2ca6c5ba91007878343c","606f2ca6c5ba91007878343d","606f2ca6c5ba91007878343e","606f2ca6c5ba91007878343f","606f2ca6c5ba910078783440","606f2ca6c5ba910078783441","60d61f026ddc3901a32ee5f1","60ec37c637005f015e54174e","61473375119247002a9c14d7"],"_id":"606f2ca7c5ba9100787834c6","project":"575aeffae12cf20e002f306c","createdAt":"2016-06-10T16:51:06.080Z","releaseDate":"2016-06-10T16:51:06.080Z","__v":3,"forked_from":"575aeffae12cf20e002f306f"},"project":"575aeffae12cf20e002f306c","__v":0,"parentDoc":null}

Gerar Bolix

Passo a passo para gerar Bolix na API Gerencianet, o Bolix permite gerar cobranças com o pix no boleto, possibilitando mais de uma forma de pagamento aos clientes

O Bolix, pix no boleto, permite gerar transações do tipo boleto e carnê para seu cliente com o acréscimo do Pix como forma de pagamento. O Bolix quando emitido na forma de boleto pode ser gerado via API em um passo, também conhecido como *One Step* ou em dois passos, o *Two Steps*. Também é disponibilizado a emissão do Bolix como carnê, que consiste em um conjunto de transações (parcelas) geradas em lote e com forma de pagamento já definida com vencimento mensal. Todos os fluxos e informações para emissões do Bolix tanto como boleto bancário quanto carnê estão detalhados a seguir: 1. [Criando Bolix com o método de pagamento boleto bancário, transação em *One Step* (Um passo)](#section-1-cria-o-do-bolix-boleto-com-pix-em-one-step-um-passo-). 2. [Criando Bolix com o método de pagamento boleto bancário, transação em *Two Steps* (Dois passos)](#section-2-cria-o-do-bolix-boleto-com-pix-em-two-steps-dois-passos-). 3. [Criando Bolix com o método de pagamento carnê](#section-3-gerando-um-bolix-com-o-m-todo-de-pagamento-carn-). [block:callout] { "type": "danger", "title": "Ativação do Bolix", "body": "Para que você consiga emitir cobranças Bolix, boleto com pix, primeiramente deve-se ativar o Bolix em sua conta Gerencianet, siga estes passos:\n\n1- Acesse sua Conta Digital na <a href=\"https://sistema.gerencianet.com.br/\" target=\"_blank\" title=\"Acessar a conta Gerencianet\">plataforma web</a>.\n2- Clique no menu Cobranças > Configurações > Boletos Bancários e Carnês.\n3- Por fim, habilite a função “**Bolix**” como nesta <a href=\"https://s3.amazonaws.com/gerencianet-pub-prod-1/printscreen/2021/07/12/matheus.rodrigues/c4c98a-4bdd27a8-c0f2-4580-ab12-feccde184c96.png\" target=\"_blank\" title=\"Passo a passo para habilitar o Bolix\">imagem</a>." } [/block] [block:callout] { "type": "warning", "body": "O restante desta página apresenta os procedimentos detalhados para criação do Bolix com os métodos de pagamento boleto bancário e carnê, mas você precisa instalar uma de nossas bibliotecas em seu servidor para executar os códigos de exemplo. Certifique-se de que a SDK da Gerencianet foi instalada.", "title": "SDK's" } [/block] # 1. Criação do Bolix, boleto com pix, em *One Step* (Um passo) 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: [block:code] { "codes": [ { "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 onde vamos notificá-lo, independente se for pago pelo código de barras do boleto quanto pelo QR Code.\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' => '2022-09-01', // data de vencimento do titulo\n 'message' => 'Pague pelo código de barras ou pelo QR Code', // 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 = Bolix)\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 }", "language": "php", "name": "PHP" }, { "code": "oneStep Node.JS\n'use strict';\n\nvar Gerencianet = require('gn-api-sdk-node');\nvar options = require('../../credentials');\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: '94271564656', \n phone_number: '5144916523'\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();", "language": "javascript", "name": "NodeJS" }, { "code": "# encoding: utf-8\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': 1\n }],\n 'shippings': [{\n 'name': \"Default Shipping Cost\",\n 'value': 100\n }],\n 'payment': {\n 'banking_billet': {\n 'expire_at': '2022-12-12',\n 'customer': {\n 'name': \"Gorbadoc Oldbuck\",\n 'email': \"[email protected]\",\n 'cpf': \"94271564656\",\n 'birth': \"1977-01-15\",\n 'phone_number': \"62986070247\"\n \n },\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\nresponse = gn.create_charge_onestep(params=None, body=body)\nprint(response)", "language": "python", "name": "Python" }, { "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\", \"0007\");\n \n //desconto \n JSONObject discount = new JSONObject();\n discount.put(\"type\",\"currency\");\n discount.put(\"value\",599);\n \n //juros e multa\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\", \"2022-08-30\");\n \n \n JSONObject bankingBillet = new JSONObject();\n bankingBillet.put(\"expire_at\", \"2022-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}", "language": "java", "name": "Java" }, { "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,\nCredentials.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 = \"[email protected]\",\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}", "language": "csharp", "name": ".NET" }, { "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\": \"94271564656\",\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\": \"2022-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}", "language": "go", "name": "Go" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: CREDENTIALS::SANDBOX\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: \"94271564656\",\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)", "language": "ruby", "name": "Ruby" }, { "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\": \"2022-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;", "language": "d", "name": "Delphi" } ] } [/block] <br> ### Dados de entrada e saída do Bolix em *One Step*: [block:code] { "codes": [ { "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}", "language": "json", "name": "Dados de entrada" }, { "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}", "language": "json", "name": "Dados de saída" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"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"</pre> ## b) Atributos que podem ser utilizados para criar um título: <br> *Objeto **items*** [block:parameters] { "data": { "0-0": "<code>items</code>", "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>", "0-2": "Sim", "0-3": "Array", "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "1-0": "<code>shippings</code>", "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>", "1-2": "Não", "1-3": "Array", "2-0": "<code>metadata</code>", "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>", "2-2": "Não", "2-3": "Object" }, "cols": 4, "rows": 3 } [/block] <br> *Objeto **Payment*** [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>banking_billet</code>", "0-1": "Forma de pagamento através de \"boleto bancário\"", "0-2": "Sim", "0-3": "Objeto **Banking_Billet**" }, "cols": 4, "rows": 1 } [/block] <br> *Objeto **Banking_Billet*** [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "1-0": "<code>cpf</code>", "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>", "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.*", "1-3": "String", "2-0": "<code>email</code>", "2-1": "Email do cliente.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Máximo de 255 caracteres. Ex.: [email protected]</span></strong>", "2-2": "Não", "2-3": "String", "3-0": "<code>phone_number</code>", "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>", "4-0": "<code>birth</code>", "4-1": "Data de nascimento do cliente.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Formato: YYYY-MM-DD</span></strong>", "5-0": "<code>address</code>", "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>", "6-0": "<code>juridical_person</code>", "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>", "7-0": "<code>expire_at</code>", "7-1": "Data de vencimento do boleto.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Formato: YYYY-MM-DD</span></strong>", "8-0": "<code>discount</code>", "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>", "9-0": "<code>conditional_discount</code>", "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>", "10-0": "<code>configurations</code>", "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>", "3-2": "Não", "4-2": "Não", "5-2": "Não", "6-2": "Não", "7-2": "Sim", "8-2": "Não", "9-2": "Não", "10-2": "Não", "3-3": "String", "4-3": "String", "5-3": "Object", "6-3": "Object", "7-3": "String", "8-3": "Object", "9-3": "Object", "10-3": "Object", "0-0": "<code>name</code>", "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>", "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.*", "0-3": "String" }, "cols": 4, "rows": 11 } [/block] <strong style="font-size:10px;color:#ea6e1c">* valor obrigatório</strong> # 2. Criação do Bolix, boleto com pix, em *Two Steps* (Dois passos) 1. [Crie a transação](#section-2-1-criar-transa-o), informando o item/produto/serviço, valor, quantidade, etc; 2. [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. 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](https://dev.gerencianet.com.br/docs/instalacao-da-api). <hr> ## 2.1. Criar transação 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 <code>charge_id</code>, 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 <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. Para gerar uma transação, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/charge</code>. O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__ . '/../../vendor/autoload.php';\n\nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n\n$file = file_get_contents(__DIR__ . '/../config.json');\n$options = json_decode($file, true);\nunset($options['pix_cert']);\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}", "language": "php", "name": "PHP" }, { "code": "'use strict';\n\nvar Gerencianet = require('gn-api-sdk-node');\nvar options = require('../../credentials');\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();", "language": "javascript", "name": "NodeJS" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\n\ngn = Gerencianet(CREDENTIALS)\n\nbody = {\n 'items': [{\n 'name': \"Product 1\",\n 'value': 1100,\n 'amount': 2\n }],\n 'shippings': [{\n 'name': \"Default Shipping Cost\",\n 'value': 100\n }]\n}\n\nresponse = gn.create_charge(body=body)\nprint(response)", "language": "python", "name": "Python" }, { "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*/", "language": "java", "name": "Java" }, { "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);", "language": "csharp", "name": ".NET" }, { "code": "package 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\tbody := map[string]interface{} {\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.CreateCharge(body)\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go", "name": "Go" }, { "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", "language": "ruby", "name": "Ruby" }, { "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;", "language": "d", "name": "Delphi" } ] } [/block] ### Dados de entrada e saída na criação da transação: [block:code] { "codes": [ { "code": "{\n \"items\": [\n {\n \"name\": \"Meu Produto\",\n \"value\": 8900,\n \"amount\": 1\n }\n ]\n}", "language": "json", "name": "Dados de entrada" }, { "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}", "language": "json", "name": "Dados de saída" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/Charge" "items" "name" "value" "amount" "marketplace" "payee_code" "percentage" "shippings" "name" "value" "payee_code" "metadata" "custom_id" "notification_url"</pre> Para verificar mais detalhes, <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge" target="_blank">acesse aqui</a> e explore em nosso Playground. <br> ## b) Atributos que podem ser utilizados para criar uma transação: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>items</code>", "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>", "0-2": "Sim", "0-3": "Array", "1-0": "<code>shippings</code>", "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>", "1-2": "Não", "1-3": "Array", "2-0": "<code>metadata</code>", "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>", "2-2": "Não", "2-3": "Object" }, "cols": 4, "rows": 3 } [/block] <strong class="atributo-obrigatorio-texto">* valor obrigatório</strong> <br> <hr> ## 2.2. Associar à forma de pagamento via boleto Com a transação gerada com sucesso, agora vamos associar com a forma de pagamento <code>banking_billet</code> (boleto bancário) e assim gerar o Bolix. Para tal, deverá ser informado o <code>charge_id</code> 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 <code>new</code> para <code>waiting</code>. 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 <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. O boleto bancário que será gerado já vem com a forma de pagamento Pix inclusa. O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__ . '/../../vendor/autoload.php';\n\nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n\n$file = file_get_contents(__DIR__ . '/../config.json');\n$options = json_decode($file, true);\nunset($options['pix_cert']);\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' => '2022-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}", "language": "php", "name": "PHP" }, { "code": "'use strict';\n\nvar moment = require('moment');\nvar Gerencianet = require('gn-api-sdk-node');\nvar options = require('../../credentials');\n\n\nvar tomorrow = moment()\n .add(1, 'days')\n .format('YYYY-MM-DD');\n\nvar params = {\n id: 0\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: '94271564656',\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();", "language": "javascript", "name": "NodeJs" }, { "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)", "language": "python", "name": "Python" }, { "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*/s", "language": "java", "name": "Java" }, { "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);", "language": "csharp", "name": ".NET" }, { "code": "package 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\": \"94271564656\",\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\": \"2022-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 da transação\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go", "name": "Go" }, { "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)", "language": "ruby", "name": "Ruby" }, { "code": "", "language": "d", "name": "Delphi" } ] } [/block] ### Dados de entrada e saída na criação da transação: [block:code] { "codes": [ { "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}", "language": "json", "name": "Dados de entrada" }, { "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}", "language": "json", "name": "Dados de saída" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"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"</pre> Para 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. <br> ## b) Atributos que podem ser utilizados para gerar um Bolix, pix no boleto bancário: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-3": "Objeto **Payment**", "0-2": "Sim", "0-1": "Tag raiz", "0-0": "<code>payment</code>" }, "cols": 4, "rows": 1 } [/block] <br> *Objeto **Payment*** [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>banking_billet</code>", "0-1": "Forma de pagamento através de \"boleto bancário\"", "0-2": "Sim", "0-3": "Objeto **Banking_Billet**" }, "cols": 4, "rows": 1 } [/block] <br> *Objeto **Banking_Billet*** [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>name</code>", "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>", "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.*", "0-3": "String", "1-0": "<code>cpf</code>", "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>", "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.*", "1-3": "String", "2-0": "<code>email</code>", "2-1": "Email do cliente.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Máximo de 255 caracteres. Ex.: [email protected]</span></strong>", "2-2": "Não", "2-3": "String", "3-0": "<code>phone_number</code>", "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>", "3-2": "Não", "3-3": "String", "4-0": "<code>birth</code>", "4-1": "Data de nascimento do cliente.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Formato: YYYY-MM-DD</span></strong>", "4-2": "Não", "4-3": "String", "5-0": "<code>address</code>", "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>", "5-2": "Não", "5-3": "Object", "6-0": "<code>juridical_person</code>", "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>", "6-2": "Não", "6-3": "Object", "7-0": "<code>expire_at</code>", "7-1": "Data de vencimento do boleto.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Formato: YYYY-MM-DD</span></strong>", "7-2": "Sim", "7-3": "String", "8-0": "<code>discount</code>", "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>", "8-2": "Não", "8-3": "Object", "9-0": "<code>conditional_discount</code>", "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>", "9-2": "Não", "9-3": "Object", "10-0": "<code>configurations</code>", "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>", "10-2": "Não", "10-3": "Object", "11-0": "<code>message</code>", "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>", "11-2": "Não", "11-3": "String" }, "cols": 4, "rows": 12 } [/block] <strong style="font-size:10px;color:#ea6e1c">* valor obrigatório</strong> # 3. Gerando um Bolix com o método de pagamento carnê O carnê é um método de pagamento que gera um conjunto de transações (parcelas) com as mesmas informações de pagamento e do cliente em todas elas, as parcelas de um carnê vencem mensalmente, de acordo com a data definida pelo integrador. Para gerar um carnê, você precisa informar os seguintes dados: - Itens (ou serviço) oferecido; - Data de vencimento da 1ª parcela; - Número de parcelas (repetições). A seguir, um código de exemplo de criação de um Bolix com o método de pagamento carnê utilizando as SDK's disponíveis. Note que já estamos definindo os itens, os dados do cliente, data de vencimento da primeira parcela do carnê e a quantidade de repetições (em meses): [block:code] { "codes": [ { "code": "<?php\n\nrequire __DIR__ . '/../../vendor/autoload.php';\n\nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n\n$file = file_get_contents(__DIR__ . '/../config.json');\n$options = json_decode($file, true);\nunset($options['pix_cert']);\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$customer = [\n 'name' => 'Gorbadoc Oldbuck', // nome do cliente\n 'cpf' => '94271564656' , // cpf do cliente\n 'phone_number' => '5144916523' // telefone do cliente\n];\n\n// Exemplo para receber notificações da alteração do status do carne.\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,\n// 'customer' => $customer,\n// 'expire_at' => '2022-12-02',\n// 'repeats' => 5,\n// 'split_items' => false,\n// 'metadata' => $metadata\n// ];\n\n$body = [\n 'items' => $items,\n 'customer' => $customer,\n 'expire_at' => '2022-12-02', // data de vencimento da primeira parcela do carnê\n 'repeats' => 5, // número de parcelas do carnê\n 'split_items' => false // Define se os itens do carnê serão divididos entre as parcelas (true), ou se o valor de cada parcela será o valor total dos itens (false)\n];\n\ntry {\n $api = new Gerencianet($options);\n $carnet = $api->createCarnet([], $body);\n \n print_r($carnet);\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", "name": "PHP" }, { "code": "'use strict';\n \nvar Gerencianet = require('gn-api-sdk-node');\nvar options = require('../../credentials');\n \nvar body = {\n items: [{\n name: 'Carnet Item 1',\n value: 1000,\n amount: 2\n }],\n customer: {\n name: 'Gorbadoc Oldbuck',\n email: '[email protected]',\n cpf: '94271564656',\n birth: '1977-01-15',\n phone_number: '5144916523'\n },\n expire_at: '2022-12-12',\n repeats: 12,\n split_items: false\n}\n \nvar gerencianet = new Gerencianet(options);\n \ngerencianet\n .createCarnet({}, body)\n .then(console.log)\n .catch(console.log)\n .done();", "language": "javascript", "name": "NodeJS" }, { "code": "from gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n \nbody = {\n 'items': [{\n 'name': 'Carnet Item 1',\n 'value': 1000,\n 'amount': 2\n }],\n 'customer': {\n 'name': 'Gorbadoc Oldbuck',\n 'email': '[email protected]',\n 'cpf': '94271564656',\n 'birth': '1977-01-15',\n 'phone_number': '5144916523'\n },\n 'repeats': 4,\n 'expire_at': '2020-12-12'\n}\n \ngn.create_carnet(body=body)", "language": "python", "name": "Python" }, { "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/carnet/json/Create.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/Create.java\n\n*/", "language": "java", "name": "Java" }, { "code": "dynamic endpoints = new Endpoints(\"client_id\", \"client_secret\", true);\n \nvar body = new {\n items = new [] {\n new {\n name = \"Carnet Item 1\",\n value = 1000,\n amount = 2\n }\n },\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 repeats = 4,\n expire_at = \"2022-12-12\",\n metadata = new {\n custom_id = \"my_id\",\n notification_url = \"http://yourdomain.com\"\n }\n};\n \nvar response = endpoints.CreateCarnet(null, body);", "language": "csharp", "name": ".NET" }, { "code": "package 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\titems := []map[string]interface{}{\n\t\t{\n\t\t\t\"name\": \"Item 1\",\n\t\t\t\"value\": 1000,\n\t\t\t\"amount\": 1,\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Item 2\",\n\t\t\t\"value\": 2000,\n\t\t\t\"amount\": 2,\n\t\t},\n\t}\n\n\tbody := map[string]interface{} {\n\t\t\"items\": items,\n\t\t\"customer\": customer,\n\t\t\"expire_at\": \"2022-12-02\",\n\t\t\"repeats\": 5,\n\t\t\"split_items\": false,\n\t}\n\n\tres, err := gn.CreateCarnet(body)\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go", "name": "Go" }, { "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 \nbody = {\n expire_at: tomorrow.strftime,\n items: [{\n name: \"Carnet Item 1\",\n value: 1000,\n amount: 2\n }],\n customer: {\n name: \"Gorbadoc Oldbuck\",\n email: \"[email protected]\",\n cpf: \"94271564656\",\n birth: \"1977-01-15\",\n phone_number: \"5144916523\"\n },\n repeats: 12,\n split_items: false\n}\n \ngerencianet = Gerencianet.new(options)\ngerencianet.create_carnet(body: body)", "language": "ruby", "name": "Ruby" }, { "code": "interface\nfunction CarnetCreate: String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction CarnetCreate: String;\nconst\n Body_Customer_Address = \n '\"street\": \"Via Monte di Dio\",'+\n '\"number\": 66,'+\n '\"neighborhood\": \"Sao Paulo\",'+\n '\"complement\": \"\",'+\n '\"city\": \"Naples\",'+\n '\"state\": \"SP\",'+\n '\"zipcode\": \"35400000\"';\n\n Body_Customer_Before_Address = \n '\"email\": \"[email protected]\",'+\n '\"phone_number\": \"94271564656\",'+\n '\"birth\": \"1977-07-17\",';\n\n Body_Customer_After_Address = \n '\"name\": \"Gorbadoc Oldbuck\", \"cpf\": \"94271564656\"';\n\n Body_Customer = \n '\"customer\": { '+Body_Customer_Before_Address + \n '\"address\": { '+ Body_Customer_Address + ' }, '\n +Body_Customer_After_Address + ' }, ';\n\n Body_After_Customer_Line1 = \n '\"expire_at\": \"2017-07-10\",'+\n '\"repeats\": 4, \"split_items\": false,';\n\n Body_Items = \n '\"items\": ['+ \n '{'+ \n '\"name\": \"Item 1\",'+\n '\"value\": 1900,'+\n '\"amount\": 2'+\n '},'+\n '{'+\n '\"name\": \"Item 2\",'+\n '\"value\": 3000,'+\n '\"amount\": 1'+ \n '}'+\n ']';\n\n Body = '{ '+Body_Customer + Body_After_Customer_Line1 + Body_Instructions + Body_Items + ' }';\n\nbegin\n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize(); \n\n Result := ExecuteGerenciaNetRequest( 'createCarnet','','',Body );\nend;", "language": "d", "name": "Delphi" } ] } [/block] ### Dados de entrada e saída na criação do Bolix com o método de pagamento carnê: [block:code] { "codes": [ { "code": "{\n \"items\": [\n {\n \"name\": \"Meu Produto\",\n \"value\": 7500,\n \"amount\": 1\n }\n ],\n \"customer\": {\n \"name\": \"Gorbadoc Oldbuck\",\n \"cpf\": \"94271564656\",\n \"phone_number\": \"5144916523\"\n },\n \"expire_at\": \"2022-12-20\",\n \"configurations\": {\n \"fine\": 200,\n \"interest\": 33\n },\n \"message\": \"Este carnê aceita o pagamento por QR Code Pix e por código de barras\",\n \"repeats\": 3,\n \"split_items\": false\n}", "language": "json", "name": "Dados de entrada" }, { "code": "{\n \"code\": 200, // retorno HTTP \"200\" informando que o pedido foi bem sucedido\n \"data\": {\n \"carnet_id\": 12345, // identificador único do carnê\n \"status\": \"up_to_date\", // carnê encontra-se em dia, não há nenhuma parcela inadimplente. Assim que o carnê é criado, ele também recebe este status up_to_date. O termo \"up_to_date\" equivale a \"em dia\"\n \"cover\": \"link_https_capa_do_carne\", // link da capa do carnê\n \"link\": \"link_https_do_carne\", // link do carnê, de acordo com as repetições\n \"pdf\": {\n \"carnet\": \"link_https_do_pdf_do_carne\", // link do PDF do Bolix (carnê), de acordo com as repetições\n \"cover\": \"link_https_do_pdf_da_capa_do_carne\" // link do PDF da capa do carnê\n },\n \"charges\": [\n {\n \"charge_id\": 511813, // número identificador da primeira parcela do carnê\n \"parcel\": \"1\", // número da parcela do carnê\n \"status\": \"waiting\", // forma de pagamento selecionada, aguardando a confirmação do pagamento\n \"value\": 7500, // valor, em centavos, da primeira parcela do carnê (7500 equivale a R$ 75,00)\n \"expire_at\": \"2022-12-20\", // data de vencimento da parcela do carnê no seguinte formato: 2022-12-20 (equivale a 20/12/2022)\n \"url\": \"link_https_da_primeira_lamina\", // link da primeira parcela (lâmina) do Bolix (carnê)\n \"pdf\": {\n \"charge\": \"link_https_da_primeira_lamina\" // link do PDF da primeira parcela (lâmina) Bolix (carnê)\n },\n \"barcode\": \"00000.00000 00000.000000 00000.000000 0 00000000000000\", // linha digitável da primeira parcela (lâmina) Bolix (carnê)\n \"pix\":{\n \"qrcode\":\"00020101021226990014BR.GOV.BCB.PIX2577qrcodes-pix.gerencianet.com.br/bolix/v2/cobv/0000000000000000000000000000GERENCIANET SA6010OURO PRETO62070503***63047\", // BRCode ou copia e cola\n \"qrcode_image\":\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy 53My5vcmcv MjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NSA0NS...\n }\n },\n {\n \"charge_id\": 511814, // número identificador da segunda parcela do carnê\n \"parcel\": \"2\", // número da parcela do carnê\n \"status\": \"waiting\", // forma de pagamento selecionada, aguardando a confirmação do pagamento\n \"value\": 7500, // valor, em centavos, da segunda parcela do carnê (7500 equivale a R$ 75,00)\n \"expire_at\": \"2023-01-20\", // data de vencimento da parcela do carnê no seguinte formato: 2023-01-20 (equivale a 20/01/2023)\n \"url\": \"link_https_da_segunda_lamina\", // link da segunda parcela (lâmina) do carnê\n \"pdf\": {\n \"charge\": \"link_https_da_segunda_lamina\" // link do PDF da segunda parcela (lâmina) do Bolix (carnê)\n },\n \"barcode\": \"00000.00000 00000.000000 00000.000000 0 00000000000000\", // linha digitável da segunda parcela (lâmina) do Bolix (carnê)\n \"pix\":{\n \"qrcode\":\"00020101021226990014BR.GOV.BCB.PIX2577qrcodes-pix.gerencianet.com.br/bolix/v2/cobv/0000000000000000000000000000GERENCIANET SA6010OURO PRETO62070503***63047\", // BRCode ou copia e cola\n \"qrcode_image\":\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy 53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NSA0NS...\n }\n },\n {\n \"charge_id\": 511815, // número identificador da terceira parcela do carnê\n \"parcel\": \"3\", // número da parcela do carnê\n \"status\": \"waiting\", // forma de pagamento selecionada, aguardando a confirmação do pagamento\n \"value\": 7500, // valor, em centavos, da terceira parcela do carnê (7500 equivale a R$ 75,00)\n \"expire_at\": \"2023-02-20\", // data de vencimento da parcela do carnê no seguinte formato: 2023-02-20 (equivale a 20/02/2023)\n \"url\": \"link_https_da_terceira_lamina\", // link da terceira parcela (lâmina) do carnê\n \"pdf\": {\n \"charge\": \"link_https_da_terceira_lamina\" // link do PDF da terceira parcela (lâmina) Bolix (carnê)\n },\n \"barcode\": \"00000.00000 00000.000000 00000.000000 0 00000000000000\", // linha digitável da terceira parcela (lâmina) Bolix (carnê)\n \"pix\":{\n \"qrcode\":\"00020101021226990014BR.GOV.BCB.PIX2577qrcodes-pix.gerencianet.com.br/bolix/v2/cobv/0000000000000000000000000000GERENCIANET SA6010OURO PRETO62070503***63047\", // BRCode ou copia e cola\n \"qrcode_image\":\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy 53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NSA0NS...\n }\n }\n ]\n }\n}", "language": "json", "name": "Dados de saída" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/Carnet" "items" "name" "value" "amount" "customer" "name" "cpf" "email" "phone_number" "birth" "address" "street" "number" "neighborhood" "zipcode" "city" "complement" "state" "juridical_person" "corporate_name" "cnpj" "expire_at" "repeats" "split_items" "metadata" "custom_id" "notification_url" "configurations" "fine" "interest" "message" "discount" "type" "percentage", "currency" "value" "conditional_discount" "type" "percentage", "currency" "value" "until_date"</pre> Para verificar mais detalhes, <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet" target="_blank">acesse aqui</a> e explore em nosso Playground. <br> ## b) Atributos que podem ser usados para criar um carnê: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>items</code>", "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>", "0-2": "Sim", "0-3": "Object", "1-0": "<code>customer</code>", "1-1": "Dados pessoais do pagador.\n\n<span class=\"tab1\">*Atributos de customer*</span>\n\n<div class=\"tab2\"><code>name<strong class=\"atributo-obrigatorio\">*</strong></code> // nome <strong class=\"descricao-atributo\"><span class=\"atributo\">(String)</strong></span></div>\n\n<div class=\"tab2\"><code>cpf<strong class=\"atributo-obrigatorio\">*</strong></code> // CPF do cliente (sem pontos, vírgulas ou hífen) <strong class=\"descricao-atributo\"><span class=\"atributo\">(String)</strong></span></div>\n\n<div class=\"tab2\"><code>email</code> // Endereço de email válido do cliente <strong class=\"descricao-atributo\"><span class=\"atributo\">(String)</strong></span></div>\n\n<div class=\"tab2\"><code>phone_number</code> // Telefone válido do cliente, sem caracteres especiais <strong class=\"descricao-atributo\"><span class=\"atributo\">(String)</strong></span></div>\n\n<div class=\"tab2\"><code>birth</code> // Data de Nascimento (data válida em formato YYYY-MM-DD) <strong class=\"descricao-atributo\"><span class=\"atributo\">(String)</strong></span></div>\n\n<div class=\"tab2\"><code>address</code> // Endereço do Cliente <strong class=\"descricao-atributo\"><span class=\"atributo\">(Object)</strong></span> (<a href=\"https://dev.gerencianet.com.br/docs/definir-enderecos\" target=\"_blank\">mais informações</a>)</div>\n\n<div class=\"tab2\"><code>juridical_person</code> // Dados de pessoa jurídica <strong class=\"descricao-atributo\"><span class=\"atributo\">(Object) (<a href=\"https://dev.gerencianet.com.br/docs/pagar-com-pessoa-juridica\" target=\"_blank\">mais informações</a>)</strong></span></div>", "1-2": "Sim", "1-3": "Object", "2-0": "<code>expire_at</code>", "2-1": "Data de vencimento do carnê. O intervalo das parcelas de um carnê é sempre de 1 (um) mês entre elas.\n<code>Formato: YYYY-MM-DD</code>", "2-2": "Sim", "2-3": "String", "3-0": "<code>repeats</code>", "3-1": "Número de parcelas do carnê.\n<code>Mínimo de 2 parcelas e máximo de 12 parcelas</code>", "3-2": "Sim", "3-3": "Integer", "4-0": "<code>split_items</code>", "4-1": "Dividir itens entre as parcelas. Define se os itens do carnê serão divididos entre as parcelas (true), ou se o valor de cada parcela será o valor total dos itens (false).", "4-2": "Não", "4-3": "Boolean", "5-0": "<code>metadata</code>", "5-1": "Define dados específicos da transação.\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>", "5-2": "Não", "5-3": "Object", "6-0": "<code>configurations</code>", "6-1": "Permite incluir no carnê 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,33%, 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>", "6-2": "Não", "6-3": "Object", "7-0": "<code>message</code>", "7-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\">Máximo de 80 caracteres. String.</span></strong>", "7-2": "Não", "7-3": "String", "8-0": "<code>discount</code>", "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>", "8-2": "Não", "8-3": "Object", "9-0": "<code>conditional_discount</code>", "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>", "9-2": "Não", "9-3": "Object" }, "cols": 4, "rows": 10 } [/block] <strong class="atributo-obrigatorio-texto">* valor obrigatório</strong> <br> [block:callout] { "type": "info", "title": "Pagamento do Bolix realizado como Pessoa Jurídica (PJ)", "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 para um cliente que seja Pessoa Jurídica (PJ)." } [/block] [block:callout] { "type": "info", "title": "Relação de todos os possíveis status de uma transação", "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." } [/block] [block:callout] { "type": "warning", "title": "Callbacks (notificações) das transações Bolix da API para seu sistema", "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." } [/block] <br> <hr> # 4. Outros endpoints Bolix Existem outros endpoints e métodos relacionados a pagamento via boleto bancário e carnê que estão disponíveis na API e podem ser explorados pelo integrador. Confira a relação completa: - [Alterar 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) - [Cancelar determinada transação](https://dev.gerencianet.com.br/docs/pagar-boleto-outros-endpoints#section-2-cancelar-determinada-transa-o) - [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) - [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) - [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) - [Retornar informações sobre transação](https://dev.gerencianet.com.br/docs/pagar-boleto-outros-endpoints#section-6-retornar-informa-es-sobre-transa-o) - [Retornar informações sobre um carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-1-retornar-informa-es-sobre-um-carn-) - [Alterar URL de notificação (notification_url) e/ou custom_id de carnês](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-2-alterar-url-de-notifica-o-notification_url-e-ou-custom_id-de-carn-s) - [Alterar data de vencimento de parcela do carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-3-alterar-data-de-vencimento-de-parcela-do-carn-) - [Cancelar um carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-4-cancelar-um-carn-) - [Cancelar parcela específica de carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-5-cancelar-parcela-espec-fica-de-carn-) - [Reenviar carnê por e-mail](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-6-reenviar-carn-por-e-mail) - [Reenviar parcela específica de carnê por e-mail](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-7-reenviar-parcela-espec-fica-de-carn-por-e-mail) - [Acrescentar informações ao histórico do carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-8-acrescentar-informa-es-ao-hist-rico-do-carn-) # 5. Próximos Passos Existem outras soluções da API que permitem a utilização do Bolix com o método de pagamento por **boleto bancário**, quer conhecê-las? - <a href="https://dev.gerencianet.com.br/docs/criando-assinaturas" title="Link Interno">Assinaturas (cobrança recorrente)</a> - <a href="https://dev.gerencianet.com.br/v1.1.0/docs/dividindo-recebimentos" title="Link Interno">Marketplace (split)</a> - <a href="https://dev.gerencianet.com.br/docs/link-pagamento-criando" title="Link Interno">Link de Pagamento</a> - <a href="https://gerencianet.com.br/artigo/sistemas-integrados/" title="Link Interno">Módulos e Plugins Gerencianet</a>