{"_id":"58501e322272620f002835b9","category":{"_id":"5783f86292edb92200e6101c","__v":0,"project":"575aeffae12cf20e002f306c","version":"575aeffae12cf20e002f306f","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-07-11T19:49:54.838Z","from_sync":false,"order":3,"slug":"pagar-com-boleto","title":"Pagar com Boleto"},"parentDoc":null,"project":"575aeffae12cf20e002f306c","version":{"_id":"575aeffae12cf20e002f306f","project":"575aeffae12cf20e002f306c","__v":30,"createdAt":"2016-06-10T16:51:06.080Z","releaseDate":"2016-06-10T16:51:06.080Z","categories":["575aeffae12cf20e002f3070","575af039a083950e004487f7","575af5c7ba4ed70e000ca288","57602fe5b82256240055c657","57602ff6c811102000cef302","576030909b1a9a220067ca40","57604518b82256240055c722","5761a63d207db7170022fc14","5761b9a2b65324200072d79e","576832939f0bf4190014ffdf","576832c09f0bf4190014ffe1","576832cba151c10e004316f0","576832d5bb15f40e00a288ec","576832e107b1f30e0039c645","577680bf3cee3a0e00a000bc","577ff3b1ff48990e000c6806","5783f78c5cbce30e0074e2b7","5783f86292edb92200e6101c","5783f86dbfbba719003f0d8b","5783f8755cbce30e0074e2b8","5783f8b65cbce30e0074e2b9","5783f8bf5cbce30e0074e2ba","5783f8d8ce802f0e0087d574","578529f887c9280e0090394b","57852aeb87c9280e0090394d","57866e72b2f4060e00fa39ca","57ab6d5c39c2fd1900191879","57f39451ab0ee12000bef915","582499a0d90fa027009b259e","58c29df1258e5a1900b60478"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"2016","version_clean":"1.0.0","version":"1"},"user":"57601a13af3e090e00108059","__v":0,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-12-13T16:13:38.299Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"examples":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":1,"body":"Saiba como gerar boleto bancário para seus clientes. Para gerar, é bem simples e requer apenas dois passos:\n\n1. [Crie a transação](https://dev.gerencianet.com.br/docs/gerar-boleto#section-1-criar-transa-o), informando o item/produto/serviço, valor, quantidade, etc;\n\n2. [Associe à forma de pagamento via boleto](https://dev.gerencianet.com.br/docs/gerar-boleto#section-2-associar-forma-de-pagamento-via-boleto), informando o <code>charge_id</code> da transação.\n\nA geração de um boleto não envolve transmissão de dados sensíveis como número de cartão de crédito. Por isso, basta consumir o endpoint de pagamento para gerar o boleto registrado.\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 que a SDK da Gerencianet foi instalada](https://dev.gerencianet.com.br/docs#section-bibliotecas).\n\n<hr>\n\n# 1. Criar transação\n\nInicialmente, será gerada uma transação e que estará com o status de <code>new</code>. Essa cobrança somente terá seu status alterado quando o integrador definir sua forma de pagamento.\n\nApós criar a cobrança, será retornado o <code>charge_id</code>, que é o identificador único da transação e será utilizado para associar à forma de pagamento.\n\nPara gerar uma transação, você deve enviar uma requisição <code>POST</code> para a rota <code>/charge</code>.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge\" target=\"_blank\">usando nosso Playground</a>.\n\nA seguir um exemplo de utilização:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'your_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'your_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 = desenvolvimento 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)\\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,\\n//\\t\\t'metadata' => $metadata\\n//];\\n\\n$body  =  [\\n    'items' => $items\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $charge = $api->createCharge([], $body);\\n \\n    print_r($charge);\\n} catch (GerencianetException $e) {\\n    print_r($e->code);\\n    print_r($e->error);\\n    print_r($e->errorDescription);\\n} catch (Exception $e) {\\n    print_r($e->getMessage());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"'use strict';\\n \\nvar Gerencianet = require('gn-api-sdk-node');\\n \\nvar clientId = 'your_client_id';\\nvar clientSecret = 'your_client_secret';\\n \\nvar options = {\\n  client_id: clientId,\\n  client_secret: clientSecret,\\n  sandbox: true\\n}\\n \\nvar body = {\\n  items: [{\\n    name: 'Product 1',\\n    value: 1000,\\n    amount: 2\\n  }],\\n  shippings: [{\\n    name: 'Default Shipping Cost',\\n    value: 100\\n  }]\\n}\\n \\nvar gerencianet = new Gerencianet(options);\\n \\ngerencianet\\n  .createCharge({}, body)\\n  .then(console.log)\\n  .catch(console.log)\\n  .done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\n \\noptions = {\\n  client_id: \\\"client_id\\\",\\n  client_secret: \\\"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)\\ngerencianet.create_charge(body: body)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"from gerencianet import Gerencianet\\n \\noptions = {\\n    'client_id': 'client_id',\\n    'client_secret': 'client_secret',\\n    'sandbox': True\\n}\\n \\ngn = Gerencianet(options)\\n \\nbody = {\\n    'items': [{\\n        'name': \\\"Product 1\\\",\\n        'value': 1000,\\n        'amount': 2\\n    }],\\n    'shippings': [{\\n        'name': \\\"Default Shipping Cost\\\",\\n        'value': 100\\n    }]\\n}\\n \\ngn.create_charge(body=body)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"dynamic endpoints = new Endpoints(\\\"client_id\\\", \\\"client_secret\\\", true);\\n \\nvar body = new\\n{\\n    items = new[] {\\n        new {\\n            name = \\\"Product 1\\\",\\n            value = 1000,\\n            amount = 2\\n        }\\n    },\\n    shippings = new[] {\\n        new {\\n            name = \\\"Default Shipping Cost\\\",\\n            value = 100\\n        }\\n    }\\n};\\n \\nvar response = endpoints.CreateCharge(null, body);\\nConsole.WriteLine(response);\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\\n\\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\\ne Map<String, Object>\\n\\n\\nJSONObject\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/json/CreateCharge.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/map/CreateCharge.java\\n\\n*/\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"interface\\nfunction CreateCharge: String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction CreateCharge: String;\\nvar \\nBody :  String;\\n\\nbegin  \\n  EnableService( 'GerenciaNet.dll' ); \\n  ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n  GerenciaNetAuthorize(); \\n\\n  Body := \\n  '{'+\\n    '\\\"items\\\":'+\\n      '['+\\n        '{'+\\n          '\\\"name\\\":\\\"test article\\\",'+\\n          '\\\"value\\\":1900,'+\\n          '\\\"amount\\\":2'+\\n        '},'+\\n        '{'+\\n          '\\\"name\\\":\\\"test article 2\\\",'+\\n          '\\\"value\\\":3000,'+\\n          '\\\"amount\\\":1'+\\n        '}'+\\n      ']'+\\n  '}';\\n\\n  Result := ExecuteGerenciaNetRequest( 'createCharge','','',Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    }\n  ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos 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>.\n\n<br>\n\n## b) Atributos que podem ser usados para criar uma transação:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<code>items</code>\",\n    \"1-0\": \"<code>shippings</code>\",\n    \"2-0\": \"<code>metadata</code>\",\n    \"0-1\": \"Item que está sendo vendido. Uma mesma transação pode possuir ilimitados itens.\\n\\n<span class=\\\"tab1\\\"><em>Atributos de items</em></span>\\n\\n<div class=\\\"tab2\\\"><code>name<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Nome do item, produto ou serviço. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255 caracteres (String).</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>value<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Valor, em centavos. Ex: R$ 10,00 = 1000. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Integer.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>amount</code> // Quantidade. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Integer (padrão: 1)</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>marketplace</code> // Referente às configurações de repasses. <span class=\\\"atributo\\\">Atributos:</span></div> <div class=\\\"tab2\\\">\\n<code>*payee_code*</code> (<a href=\\\"http://image.prntscr.com/image/cabe13e1e5b64449b942cf31139150ba.png\\\" target=\\\"_blank\\\">código identificador da conta Gerencianet</a> - String).\\n<code>*percentage*</code> (porcentagem de repasse, sendo que 9000 equivale a 90% - Integer).</span></div>\",\n    \"1-1\": \"Determina o(s) valor(es) de frete(s) de uma transação. Uma mesma transação pode possuir ilimitados valores de frete.\\n\\n<span class=\\\"tab1\\\"><em>Atributos de shippings</em></span>\\n\\n<div class=\\\"tab2\\\"><code>name<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Rótulo do frete. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. String.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>value<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Valor do frete, em centavos (1990 equivale a R$19,90). <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Integer.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>payeeCode</code> // <a href=\\\"http://image.prntscr.com/image/cabe13e1e5b64449b942cf31139150ba.png\\\" target=\\\"_blank\\\">Código identificador da conta Gerencianet</a>, único por conta. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Padrão: Identificador da sua própria conta. String.</span></strong></div>\",\n    \"2-1\": \"Define dados específicos da transação.\\n\\n<span class=\\\"tab1\\\"><em>Atributos de metadata</em></span>\\n\\n<div class=\\\"tab2\\\"><code>custom_id</code> // Permite associar uma transação Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-la caso você possua uma identificação específica e queira mantê-la. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. String/null.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>notification_url</code> // Endereço de sua URL válida que receberá as notificações de mudanças de status das transações. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. String/null.</span></strong></div>\",\n    \"0-2\": \"Sim\",\n    \"1-2\": \"Não\",\n    \"2-2\": \"Não\",\n    \"0-3\": \"Array\",\n    \"1-3\": \"Array\",\n    \"2-3\": \"Object\"\n  },\n  \"cols\": 4,\n  \"rows\": 3\n}\n[/block]\n<strong class=\"atributo-obrigatorio-texto\">* valor obrigatório</strong>\n\n<br>\n\n<hr>\n\n# 2. Associar à forma de pagamento via boleto\n\nCom a transação criada, vamos associá-la à forma de pagamento desejada, que neste caso será boleto bancário, ou seja, iremos gerar o boleto. Para tal, deverá ser informado a <code>charge_id</code> obtida no consumo anterior em que foi gerada a transação.\n\nNeste momento, ao definir boleto bancário como forma de pagamento da transação, seu status mudará de <code>new</code> para <code>waiting</code>, ou seja, 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>/charge/:id/pay</code>, onde <code>:id</code> é o <code>charge_id</code> da transação desejada.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_pay\" target=\"_blank\">usando nosso Playground</a>.\n\nA seguir um exemplo de utilização:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'your_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'your_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 = desenvolvimento e false = producao)\\n];\\n \\n// $charge_id refere-se ao ID da transação gerada anteriormente\\n$params = [\\n  'id' => $charge_id\\n];\\n \\n$customer = [\\n  'name' => 'Gorbadoc Oldbuck', // nome do cliente\\n  'cpf' => '94271564656' , // cpf válido do cliente\\n  'phone_number' => '5144916523' // telefone do cliente\\n];\\n \\n$bankingBillet = [\\n  'expire_at' => '2018-12-12', // data de vencimento do boleto (formato: YYYY-MM-DD)\\n  'customer' => $customer\\n];\\n \\n$payment = [\\n  'banking_billet' => $bankingBillet // forma de pagamento (banking_billet = boleto)\\n];\\n \\n$body = [\\n  'payment' => $payment\\n];\\n \\ntry {\\n    $api = new Gerencianet($options);\\n    $charge = $api->payCharge($params, $body);\\n \\n    print_r($charge);\\n} catch (GerencianetException $e) {\\n    print_r($e->code);\\n    print_r($e->error);\\n    print_r($e->errorDescription);\\n} catch (Exception $e) {\\n    print_r($e->getMessage());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"'use strict';\\n \\nvar moment = require('moment');\\nvar Gerencianet = require('gn-api-sdk-node');\\n \\nvar clientId = 'your_client_id';\\nvar clientSecret = 'your_client_secret';\\n \\nvar options = {\\n  client_id: clientId,\\n  client_secret: clientSecret,\\n  sandbox: true\\n}\\n \\nvar params = {\\n  id: 1000\\n}\\n \\nvar expireAt = '2018-12-12';\\n \\nvar body = {\\n  payment: {\\n    banking_billet: {\\n      expire_at: expireAt,\\n      customer: {\\n        name: 'Gorbadoc Oldbuck',\\n        cpf: '94271564656',\\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\": \"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: \\\"oldbuck:::at:::gerencianet.com.br\\\",\\n        cpf: \\\"94271564656\\\",\\n        birth: \\\"1977-01-15\\\",\\n        phone_number: \\\"5144916523\\\"\\n      }\\n    }\\n  }\\n}\\n \\ngerencianet = Gerencianet.new(options)\\ngerencianet.pay_charge(params: params, body: body)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"from gerencianet import Gerencianet\\n \\noptions = {\\n    'client_id': 'client_id',\\n    'client_secret': 'client_secret',\\n    'sandbox': True\\n}\\n \\ngn = Gerencianet(options)\\n \\nparams = {\\n  'id': 1000\\n}\\n \\nbody = {\\n    'payment': {\\n        'banking_billet': {\\n            'expire_at': '2016-12-12',\\n            'customer': {\\n                'name': \\\"Gorbadoc Oldbuck\\\",\\n                'email': \\\"oldbuck@gerencianet.com.br\\\",\\n                'cpf': \\\"94271564656\\\",\\n                'birth': \\\"1977-01-15\\\",\\n                'phone_number': \\\"5144916523\\\"\\n            }\\n        }\\n    }\\n}\\n \\ngn.pay_charge(params=params, body=body)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"dynamic endpoints = new Endpoints(\\\"client_id\\\", \\\"client_secret\\\", true);\\n \\nvar param = new {\\n    id = 1000\\n};\\n \\nvar body = new {\\n    payment = new {\\n        banking_billet = new {\\n            expire_at = \\\"2016-12-12\\\",\\n            customer = new {\\n                name = \\\"Gorbadoc Oldbuck\\\",\\n                email = \\\"oldbuck@gerencianet.com.br\\\",\\n                cpf = \\\"94271564656\\\",\\n                birth = \\\"1977-01-15\\\",\\n                phone_number = \\\"5144916523\\\"\\n            }\\n        }\\n    }\\n};\\n \\nvar response = endpoints.PayCharge(param, body);\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\\n\\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\\ne Map<String, Object>\\n\\n\\nJSONObject\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/json/Billet.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/map/Billet.java\\n\\n*/\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"interface\\nfunction PayChargeWithBillet(Id: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction PayChargeWithBillet(Id: String): String;\\nvar \\n    Body : String;\\n    PaymentParams: String;\\n    \\nconst \\n    BodyText = \\n    '{'+\\n      '\\\"payment\\\": {'+\\n        '\\\"banking_billet\\\": {'+\\n          '\\\"customer\\\": {'+\\n            '\\\"email\\\": \\\"email_do_cliente@servidor.com.br\\\",'+\\n            '\\\"phone_number\\\": \\\"5144916523\\\",'+\\n            '\\\"birth\\\": \\\"1977-07-17\\\",'+\\n            '\\\"address\\\": {'+\\n              '\\\"street\\\": \\\"Av. JK\\\",'+\\n              '\\\"number\\\": 909,'+\\n              '\\\"neighborhood\\\": \\\"Bauxita\\\",'+\\n              '\\\"complement\\\": \\\"\\\",'+\\n              '\\\"city\\\": \\\"Ouro Preto\\\",'+\\n              '\\\"state\\\": \\\"MG\\\",'+\\n              '\\\"zipcode\\\": \\\"35400000\\\"'+\\n            '},'+\\n            '\\\"name\\\": \\\"Gorbadoc Oldbuck\\\",'+\\n            '\\\"cpf\\\": \\\"94271564656\\\"'+\\n          '},'+\\n          '\\\"message\\\": \\\"Test\\\",'+\\n          '\\\"expire_at\\\": \\\"2019-02-21\\\"'+\\n        '}'+\\n      '}'+\\n    '}';\\n\\nbegin\\n  EnableService( 'GerenciaNet.dll' ); \\n  ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n  GerenciaNetAuthorize(); \\n\\n  PaymentParams := CreateRequestParams( [ 'id='+Id ] ).Text; // Passa o id da transação\\n  Body := BodyText;\\n\\n  Result := ExecuteGerenciaNetRequest( 'payCharge',PaymentParams,'',Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    }\n  ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos 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            \"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>.\n\n<br>\n\n## b) Atributos que podem ser usados para pagar com boleto bancário:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<code>payment</code>\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"Objeto **Payment**\",\n    \"0-1\": \"Tag raiz\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n<br>\n\n*Objeto **Payment***\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<code>banking_billet</code>\",\n    \"0-1\": \"Forma de pagamento através de \\\"boleto bancário\\\"\",\n    \"0-3\": \"Objeto **Banking_Billet**\",\n    \"0-2\": \"Sim\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n<br>\n\n*Objeto **Banking_Billet***\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<code>name</code>\",\n    \"1-0\": \"<code>cpf</code>\",\n    \"2-0\": \"<code>email</code>\",\n    \"3-0\": \"<code>phone_number</code>\",\n    \"4-0\": \"<code>birth</code>\",\n    \"5-0\": \"<code>address</code>\",\n    \"6-0\": \"<code>juridical_person</code>\",\n    \"7-0\": \"<code>expire_at</code>\",\n    \"9-0\": \"<code>configurations</code>\",\n    \"0-2\": \"Sim\\n\\n*Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente.*\",\n    \"1-2\": \"Sim\\n\\n*Obs: Para Pessoa Jurídica não serão obrigatórios o nome e CPF, apenas os demais dados do cliente.*\",\n    \"2-2\": \"Não\",\n    \"3-2\": \"Sim\",\n    \"4-2\": \"Não\",\n    \"5-2\": \"Não\",\n    \"7-2\": \"Sim\",\n    \"6-2\": \"Não\",\n    \"9-2\": \"Não\",\n    \"5-3\": \"Object\",\n    \"6-3\": \"Object\",\n    \"0-3\": \"String\",\n    \"1-3\": \"String\",\n    \"2-3\": \"String\",\n    \"3-3\": \"String\",\n    \"4-3\": \"String\",\n    \"7-3\": \"String\",\n    \"9-3\": \"Object\",\n    \"0-1\": \"Nome do cliente.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255.</span></strong>\",\n    \"1-1\": \"CPF válido do cliente (sem pontos, vírgulas ou hífen).\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Tamanho: 11 caracteres.</span></strong>\",\n    \"2-1\": \"Email do cliente.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. Ex.: email@email.com</span></strong>\",\n    \"3-1\": \"Telefone do cliente.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: sem pontos ou vírgulas, com DDD de 2 caracteres (9º dígito é opcional). Ex.: 11988887777</span></strong>\",\n    \"4-1\": \"Data de nascimento do cliente.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: YYYY-MM-DD</span></strong>\",\n    \"5-1\": \"Endereço do cliente.\\n\\n<span class=\\\"tab1\\\">*Atributos de address*</span>\\n\\n<div class=\\\"tab2\\\"><code>street<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // nome da rua <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(Object)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>number<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // número <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String/Integer)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>neighborhood<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Bairro <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>zipcode<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // CEP (sem pontos ou hífen) <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>city<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // cidade <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>complement</code> // complemento <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(String/null)</strong></span></div>\\n\\n<div class=\\\"tab2\\\"><code>state<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // estado (2 caracteres) <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">(Object)</strong></span></div>\",\n    \"6-1\": \"Dados de pessoa jurídica\\n\\n<span class=\\\"tab1\\\">*Atributos de juridical_person*</span>\\n\\n<div class=\\\"tab2\\\">\\n<code>corporate_name<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Nome da razão social. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255. String.</strong></span></div>\\n\\n<div class=\\\"tab2\\\">\\n<code>cnpj<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // CNPJ da empresa. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Tamanho: 14 caracteres. String.</strong></span>\\n</div>\",\n    \"7-1\": \"Data de vencimento do boleto.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: YYYY-MM-DD</span></strong>\",\n    \"9-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 no Fortunus 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 no Fortunus e queira gerar emissões na API sem juros, utilize <code>0</code> como valor do atributo <code>interest</code></strong></span></div>\\n</strong>\\n</div>\",\n    \"8-0\": \"<code>discount</code>\",\n    \"8-1\": \"Define dados de desconto sobre a cobrança.\\n\\n<span class=\\\"tab1\\\">*Atributos de discount*</span>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">type<strong class=\\\"atributo-obrigatorio\\\">*</strong></span>, // Tipo do desconto (String). Valores permitidos:\\n<code>currency</code>: o desconto será informado em centavos;\\n<code>percentage</code>: o desconto será informado em porcentagem.</strong>\\n</div>\\n\\n<div class=\\\"tab2\\\">\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">value<strong class=\\\"atributo-obrigatorio\\\">*</strong></span>, // Valor do desconto (Integer). Se o tipo do desconto for <code>currency</code>, o valor desta tag deverá ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja <code>percentage</code>, o valor deverá ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos:\\n1) <code>currency</code> // deve ser informado em centavos, ou seja, se o desconto será de R$ 5,99, o integrador deve informar <code>599</code>;\\n2) <code>percentage</code> // deve ser informado em centavos, ou seja, se o desconto é de 15%, o integrador deve informar <code>1500</code>.\\n</strong>\\n</div>\",\n    \"8-2\": \"Não\",\n    \"8-3\": \"String\",\n    \"10-0\": \"<code>message</code>\",\n    \"10-2\": \"Não\",\n    \"10-3\": \"String\",\n    \"10-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  },\n  \"cols\": 4,\n  \"rows\": 11\n}\n[/block]\n<strong style=\"font-size:10px;color:#ea6e1c\">* valor obrigatório</strong>\n\n<br>\n\n<hr>\n\n# 3. Outros endpoints e métodos\n[block:html]\n{\n  \"html\": \"<p>Existem outros endpoints e métodos relacionados a pagamento via boleto bancário que estão disponíveis na API e podem ser explorados pelo integrador. Confira a relação completa:</p>\\n\\n<a href=\\\"https://dev.gerencianet.com.br/docs/atualizar-transacoes#section-4-atualizando-vencimento-de-um-boleto-banc-rio\\\" title=\\\"Link Interno\\\"><button type=\\\"button\\\" class=\\\"btn btn-default navbar-btn\\\">3.1 - Atualizando vencimento de um boleto bancário</button></a>\\n<br>\\n<a href=\\\"https://dev.gerencianet.com.br/docs/cancelar-transacoes\\\" title=\\\"Link Interno\\\"><button type=\\\"button\\\" class=\\\"btn btn-default navbar-btn\\\">3.2 - Cancelamento de uma transação</button></a>\\n<br>\\n<a href=\\\"https://dev.gerencianet.com.br/docs/atualizar-transacoes#section-1-alterando-notification_url-e-ou-custom_id-de-uma-transa-o\\\" title=\\\"Link Interno\\\"><button type=\\\"button\\\" class=\\\"btn btn-default navbar-btn\\\">3.3 - Alterando notification_url e/ou custom_id de uma transação</button></a>\\n<br>\\n<a href=\\\"https://dev.gerencianet.com.br/docs/reenvio-de-transacoes#section-1-reenviando-um-boleto-banc-rio-por-email\\\" title=\\\"Link Interno\\\"><button type=\\\"button\\\" class=\\\"btn btn-default navbar-btn\\\">3.4 - Reenviando um boleto bancário por email</button></a>\\n<br>\\n<a href=\\\"https://dev.gerencianet.com.br/docs/historico-personalizado#section-1-hist-rico-de-uma-transa-o\\\" title=\\\"Link Interno\\\"><button type=\\\"button\\\" class=\\\"btn btn-default navbar-btn\\\">3.5 - Histórico de uma transação</button></a>\\n<br>\\n<a href=\\\"https://dev.gerencianet.com.br/v1/docs/detalhar-transacoes#section-1-detalhar-informa-es-de-transa-o\\\" title=\\\"Link Interno\\\"><button type=\\\"button\\\" class=\\\"btn btn-default navbar-btn\\\">3.6 - Detalhar informações de transação</button></a>\\n<br>\\n<a href=\\\"https://dev.gerencianet.com.br/docs/endpoints#section-rela-o-entre-os-endpoints-playground-com-o-nome-das-fun-es-utilizadas-pelas-sdks\\\" title=\\\"Link Interno\\\"><button type=\\\"button\\\" class=\\\"btn btn-default navbar-btn\\\">3.7 - Relação entre os endpoints (Playground) com o nome das funções utilizadas pelas SDKs</button></a>\"\n}\n[/block]\n<br>\n\n<hr>\n\n# 4. Vídeos: Criando transação e gerando boleto bancário\n\nPensando em oferecer novos meios de transmitir informações, a Gerencianet disponibiliza os vídeos a seguir com o objetivo de explicar, de maneira clara e objetiva, como criar uma transação via integração e associá-la à forma de pagamento por \"boleto bancário\".\n\n## 4.1. Criando transação via Playground (ambiente de testes/sandbox)\n[block:html]\n{\n  \"html\": \"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/ylqJUpHqwfY\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"\n}\n[/block]\n<br>\n\n## 4.2. Definindo método de pagamento por Boleto Bancário (via Playground)\n[block:html]\n{\n  \"html\": \"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/TNAl8ogvfGQ\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"\n}\n[/block]\n<br>\n\n## 4.3. Criando uma transação por integração - Pagamento por Boleto Bancário\n[block:html]\n{\n  \"html\": \"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/A6p1thz6Pe8\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"\n}\n[/block]\n<br>\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"DICA\",\n  \"body\": \"Para acesso as demais aulas, de outros assuntos, acesse a página <a href=\\\"https://dev.gerencianet.com.br/docs/curso-online-gerencianet\\\" title=\\\"Link Interno\\\">Curso Online de Integrações</a>.\"\n}\n[/block]\n<br>\n\n<hr>\n\n# 5. Próximos Passos\n[block:html]\n{\n  \"html\": \"<p>Existem outras soluções da API que permitem a utilização de pagamento por boleto bancário, quer conhecê-las?</p>\\n\\n<a href=\\\"https://dev.gerencianet.com.br/docs/carnes-criando\\\" title=\\\"Link Interno\\\"><button type=\\\"button\\\" class=\\\"btn btn-default navbar-btn\\\">Carnês</button></a>\\n<br>\\n<a href=\\\"https://dev.gerencianet.com.br/docs/criando-assinaturas\\\" title=\\\"Link Interno\\\"><button type=\\\"button\\\" class=\\\"btn btn-default navbar-btn\\\">Assinaturas (cobrança recorrente)</button></a>\\n<br>\\n<a href=\\\"https://dev.gerencianet.com.br/docs/marketplace-recebimentos\\\" title=\\\"Link Interno\\\"><button type=\\\"button\\\" class=\\\"btn btn-default navbar-btn\\\">Marketplace</button></a>\\n<br>\\n<a href=\\\"https://dev.gerencianet.com.br/docs/link-pagamento-criando\\\" title=\\\"Link Interno\\\"><button type=\\\"button\\\" class=\\\"btn btn-default navbar-btn\\\">Link de Pagamento</button></a>\\n<br>\\n<a href=\\\"https://dev.gerencianet.com.br/docs/modulos\\\" title=\\\"Link Interno\\\"><button type=\\\"button\\\" class=\\\"btn btn-default navbar-btn\\\">Módulos e Plugins</button></a>\"\n}\n[/block]","excerpt":"Você está em: *\"Pagar com Boleto > Gerar boleto bancário\"*","slug":"gerar-boleto","type":"basic","title":"Gerar boleto bancário"}

Gerar boleto bancário

Você está em: *"Pagar com Boleto > Gerar boleto bancário"*

Saiba como gerar boleto bancário para seus clientes. Para gerar, é bem simples e requer apenas dois passos: 1. [Crie a transação](https://dev.gerencianet.com.br/docs/gerar-boleto#section-1-criar-transa-o), informando o item/produto/serviço, valor, quantidade, etc; 2. [Associe à forma de pagamento via boleto](https://dev.gerencianet.com.br/docs/gerar-boleto#section-2-associar-forma-de-pagamento-via-boleto), informando o <code>charge_id</code> da transação. A geração de um boleto não envolve transmissão de dados sensíveis como número de cartão de crédito. Por isso, basta consumir o endpoint de pagamento para gerar o boleto registrado. 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 que a SDK da Gerencianet foi instalada](https://dev.gerencianet.com.br/docs#section-bibliotecas). <hr> # 1. Criar transação Inicialmente, será gerada uma transação e que estará com o status de <code>new</code>. Essa cobrança somente terá seu status alterado quando o integrador definir sua forma de pagamento. Após criar a cobrança, será retornado o <code>charge_id</code>, que é o identificador único da transação e será utilizado para associar à forma de pagamento. Para gerar uma transação, você deve enviar uma requisição <code>POST</code> para a rota <code>/charge</code>. Caso queira, pode explorar e conhecer mais sobre este recurso <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge" target="_blank">usando nosso Playground</a>. A seguir um exemplo de utilização: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'your_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'your_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 = desenvolvimento 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)\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,\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" }, { "code": "'use strict';\n \nvar Gerencianet = require('gn-api-sdk-node');\n \nvar clientId = 'your_client_id';\nvar clientSecret = 'your_client_secret';\n \nvar options = {\n client_id: clientId,\n client_secret: clientSecret,\n sandbox: true\n}\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": "require \"gerencianet\"\n \noptions = {\n client_id: \"client_id\",\n client_secret: \"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)\ngerencianet.create_charge(body: body)", "language": "ruby" }, { "code": "from gerencianet import Gerencianet\n \noptions = {\n 'client_id': 'client_id',\n 'client_secret': 'client_secret',\n 'sandbox': True\n}\n \ngn = Gerencianet(options)\n \nbody = {\n 'items': [{\n 'name': \"Product 1\",\n 'value': 1000,\n 'amount': 2\n }],\n 'shippings': [{\n 'name': \"Default Shipping Cost\",\n 'value': 100\n }]\n}\n \ngn.create_charge(body=body)", "language": "python" }, { "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": "asp", "name": ".NET" }, { "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" }, { "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": "json", "name": "Delphi" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos 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>. <br> ## b) Atributos que podem ser usados 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>", "1-0": "<code>shippings</code>", "2-0": "<code>metadata</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>\n\n<div class=\"tab2\"><code>marketplace</code> // Referente às configurações de repasses. <span class=\"atributo\">Atributos:</span></div> <div class=\"tab2\">\n<code>*payee_code*</code> (<a href=\"http://image.prntscr.com/image/cabe13e1e5b64449b942cf31139150ba.png\" target=\"_blank\">código identificador da conta Gerencianet</a> - String).\n<code>*percentage*</code> (porcentagem de repasse, sendo que 9000 equivale a 90% - Integer).</span></div>", "1-1": "Determina o(s) valor(es) de frete(s) de uma transação. Uma mesma transação pode possuir ilimitados valores de frete.\n\n<span class=\"tab1\"><em>Atributos de shippings</em></span>\n\n<div class=\"tab2\"><code>name<strong class=\"atributo-obrigatorio\">*</strong></code> // Rótulo do frete. <strong class=\"descricao-atributo\"><span class=\"atributo\">Máximo de 255 caracteres. String.</span></strong></div>\n\n<div class=\"tab2\"><code>value<strong class=\"atributo-obrigatorio\">*</strong></code> // Valor do frete, em centavos (1990 equivale a R$19,90). <strong class=\"descricao-atributo\"><span class=\"atributo\">Integer.</span></strong></div>\n\n<div class=\"tab2\"><code>payeeCode</code> // <a href=\"http://image.prntscr.com/image/cabe13e1e5b64449b942cf31139150ba.png\" target=\"_blank\">Código identificador da conta Gerencianet</a>, único por conta. <strong class=\"descricao-atributo\"><span class=\"atributo\">Padrão: Identificador da sua própria conta. String.</span></strong></div>", "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>", "0-2": "Sim", "1-2": "Não", "2-2": "Não", "0-3": "Array", "1-3": "Array", "2-3": "Object" }, "cols": 4, "rows": 3 } [/block] <strong class="atributo-obrigatorio-texto">* valor obrigatório</strong> <br> <hr> # 2. Associar à forma de pagamento via boleto Com a transação criada, vamos associá-la à forma de pagamento desejada, que neste caso será boleto bancário, ou seja, iremos gerar o boleto. Para tal, deverá ser informado a <code>charge_id</code> obtida no consumo anterior em que foi gerada a transação. Neste momento, ao definir boleto bancário como forma de pagamento da transação, seu status mudará de <code>new</code> para <code>waiting</code>, ou seja, 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>/charge/:id/pay</code>, onde <code>:id</code> é o <code>charge_id</code> da transação desejada. Caso queira, pode explorar e conhecer mais sobre este recurso <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_pay" target="_blank">usando nosso Playground</a>. A seguir um exemplo de utilização: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'your_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'your_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 = desenvolvimento e false = producao)\n];\n \n// $charge_id refere-se ao ID da transação gerada anteriormente\n$params = [\n 'id' => $charge_id\n];\n \n$customer = [\n 'name' => 'Gorbadoc Oldbuck', // nome do cliente\n 'cpf' => '94271564656' , // cpf válido do cliente\n 'phone_number' => '5144916523' // telefone do cliente\n];\n \n$bankingBillet = [\n 'expire_at' => '2018-12-12', // data de vencimento do boleto (formato: YYYY-MM-DD)\n 'customer' => $customer\n];\n \n$payment = [\n 'banking_billet' => $bankingBillet // forma de pagamento (banking_billet = boleto)\n];\n \n$body = [\n 'payment' => $payment\n];\n \ntry {\n $api = new Gerencianet($options);\n $charge = $api->payCharge($params, $body);\n \n print_r($charge);\n} catch (GerencianetException $e) {\n print_r($e->code);\n print_r($e->error);\n print_r($e->errorDescription);\n} catch (Exception $e) {\n print_r($e->getMessage());\n}", "language": "php" }, { "code": "'use strict';\n \nvar moment = require('moment');\nvar Gerencianet = require('gn-api-sdk-node');\n \nvar clientId = 'your_client_id';\nvar clientSecret = 'your_client_secret';\n \nvar options = {\n client_id: clientId,\n client_secret: clientSecret,\n sandbox: true\n}\n \nvar params = {\n id: 1000\n}\n \nvar expireAt = '2018-12-12';\n \nvar body = {\n payment: {\n banking_billet: {\n expire_at: expireAt,\n customer: {\n name: 'Gorbadoc Oldbuck',\n cpf: '94271564656',\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": "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: \"oldbuck@gerencianet.com.br\",\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" }, { "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': \"oldbuck@gerencianet.com.br\",\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" }, { "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 = \"oldbuck@gerencianet.com.br\",\n cpf = \"94271564656\",\n birth = \"1977-01-15\",\n phone_number = \"5144916523\"\n }\n }\n }\n};\n \nvar response = endpoints.PayCharge(param, body);", "language": "asp", "name": ".NET" }, { "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*/", "language": "java" }, { "code": "interface\nfunction PayChargeWithBillet(Id: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction PayChargeWithBillet(Id: String): String;\nvar \n Body : String;\n PaymentParams: String;\n \nconst \n BodyText = \n '{'+\n '\"payment\": {'+\n '\"banking_billet\": {'+\n '\"customer\": {'+\n '\"email\": \"email_do_cliente@servidor.com.br\",'+\n '\"phone_number\": \"5144916523\",'+\n '\"birth\": \"1977-07-17\",'+\n '\"address\": {'+\n '\"street\": \"Av. JK\",'+\n '\"number\": 909,'+\n '\"neighborhood\": \"Bauxita\",'+\n '\"complement\": \"\",'+\n '\"city\": \"Ouro Preto\",'+\n '\"state\": \"MG\",'+\n '\"zipcode\": \"35400000\"'+\n '},'+\n '\"name\": \"Gorbadoc Oldbuck\",'+\n '\"cpf\": \"94271564656\"'+\n '},'+\n '\"message\": \"Test\",'+\n '\"expire_at\": \"2019-02-21\"'+\n '}'+\n '}'+\n '}';\n\nbegin\n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize(); \n\n PaymentParams := CreateRequestParams( [ 'id='+Id ] ).Text; // Passa o id da transação\n Body := BodyText;\n\n Result := ExecuteGerenciaNetRequest( 'payCharge',PaymentParams,'',Body );\nend;", "language": "json", "name": "Delphi" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos 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" "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>. <br> ## b) Atributos que podem ser usados para pagar com boleto bancário: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>payment</code>", "0-2": "Sim", "0-3": "Objeto **Payment**", "0-1": "Tag raiz" }, "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-3": "Objeto **Banking_Billet**", "0-2": "Sim" }, "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>", "1-0": "<code>cpf</code>", "2-0": "<code>email</code>", "3-0": "<code>phone_number</code>", "4-0": "<code>birth</code>", "5-0": "<code>address</code>", "6-0": "<code>juridical_person</code>", "7-0": "<code>expire_at</code>", "9-0": "<code>configurations</code>", "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.*", "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.*", "2-2": "Não", "3-2": "Sim", "4-2": "Não", "5-2": "Não", "7-2": "Sim", "6-2": "Não", "9-2": "Não", "5-3": "Object", "6-3": "Object", "0-3": "String", "1-3": "String", "2-3": "String", "3-3": "String", "4-3": "String", "7-3": "String", "9-3": "Object", "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>", "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>", "2-1": "Email do cliente.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Máximo de 255 caracteres. Ex.: email@email.com</span></strong>", "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-1": "Data de nascimento do cliente.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Formato: YYYY-MM-DD</span></strong>", "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-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-1": "Data de vencimento do boleto.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Formato: YYYY-MM-DD</span></strong>", "9-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 no Fortunus 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 no Fortunus 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>", "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": "String", "10-0": "<code>message</code>", "10-2": "Não", "10-3": "String", "10-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>" }, "cols": 4, "rows": 11 } [/block] <strong style="font-size:10px;color:#ea6e1c">* valor obrigatório</strong> <br> <hr> # 3. Outros endpoints e métodos [block:html] { "html": "<p>Existem outros endpoints e métodos relacionados a pagamento via boleto bancário que estão disponíveis na API e podem ser explorados pelo integrador. Confira a relação completa:</p>\n\n<a href=\"https://dev.gerencianet.com.br/docs/atualizar-transacoes#section-4-atualizando-vencimento-de-um-boleto-banc-rio\" title=\"Link Interno\"><button type=\"button\" class=\"btn btn-default navbar-btn\">3.1 - Atualizando vencimento de um boleto bancário</button></a>\n<br>\n<a href=\"https://dev.gerencianet.com.br/docs/cancelar-transacoes\" title=\"Link Interno\"><button type=\"button\" class=\"btn btn-default navbar-btn\">3.2 - Cancelamento de uma transação</button></a>\n<br>\n<a href=\"https://dev.gerencianet.com.br/docs/atualizar-transacoes#section-1-alterando-notification_url-e-ou-custom_id-de-uma-transa-o\" title=\"Link Interno\"><button type=\"button\" class=\"btn btn-default navbar-btn\">3.3 - Alterando notification_url e/ou custom_id de uma transação</button></a>\n<br>\n<a href=\"https://dev.gerencianet.com.br/docs/reenvio-de-transacoes#section-1-reenviando-um-boleto-banc-rio-por-email\" title=\"Link Interno\"><button type=\"button\" class=\"btn btn-default navbar-btn\">3.4 - Reenviando um boleto bancário por email</button></a>\n<br>\n<a href=\"https://dev.gerencianet.com.br/docs/historico-personalizado#section-1-hist-rico-de-uma-transa-o\" title=\"Link Interno\"><button type=\"button\" class=\"btn btn-default navbar-btn\">3.5 - Histórico de uma transação</button></a>\n<br>\n<a href=\"https://dev.gerencianet.com.br/v1/docs/detalhar-transacoes#section-1-detalhar-informa-es-de-transa-o\" title=\"Link Interno\"><button type=\"button\" class=\"btn btn-default navbar-btn\">3.6 - Detalhar informações de transação</button></a>\n<br>\n<a href=\"https://dev.gerencianet.com.br/docs/endpoints#section-rela-o-entre-os-endpoints-playground-com-o-nome-das-fun-es-utilizadas-pelas-sdks\" title=\"Link Interno\"><button type=\"button\" class=\"btn btn-default navbar-btn\">3.7 - Relação entre os endpoints (Playground) com o nome das funções utilizadas pelas SDKs</button></a>" } [/block] <br> <hr> # 4. Vídeos: Criando transação e gerando boleto bancário Pensando em oferecer novos meios de transmitir informações, a Gerencianet disponibiliza os vídeos a seguir com o objetivo de explicar, de maneira clara e objetiva, como criar uma transação via integração e associá-la à forma de pagamento por "boleto bancário". ## 4.1. Criando transação via Playground (ambiente de testes/sandbox) [block:html] { "html": "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/ylqJUpHqwfY\" frameborder=\"0\" allowfullscreen></iframe>" } [/block] <br> ## 4.2. Definindo método de pagamento por Boleto Bancário (via Playground) [block:html] { "html": "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/TNAl8ogvfGQ\" frameborder=\"0\" allowfullscreen></iframe>" } [/block] <br> ## 4.3. Criando uma transação por integração - Pagamento por Boleto Bancário [block:html] { "html": "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/A6p1thz6Pe8\" frameborder=\"0\" allowfullscreen></iframe>" } [/block] <br> [block:callout] { "type": "info", "title": "DICA", "body": "Para acesso as demais aulas, de outros assuntos, acesse a página <a href=\"https://dev.gerencianet.com.br/docs/curso-online-gerencianet\" title=\"Link Interno\">Curso Online de Integrações</a>." } [/block] <br> <hr> # 5. Próximos Passos [block:html] { "html": "<p>Existem outras soluções da API que permitem a utilização de pagamento por boleto bancário, quer conhecê-las?</p>\n\n<a href=\"https://dev.gerencianet.com.br/docs/carnes-criando\" title=\"Link Interno\"><button type=\"button\" class=\"btn btn-default navbar-btn\">Carnês</button></a>\n<br>\n<a href=\"https://dev.gerencianet.com.br/docs/criando-assinaturas\" title=\"Link Interno\"><button type=\"button\" class=\"btn btn-default navbar-btn\">Assinaturas (cobrança recorrente)</button></a>\n<br>\n<a href=\"https://dev.gerencianet.com.br/docs/marketplace-recebimentos\" title=\"Link Interno\"><button type=\"button\" class=\"btn btn-default navbar-btn\">Marketplace</button></a>\n<br>\n<a href=\"https://dev.gerencianet.com.br/docs/link-pagamento-criando\" title=\"Link Interno\"><button type=\"button\" class=\"btn btn-default navbar-btn\">Link de Pagamento</button></a>\n<br>\n<a href=\"https://dev.gerencianet.com.br/docs/modulos\" title=\"Link Interno\"><button type=\"button\" class=\"btn btn-default navbar-btn\">Módulos e Plugins</button></a>" } [/block]