{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","settings":"","results":{"codes":[]},"params":[]},"next":{"description":"","pages":[]},"title":"Criando link de pagamento","type":"basic","slug":"link-pagamento-criando","excerpt":"Passo a passo para gerar uma cobrança de link de pagamento na API Gerencianet","body":"Saiba como criar um link para uma tela de pagamento da Gerencianet para seus clientes efetuarem os pagamentos. Para criar, é bem simples:\n\n1. [Crie o link de pagamento em *One Step*](https://dev.gerencianet.com.br/docs/link-pagamento-criando#section-1-criando-o-link-de-pagamento-em-one-step-)\n\n2. [Crie o link de pagamento em *Two Steps*](https://dev.gerencianet.com.br/docs/link-pagamento-criando#section-2-criando-o-link-de-pagamento-em-two-steps-)\n\n3. [Crie o link de pagamento em *One Step* para a modalidade de Assinatura](https://dev.gerencianet.com.br/docs/link-pagamento-criando#section-3-criando-o-link-de-pagamento-em-one-step-com-a-modalidade-assinatura)\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#section-2-bibliotecas).\n[block:callout]\n{\n \"type\": \"warning\",\n \"title\": \"Bolix\",\n \"body\": \"Caso você tenha ativado o Bolix em sua conta Gerencianet, as cobranças geradas pelo link de pagamento já vão vir com o pix no boleto.\\nMais detalhes sobre o Bolix e como ativá-lo <a href=\\\"https://dev.gerencianet.com.br/docs/bolix-boleto-carne\\\" target=\\\"_blank\\\" title=\\\"Saiba mais sobre o Bolix\\\">aqui</a>\"\n}\n[/block]\n# 1. Criando o link de pagamento em *One Step*\n\n<hr>\n\nPara criar um link de pagamento em *One Step*, basta enviar uma requisição <code>POST</code> para a rota <code>/v1/charge/one-step/link</code>, com isso você receberá como retorno o <code>payment_url</code> da transação.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_link\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n 'client_id' => $clientId,\\n 'client_secret' => $clientSecret,\\n 'sandbox' => true // altere conforme o ambiente (true = Homologação e false = producao)\\n];\\n\\n$item_1 = [\\n 'name' => 'Item 1', // nome do item, produto ou serviço\\n 'amount' => 1, // quantidade\\n 'value' => 1000 // valor (1000 = R$ 10,00) (Obs: É possível a criação de itens com valores negativos. Porém, o valor total da fatura deve ser superior ao valor mínimo para geração de transações.)\\n];\\n \\n$item_2 = [\\n 'name' => 'Item 2', // nome do item, produto ou serviço\\n 'amount' => 2, // quantidade\\n 'value' => 2000 // valor (2000 = R$ 20,00)\\n];\\n \\n$items = [\\n $item_1,\\n $item_2\\n];\\n\\n$settings = [\\n 'payment_method' => 'all',\\n 'expire_at' => '2021-12-15',\\n 'request_delivery_address' => false,\\n];\\n\\n$body = [\\n 'items' => $items,\\n 'settings' => $settings,\\n];\\n\\ntry {\\n $api = new Gerencianet($options);\\n $response = $api->oneStepLink([], $body);\\n\\n print_r($response);\\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\": \"\",\n \"language\": \"text\",\n \"name\": \"NodeJS\"\n },\n {\n \"code\": \"\",\n \"language\": \"text\",\n \"name\": \"Ruby\"\n },\n {\n \"code\": \"\",\n \"language\": \"text\",\n \"name\": \"Python\"\n },\n {\n \"code\": \"\",\n \"language\": \"text\",\n \"name\": \".NET\"\n },\n {\n \"code\": \"\",\n \"language\": \"text\",\n \"name\": \"Java\"\n },\n {\n \"code\": \"\",\n \"language\": \"text\",\n \"name\": \"Delphi\"\n },\n {\n \"code\": \"\",\n \"language\": \"text\",\n \"name\": \"Go\"\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\": \"/ChargeLink/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 \"settings\"\n \"billet_discount\"\n \"card_discount\"\n \"conditional_discount\"\n \"type\"\n \"percentage\",\n \"currency\"\n \"value\"\n \"until_date\"\n \"message\"\n \"expire_at\"\n \"request_delivery_address\"\n \"payment_method\"\n \"banking_billet\"\n \"credit_card\"\n \"all\"</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 um link de pagamento *One Step*:\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\\n<div class=\\\"tab2\\\"><code>marketplace<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Referente às configurações de repasses. <span class=\\\"atributo\\\">Atributos:</span></div> <div class=\\\"tab2\\\">\\n<code>*payee_code*<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> (<a href=\\\"http://image.prntscr.com/image/cabe13e1e5b64449b942cf31139150ba.png\\\" target=\\\"_blank\\\">código identificador da conta Gerencianet</a> - String).\\n<code>*percentage*<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> (porcentagem de repasse, sendo que 9000 equivale a 90% - Integer).</span></div>\",\n \"0-2\": \"Sim\",\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 \"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 \"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<br>\n\nObjeto **settings**\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>settings</code>\",\n \"0-2\": \"Sim\",\n \"0-3\": \"Objeto **settings**\",\n \"0-1\": \"Definição das formas de pagamento e outros atributos do link de pagamento\"\n },\n \"cols\": 4,\n \"rows\": 1\n}\n[/block]\n<br>\nAtributos utilizados no objeto **settings**\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>billet_discount</code>\",\n \"1-0\": \"<code>card_discount</code>\",\n \"2-0\": \"<code>conditional_discount</code>\",\n \"3-0\": \"<code>message</code>\",\n \"4-0\": \"<code>expire_at</code>\",\n \"5-0\": \"<code>request_delivery_address</code>\",\n \"6-0\": \"<code>payment_method</code>\",\n \"0-1\": \"Define um desconto, em reais, caso o pagador escolha boleto bancário como forma de pagamento (informar valor inteiro, em reais).\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">5000 equivale a R$ 50,00</span></strong>\",\n \"1-1\": \"Define um desconto, em reais, caso o pagador escolha cartão de crédito como forma de pagamento (informar valor Inteiro).\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">5000 equivale a R$ 50,00</span></strong>\",\n \"2-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 \"3-1\": \"Define uma mensagem para o pagador. A mensagem aparece na tela de pagamento, nos e-mails relacionados à cobrança e no boleto, caso esta seja a forma de pagamento escolhida.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 3 e máximo de 80 caracteres.</span></strong>\",\n \"4-1\": \"Define a data de vencimento da tela de pagamento e do próprio boleto, caso esta seja a forma de pagamento escolhida.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: YYYY-MM-DD</span></strong>\",\n \"5-1\": \"Define se a tela de pagamento deve solicitar que o pagador informe um endereço de entrega. Há dois possíveis valores:\\n\\n- <code>true</code> (equivale a \\\"sim\\\") ou;\\n- <code>false</code> (equivale a \\\"não\\\").\",\n \"6-1\": \"Define as formas de pagamento que devem ficar disponíveis na tela para seu cliente escolher, podendo ser:\\n\\n- <code>banking_billet</code> (boleto bancário);\\n- <code>credit_card</code> (cartão de crédito) ou;\\n- <code>all</code> (permitir pagamento via boleto e cartão).\",\n \"0-2\": \"Não\",\n \"1-2\": \"Não\",\n \"2-2\": \"Não\",\n \"3-2\": \"Não\",\n \"4-2\": \"Sim\",\n \"5-2\": \"Sim\",\n \"6-2\": \"Sim\",\n \"0-3\": \"Integer\",\n \"1-3\": \"Integer\",\n \"2-3\": \"Object\",\n \"4-3\": \"String\",\n \"5-3\": \"Boolean\",\n \"6-3\": \"Object\",\n \"3-3\": \"String\"\n },\n \"cols\": 4,\n \"rows\": 7\n}\n[/block]\n<strong class=\"atributo-obrigatorio-texto\">* valor obrigatório</strong>\n\n<br>\n\nAo consumir o endpoint <code>/charge/one-step/link</code>, a cobrança ganha o status <code>link</code>. \n\nO integrador só precisa redirecionar o pagador para o link retornado na tag <code>payment_url</code> e todo o resto será realizado na tela de pagamento da Gerencianet.\n\nA seguir, através da aba \"Dados de Entrada\", um JSON simples que pode ser utilizado para criar o link de pagamento em *One Step*. Além disso, é possível observar a saída prevista.\n\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"{\\n \\\"items\\\": [\\n {\\n \\\"amount\\\": 5,\\n \\\"name\\\": \\\"Game of Thrones\\\",\\n \\\"value\\\": 827\\n },\\n {\\n \\\"amount\\\": 5,\\n \\\"name\\\": \\\"Dexter\\\",\\n \\\"value\\\": 620\\n },\\n {\\n \\\"amount\\\": 2,\\n \\\"name\\\": \\\"Breaking Bad\\\",\\n \\\"value\\\": 750\\n }\\n ],\\n \\\"metadata\\\": {\\n \\\"custom_id\\\": \\\"produto 1\\\",\\n \\\"notification_url\\\": \\\"sua_url_notificação\\\"\\n },\\n \\\"shippings\\\": [{\\n \\\"name\\\": \\\"Ouro Preto\\\",\\n \\\"value\\\": 500\\n }],\\n \\n \\\"settings\\\": {\\n \\\"billet_discount\\\": 500,\\n \\\"card_discount\\\": 300,\\n \\\"message\\\": \\\"Escreva aqui, se quiser, uma mensagem ao seu cliente, limite de 80 caracteres\\\",\\n \\\"conditional_discount\\\":{\\n \\\"type\\\": \\\"percentage\\\", \\n \\\"value\\\": 100, \\n \\\"until_date\\\": \\\"2021-12-30\\\"\\n } ,\\n \\\"payment_method\\\": \\\"all\\\",\\n \\\"expire_at\\\": \\\"2025-02-08\\\",\\n \\\"request_delivery_address\\\": true\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de entrada\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200,\\n \\\"data\\\": {\\n \\\"charge_id\\\": 3714507,\\n \\\"status\\\": \\\"link\\\",\\n \\\"total\\\": 8863,\\n \\\"custom_id\\\": \\\"cross-media soft\\\",\\n \\\"payment_url\\\": \\\"https://pagamento.gerencianet.com.br/:identificador\\\",\\n \\\"payment_method\\\": \\\"all\\\",\\n \\\"billet_discount\\\": 500,\\n \\\"card_discount\\\": 300,\\n \\\"conditional_discount_value\\\": 100,\\n \\\"conditional_discount_type\\\": \\\"percentage\\\",\\n \\\"conditional_discount_date\\\": \\\"2021-12-30\\\",\\n \\\"request_delivery_address\\\": true,\\n \\\"message\\\": \\\"teste\\\",\\n \\\"expire_at\\\": \\\"2025-02-08\\\",\\n \\\"created_at\\\": \\\"2021-11-09 11:14:36\\\"\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de Saída\"\n }\n ]\n}\n[/block]\n<br>\n\n# 2. Criando o link de pagamento em *Two Steps*\n\n<hr>\n\n## 2.1. Crie a transação\n\nPrimeiramente, precisamos gerar a transação (também chamada de \"cobrança\"). É neste momento que será informado o nome do item/produto/serviço, valor da transação, quantidade, dentre outras informações possíveis.\n\nApós criá-la, será retornado o <code>charge_id</code>, que é o identificador único da transação e que será utilizado para associar à forma de pagamento.\n\nAssim que essa transação é criada, ela recebe o status <code>new</code>, que significa que a cobrança foi gerada e está aguardando definição da forma de pagamento. Essa cobrança somente terá seu status alterado quando o integrador definir sua forma de pagamento.\n\nPara gerar uma transação, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/charge</code>.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n 'client_id' => $clientId,\\n 'client_secret' => $clientSecret,\\n 'sandbox' => true // altere conforme o ambiente (true = Homologação e false = producao)\\n];\\n \\n$item_1 = [\\n 'name' => 'Item 1', // nome do item, produto ou serviço\\n 'amount' => 1, // quantidade\\n 'value' => 1000 // valor (1000 = R$ 10,00) (Obs: É possível a criação de itens com valores negativos. Porém, o valor total da fatura deve ser superior ao valor mínimo para geração de transações.)\\n];\\n \\n$item_2 = [\\n 'name' => 'Item 2', // nome do item, produto ou serviço\\n 'amount' => 2, // quantidade\\n 'value' => 2000 // valor (2000 = R$ 20,00)\\n];\\n \\n$items = [\\n $item_1,\\n $item_2\\n];\\n\\n// Exemplo para receber notificações da alteração do status da transação.\\n// $metadata = ['notification_url'=>'sua_url_de_notificacao_.com.br']\\n// Outros detalhes em: https://dev.gerencianet.com.br/docs/notificacoes\\n\\n// Como enviar seu $body com o $metadata\\n// $body = [\\n// 'items' => $items,\\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\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n client_id: CREDENTIALS::CLIENT_ID,\\n client_secret: CREDENTIALS::CLIENT_SECRET,\\n sandbox: true\\n}\\n\\nbody = {\\n items: [{\\n name: \\\"Product 1\\\",\\n value: 1000,\\n amount: 2\\n }],\\n shippings: [{\\n name: \\\"Default Shipping Cost\\\",\\n value: 100\\n }]\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.create_charge(body: body)\",\n \"language\": \"ruby\"\n },\n {\n \"code\": \"from gerencianet import Gerencianet\\n \\noptions = {\\n 'client_id': 'client_id',\\n 'client_secret': 'client_secret',\\n 'sandbox': True\\n}\\n \\ngn = Gerencianet(options)\\n \\nbody = {\\n 'items': [{\\n 'name': \\\"Product 1\\\",\\n 'value': 1000,\\n 'amount': 2\\n }],\\n 'shippings': [{\\n 'name': \\\"Default Shipping Cost\\\",\\n 'value': 100\\n }]\\n}\\n \\nresponse = gn.create_charge(body=body)\\nprint(response)\",\n \"language\": \"python\"\n },\n {\n \"code\": \"dynamic endpoints = new Endpoints(\\\"client_id\\\", \\\"client_secret\\\", true);\\n \\nvar body = new\\n{\\n items = new[] {\\n new {\\n name = \\\"Product 1\\\",\\n value = 1000,\\n amount = 2\\n }\\n },\\n shippings = new[] {\\n new {\\n name = \\\"Default Shipping Cost\\\",\\n value = 100\\n }\\n }\\n};\\n \\nvar response = endpoints.CreateCharge(null, body);\\nConsole.WriteLine(response);\",\n \"language\": \"asp\",\n \"name\": \".NET\"\n },\n {\n \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\\n\\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\\ne Map<String, Object>\\n\\n\\nJSONObject\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/json/CreateCharge.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/map/CreateCharge.java\\n\\n*/\",\n \"language\": \"java\"\n },\n {\n \"code\": \"interface\\nfunction CreateCharge: String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction CreateCharge: String;\\nvar \\nBody : String;\\n\\nbegin \\n EnableService( 'GerenciaNet.dll' ); \\n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n GerenciaNetAuthorize(); \\n\\n Body := \\n '{'+\\n '\\\"items\\\":'+\\n '['+\\n '{'+\\n '\\\"name\\\":\\\"test article\\\",'+\\n '\\\"value\\\":1900,'+\\n '\\\"amount\\\":2'+\\n '},'+\\n '{'+\\n '\\\"name\\\":\\\"test article 2\\\",'+\\n '\\\"value\\\":3000,'+\\n '\\\"amount\\\":1'+\\n '}'+\\n ']'+\\n '}';\\n\\n Result := ExecuteGerenciaNetRequest( 'createCharge','','',Body );\\nend;\",\n \"language\": \"json\",\n \"name\": \"Delphi\"\n },\n {\n \"code\": \"// No código de exemplo de uso da SDK de Go, definimos as credenciais de acesso à API (Client_Id e Client_Secret) e o ambiente a ser usado (sandbox como 'true' ou 'false') dentro de um arquivo específico (configs.go), que está localizado no diretório \\\"_examples/configs\\\". Essas credenciais são exportadas através da variável 'Credentials'.\\n\\npackage main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\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 }\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[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<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Referente às configurações de repasses. <span class=\\\"atributo\\\">Atributos:</span></div> <div class=\\\"tab2\\\">\\n<code>*payee_code*<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> (<a href=\\\"http://image.prntscr.com/image/cabe13e1e5b64449b942cf31139150ba.png\\\" target=\\\"_blank\\\">código identificador da conta Gerencianet</a> - String).\\n<code>*percentage*<strong class=\\\"atributo-obrigatorio\\\">*</strong></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 \"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<br>\n\nAgora que a transação já foi criada e você já possui o <code>charge_id</code>, é preciso associá-lo para obter o link de pagamento.\n\n<br>\n\n\n## 2.2. Criando um link de pagamento\n\nPara criar um link de pagamento, você precisa ter [gerado a transação](https://dev.gerencianet.com.br/docs/link-pagamento-criando#section-1-crie-a-transa-o), ou seja, que você já tenha o identificador <code>charge_id</code> da cobrança, pois será necessário informá-lo.\n\nEm seguida, basta enviar uma requisição <code>POST</code> para a rota <code>/v1/charge/:id/link</code> para gerar um link de pagamento, onde o <code>:id</code> corresponde ao <code>charge_id</code> da transação criada.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_link\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<?php\\n\\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n\\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n\\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n 'client_id' => $clientId,\\n 'client_secret' => $clientSecret,\\n 'sandbox' => true // altere conforme o ambiente (true = Homologação e false = producao)\\n];\\n\\n// $charge_id refere-se ao ID da transação gerada anteriormente\\n$params = [\\n 'id' => $charge_id\\n];\\n\\n$body = [\\n 'billet_discount' => 5000, // desconto, em reais, caso o pagador escolha boleto (5000 equivale a R$ 50,00)\\n 'card_discount' => 3000, // desconto, em reais, caso o pagador escolha cartão (3000 equivale a R$ 30,00)\\n 'message' => '', // mensagem para o pagador com até 80 caracteres\\n 'expire_at' => '2018-12-20', // data de vencimento da tela de pagamento e do próprio boleto\\n 'request_delivery_address' => false, // solicitar endereço de entrega do comprador?\\n 'payment_method' => 'all' // formas de pagamento disponíveis\\n];\\n\\ntry {\\n $api = new Gerencianet($options);\\n $response = $api->chargeLink($params, $body);\\n print_r($response);\\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');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n client_id: credentials.client_id,\\n client_secret: credentials.client_secret,\\n sandbox: true\\n};\\n\\nvar expireAt = moment()\\n .add(3, 'days')\\n .format('YYYY-MM-DD');\\n\\nvar params = {\\n id: 0\\n};\\n\\nvar body = {\\n message: '',\\n expire_at: expireAt,\\n request_delivery_address: false,\\n payment_method: 'all'\\n};\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n .chargeLink(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\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n client_id: CREDENTIALS::CLIENT_ID,\\n client_secret: CREDENTIALS::CLIENT_SECRET,\\n sandbox: true\\n}\\n\\nexpireAt = Date.today + 3\\n\\nparams = {\\n id: 1000\\n}\\n\\nbody = {\\n billet_discount: 0,\\n card_discount: 0,\\n message: \\\"\\\",\\n expire_at: expireAt.strftime,\\n request_delivery_address: false,\\n payment_method: \\\"all\\\"\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.charge_link(params: params, body: body)\",\n \"language\": \"ruby\"\n },\n {\n \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\n\\noptions = {\\n 'client_id': 'client_id',\\n 'client_secret': 'client_secret',\\n 'sandbox': True\\n}\\n \\ngn = Gerencianet(options)\\n\\nlink = {\\n 'billet_discount': 0,\\n 'card_discount': 0,\\n 'message': '',\\n 'expire_at': '2017-12-12',\\n 'request_delivery_address': False,\\n 'payment_method': 'all'\\n}\\n\\n\\n\\nparams = {\\n 'id': charge['data']['charge_id']\\n}\\n\\nresponse = gn.charge_link(params=params, body=link)\\nprint(response)\",\n \"language\": \"python\"\n },\n {\n \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n class ChargeLink\\n {\\n public static void Execute()\\n {\\n dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\\n\\n var param = new\\n {\\n id = 1000\\n };\\n\\n var body = new\\n {\\n billet_discount = 0,\\n card_discount = 0,\\n message = \\\"\\\",\\n expire_at = DateTime.Now.AddDays(3).ToString(\\\"yyyy-MM-dd\\\"),\\n request_delivery_address = false,\\n payment_method = \\\"all\\\"\\n };\\n\\n try\\n {\\n var response = endpoints.LinkCharge(param, 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\": \"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/Link.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/Link.java\\n\\n*/\",\n \"language\": \"java\"\n },\n {\n \"code\": \"interface\\nfunction ChargeLink (Id: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction LinkCharge(Id: String): String;\\nvar\\n Params: String;\\n Body : String;\\nbegin\\n EnableService( 'GerenciaNet.dll' ); \\n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n GerenciaNetAuthorize();\\n\\n Params := CreateRequestParams( [ 'id='+Id ] ).Text;\\n Body := '{\\\"billet_discount\\\": 10,'+\\n '\\\"card_discount\\\": 10,'+\\n '\\\"message\\\": \\\"link test\\\",'+\\n '\\\"expire_at\\\": \\\"2018-12-12\\\",'+\\n '\\\"request_delivery_address\\\": false,'+\\n '\\\"payment_method\\\": \\\"all\\\"}';\\n Result := ExecuteGerenciaNetRequest( 'linkCharge',Params, '', Body );\\nend;\",\n \"language\": \"json\",\n \"name\": \"Delphi\"\n },\n {\n \"code\": \"// No código de exemplo de uso da SDK de Go, definimos as credenciais de acesso à API (Client_Id e Client_Secret) e o ambiente a ser usado (sandbox como 'true' ou 'false') dentro de um arquivo específico (configs.go), que está localizado no diretório \\\"_examples/configs\\\". Essas credenciais são exportadas através da variável 'Credentials'.\\n\\npackage main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tbody := map[string]interface{} {\\n\\t\\t\\\"billet_discount\\\": 1,\\n\\t\\t\\\"card_discount\\\": 1,\\n\\t\\t\\\"message\\\": \\\"teste\\\",\\n\\t\\t\\\"expire_at\\\": \\\"2018-12-12\\\",\\n\\t\\t\\\"request_delivery_address\\\": false,\\n\\t\\t\\\"payment_method\\\": \\\"all\\\",\\n\\t}\\n\\n\\tres, err := gn.ChargeLink(1, body) // no lugar do 1 coloque o charge_id certo\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n \"language\": \"go\"\n }\n ]\n}\n[/block]\n<br>\n[block:callout]\n{\n \"type\": \"warning\",\n \"body\": \"Para se criar um \\\"link de pagamento\\\" (<code>chargeLink</code>), uma \\\"transação\\\" (<code>createCharge</code>) previamente criada deverá ser informada. Logo, se houver uma tentativa de pagamento e, por alguma razão, não houver sucesso na confirmação do pagamento (ex: cartão recusado, cliente deseja pagar por outra forma, etc), uma nova transação deverá ser gerada e associada a um novo link de pagamento, pois a transação anterior estará com status de <code>waiting</code> ou <code>unpaid</code>, o que significa que devido a tentativa de pagamento, ela já foi atrelada a um método de pagamento.\",\n \"title\": \"IMPORTANTE\"\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/ChargeLink\"\n \"billet_discount\"\n \"card_discount\"\n \"conditional_discount\"\n \"type\"\n \"percentage\",\n \"currency\"\n \"value\"\n \"until_date\"\n \"message\"\n \"expire_at\"\n \"request_delivery_address\"\n \"payment_method\"\n \"banking_billet\"\n \"credit_card\"\n \"all\"</pre>\n\nPara verificar mais detalhes, <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_link\" target=\"_blank\" title=\"Link Interno\">acesse aqui</a> e explore em nosso Playground.\n\n<br>\n\n## b) Atributos que podem ser utilizados para criar um link de pagamento:\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>billet_discount</code>\",\n \"1-0\": \"<code>card_discount</code>\",\n \"3-0\": \"<code>message</code>\",\n \"4-0\": \"<code>expire_at</code>\",\n \"5-0\": \"<code>request_delivery_address</code>\",\n \"6-0\": \"<code>payment_method</code>\",\n \"4-2\": \"Sim\",\n \"5-2\": \"Sim\",\n \"6-2\": \"Sim\",\n \"0-2\": \"Não\",\n \"1-2\": \"Não\",\n \"3-2\": \"Não\",\n \"0-3\": \"Integer\",\n \"1-3\": \"Integer\",\n \"3-3\": \"String\",\n \"4-3\": \"String\",\n \"5-3\": \"Boolean\",\n \"6-3\": \"Object\",\n \"6-1\": \"Define as formas de pagamento que devem ficar disponíveis na tela para seu cliente escolher, podendo ser:\\n\\n- <code>banking_billet</code> (boleto bancário);\\n- <code>credit_card</code> (cartão de crédito) ou;\\n- <code>all</code> (permitir pagamento via boleto e cartão).\",\n \"5-1\": \"Define se a tela de pagamento deve solicitar que o pagador informe um endereço de entrega. Há dois possíveis valores:\\n\\n- <code>true</code> (equivale a \\\"sim\\\") ou;\\n- <code>false</code> (equivale a \\\"não\\\").\",\n \"4-1\": \"Define a data de vencimento da tela de pagamento e do próprio boleto, caso esta seja a forma de pagamento escolhida.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: YYYY-MM-DD</span></strong>\",\n \"3-1\": \"Define uma mensagem para o pagador. A mensagem aparece na tela de pagamento, nos e-mails relacionados à cobrança e no boleto, caso esta seja a forma de pagamento escolhida.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 3 e máximo de 80 caracteres.</span></strong>\",\n \"1-1\": \"Define um desconto, em reais, caso o pagador escolha cartão de crédito como forma de pagamento (informar valor Inteiro).\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">5000 equivale a R$ 50,00</span></strong>\",\n \"0-1\": \"Define um desconto, em reais, caso o pagador escolha boleto bancário como forma de pagamento (informar valor inteiro, em reais).\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">5000 equivale a R$ 50,00</span></strong>\",\n \"2-0\": \"<code>conditional_discount</code>\",\n \"2-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 \"2-2\": \"Não\",\n \"2-3\": \"Object\"\n },\n \"cols\": 4,\n \"rows\": 7\n}\n[/block]\n<br>\n\nAo consumir o endpoint <code>/charge/:id/link</code>, ou através do Playground, a cobrança ganha o status <code>link</code>. Desta forma, o integrador consegue distinguir cobranças comuns que ainda não tiveram forma de pagamento definida (status <code>new</code>) de cobranças que foram associadas a um link de pagamento (status <code>link</code>).\n\nO integrador só precisa redirecionar o pagador para o link retornado na tag <code>payment_url</code> e todo o resto será realizado na tela de pagamento da Gerencianet.\n\nA seguir, através da aba \"Dados de Entrada\", um JSON simples que pode ser utilizado para criar o link de pagamento. Além disso, é possível observar a saída prevista e o schema de validação com todas as tags (obrigatórias e opcionais) disponíveis para este método. Lembrando que também é preciso informar o parâmetro de entrada <code>charge_id</code> da transação criada:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"{\\n \\\"message\\\": \\\"Escreva aqui, se quiser, uma mensagem ao seu cliente, limite de 80 caracteres\\\",\\n \\\"payment_method\\\": \\\"all\\\",\\n \\\"expire_at\\\": \\\"2012-12-20\\\",\\n \\\"request_delivery_address\\\": false,\\n \\\"billet_discount\\\": 5000,\\n \\\"card_discount\\\": 3000\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de Entrada\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200,\\n \\\"data\\\": {\\n \\\"charge_id\\\": 148003,\\n \\\"status\\\": \\\"link\\\",\\n \\\"total\\\": 5990,\\n \\\"custom_id\\\": null,\\n \\\"payment_url\\\": \\\"https://pagamento.gerencianet.com.br/:identificador\\\",\\n \\\"payment_method\\\": \\\"all\\\",\\n \\\"created_at\\\": \\\"2016-12-14 11:31:37\\\"\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de Saída\"\n },\n {\n \"code\": \"{\\n \\\"id\\\": \\\"/ChargeLink\\\",\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"billet_discount\\\": {\\n \\\"type\\\": \\\"integer\\\",\\n \\\"minimum\\\": 1,\\n \\\"maximum\\\": 99999999\\n },\\n \\\"card_discount\\\": {\\n \\\"type\\\": \\\"integer\\\",\\n \\\"minimum\\\": 1,\\n \\\"maximum\\\": 99999999\\n },\\n \\\"message\\\": {\\n \\\"type\\\": \\\"string\\\",\\n \\\"minLength\\\": 3,\\n \\\"maxLength\\\": 80\\n },\\n \\\"expire_at\\\": {\\n \\\"type\\\": \\\"string\\\",\\n \\\"pattern\\\": \\\"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\\\"\\n },\\n \\\"request_delivery_address\\\": {\\n \\\"type\\\": \\\"boolean\\\"\\n },\\n \\\"payment_method\\\": {\\n \\\"enum\\\": [\\n \\\"banking_billet\\\",\\n \\\"credit_card\\\",\\n \\\"all\\\"\\n ]\\n }\\n },\\n \\\"required\\\": [\\n \\\"request_delivery_address\\\",\\n \\\"expire_at\\\",\\n \\\"payment_method\\\"\\n ]\\n}\",\n \"language\": \"json\",\n \"name\": \"Schema\"\n }\n ]\n}\n[/block]\nEsse JSON, presente na aba \"Dados de Entrada\", define as seguintes informações ao criar o link de pagamento:\n\n- <code>message</code>: define uma mensagem para o pagador. A mensagem aparece na tela de pagamento, nos e-mails relacionados à cobrança e no boleto, caso esta seja a forma de pagamento escolhida (máximo de 80 caracteres);\n\n- <code>payment_method</code>: define as formas de pagamento que devem ficar disponíveis na tela (<code>banking_billet</code>, <code>credit_card</code> ou <code>all</code>);\n\n- <code>expire_at</code>: define a data de vencimento da tela de pagamento e do próprio boleto, caso esta seja a forma de pagamento escolhida;\n\n- <code>request_delivery_address</code>: define se a tela de pagamento deve solicitar que o pagador informe um endereço de entrega (<code>true</code> ou <code>false</code>);\n\n- <code>billet_discount</code>: define um desconto, em centavos, caso o pagador escolha boleto bancário como forma de pagamento (informar valor Inteiro);\n\n- <code>card_discount</code>: define um desconto, em centavos, caso o pagador escolha cartão de crédito como forma de pagamento (informar valor Inteiro).\n\n<br>\n\n\n# 3. Criando o link de pagamento em *One Step* com a modalidade Assinatura\n\n<hr>\n\n## 3.1. Criar plano de Assinatura\n\n\n\nPara criar um link de pagamento que permite ao seu cliente realizar inscrição em uma Assinatura, deve-se primeiro gerar um plano definindo a periodicidade e quantas cobranças devem ser geradas.\nOs detalhes de como gerar um plano de Assinatura você encontra <a href=\"https://dev.gerencianet.com.br/docs/criando-assinaturas#section-1-crie-o-plano-de-assinatura\" target=\"_blank\" title=\"Link Interno\">neste link</a>.\n\n## 3.2. Associar plano ao link de pagamento\n\n\nApós ter criado o seu plano de Assinatura, basta enviar uma requisição <code>POST</code> para a rota <code>/v1/plan/:id/subscription/one-step/link</code> para gerar um link de pagamento, onde o <code>:id</code> corresponde ao <code>plan_id</code> do plano que deseja atrelar à Assinatura.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<?php\\n\\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n\\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n\\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n 'client_id' => $clientId,\\n 'client_secret' => $clientSecret,\\n 'sandbox' => true // altere conforme o ambiente (true = Homologação e false = producao)\\n];\\n\\n$params = ['id' => 0];\\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$settings = [\\n 'payment_method' => 'all',\\n 'expire_at' => '2021-12-15',\\n 'request_delivery_address' => false,\\n];\\n\\n$body = [\\n 'items' => $items,\\n 'settings' => $settings,\\n];\\n\\ntry {\\n $api = new Gerencianet($options);\\n $response = $api->oneStepSubscriptionLink($params, $body);\\n\\n print_r($response);\\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 },\n {\n \"code\": \"\",\n \"language\": \"javascript\",\n \"name\": \"NodeJS\"\n },\n {\n \"code\": \"\",\n \"language\": \"text\",\n \"name\": \"Ruby\"\n },\n {\n \"code\": \"\",\n \"language\": \"text\",\n \"name\": \"Python\"\n },\n {\n \"code\": \"\",\n \"language\": \"text\",\n \"name\": \".NET\"\n },\n {\n \"code\": \"\",\n \"language\": \"text\",\n \"name\": \"Java\"\n },\n {\n \"code\": \"\",\n \"language\": \"text\",\n \"name\": \"Delphi\"\n },\n {\n \"code\": \"\",\n \"language\": \"text\",\n \"name\": \"Go\"\n }\n ]\n}\n[/block]\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/Plan\"\n \"items\"\n \"name\"\n \"value\"\n \"amount\"\n \"shippings\"\n \"name\"\n \"value\"\n \"metadata\"\n \"custom_id\"\n \"notification_url\"\n \"settings\"\n \"billet_discount\"\n \"card_discount\"\n \"conditional_discount\"\n \"type\"\n \"percentage\",\n \"currency\"\n \"value\"\n \"until_date\"\n \"message\"\n \"expire_at\"\n \"request_delivery_address\"\n \"payment_method\"\n \"banking_billet\"\n \"credit_card\"\n \"all\"</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 um link de pagamento com a modalidade Assinatura:\n\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>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 \"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 \"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 \"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<br>\n\nObjeto **settings**\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>settings</code>\",\n \"0-1\": \"Definição das formas de pagamento e outros atributos do link de pagamento\",\n \"0-2\": \"Sim\",\n \"0-3\": \"Objeto **settings**\"\n },\n \"cols\": 4,\n \"rows\": 1\n}\n[/block]\n<br>\nAtributos utilizados no objeto **settings**\n\n\n[block:parameters]\n{\n \"data\": {\n \"0-0\": \"<code>billet_discount</code>\",\n \"1-0\": \"<code>card_discount</code>\",\n \"2-0\": \"<code>conditional_discount</code>\",\n \"3-0\": \"<code>message</code>\",\n \"4-0\": \"<code>expire_at</code>\",\n \"5-0\": \"<code>request_delivery_address</code>\",\n \"6-0\": \"<code>payment_method</code>\",\n \"h-0\": \"Atributo\",\n \"h-1\": \"Descrição\",\n \"h-2\": \"Obrigatório\",\n \"h-3\": \"Tipo\",\n \"0-2\": \"Não\",\n \"1-2\": \"Não\",\n \"2-2\": \"Não\",\n \"3-2\": \"Não\",\n \"4-2\": \"Sim\",\n \"5-2\": \"Sim\",\n \"6-2\": \"Sim\",\n \"0-3\": \"Integer\",\n \"1-3\": \"Integer\",\n \"2-3\": \"Object\",\n \"3-3\": \"String\",\n \"4-3\": \"String\",\n \"5-3\": \"Boolean\",\n \"6-3\": \"Boolean\",\n \"0-1\": \"Define um desconto, em reais, caso o pagador escolha boleto bancário como forma de pagamento (informar valor inteiro, em reais).\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">5000 equivale a R$ 50,00</span></strong>\",\n \"1-1\": \"Define um desconto, em reais, caso o pagador escolha cartão de crédito como forma de pagamento (informar valor Inteiro).\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">5000 equivale a R$ 50,00</span></strong>\",\n \"2-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 \"3-1\": \"Define uma mensagem para o pagador. A mensagem aparece na tela de pagamento, nos e-mails relacionados à cobrança e no boleto, caso esta seja a forma de pagamento escolhida.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 3 e máximo de 80 caracteres.</span></strong>\",\n \"4-1\": \"Define a data de vencimento da tela de pagamento e do próprio boleto, caso esta seja a forma de pagamento escolhida.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: YYYY-MM-DD</span></strong>\",\n \"5-1\": \"Define se a tela de pagamento deve solicitar que o pagador informe um endereço de entrega. Há dois possíveis valores:\\n\\n- <code>true</code> (equivale a \\\"sim\\\") ou;\\n- <code>false</code> (equivale a \\\"não\\\").\",\n \"6-1\": \"Define as formas de pagamento que devem ficar disponíveis na tela para seu cliente escolher, podendo ser:\\n\\n- <code>banking_billet</code> (boleto bancário);\\n- <code>credit_card</code> (cartão de crédito) ou;\\n- <code>all</code> (permitir pagamento via boleto e cartão).\"\n },\n \"cols\": 4,\n \"rows\": 7\n}\n[/block]\n<strong class=\"atributo-obrigatorio-texto\">* valor obrigatório</strong>\n\n<br>\nA seguir, através da aba \"Dados de Entrada\", um JSON simples que pode ser utilizado para criar o link de pagamento com a modalidade Assinatura. Além disso, é possível observar a saída prevista:\n\n\n\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"{\\n \\\"items\\\": [\\n {\\n \\\"amount\\\": 2,\\n \\\"name\\\": \\\"Silicon Valley\\\",\\n \\\"value\\\": 564\\n }\\n ],\\n \\\"metadata\\\": {\\n \\\"custom_id\\\": \\\"Assinatura\\\",\\n \\\"notification_url\\\": \\\"sua_url_notificação\\\"\\n },\\n \\n \\\"settings\\\": {\\n\\t \\\"payment_method\\\": \\\"all\\\" , \\n\\t \\\"expire_at\\\": \\\"2025-02-08\\\",\\n\\t \\\"request_delivery_address\\\": true\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de Entrada\"\n },\n {\n \"code\": \"\\\"code\\\": 200,\\n \\\"data\\\": {\\n \\\"subscription_id\\\": 8021,\\n \\\"status\\\": \\\"new\\\",\\n \\\"custom_id\\\": \\\"Assinatura\\\",\\n \\\"charge\\\": {\\n \\\"id\\\": 371496106,\\n \\\"status\\\": \\\"link\\\",\\n \\\"total\\\": 1128,\\n \\\"parcel\\\": 1\\n },\\n \\\"payment_url\\\": \\\"https://pagamento.gerencianet.com.br/:identificador\\\",\\n \\\"payment_method\\\": \\\"all\\\",\\n \\\"conditional_discount_date\\\": null,\\n \\\"request_delivery_address\\\": true,\\n \\\"expire_at\\\": \\\"2025-02-08\\\",\\n \\\"created_at\\\": \\\"2021-11-09 12:06:54\\\"\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de Saída\"\n }\n ]\n}\n[/block]\n<br>\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 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 \"body\": \"As notificações permitem que você seja informado quando uma transação tiver seu status alterado. Dessa forma, você poderá identificar quando uma cobrança for paga, por exemplo.\\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 \"title\": \"Callbacks (notificações) das transações da API para seu sistema\"\n}\n[/block]\n<br>\n\n## c) Personalizando sua tela de pagamento:\n\nÉ possível definir uma cor e um logo para sua tela. Para isso, <a href=\"https://gerencianet.com.br/#login\" target=\"_blank\" title=\"Logue em sua conta Gerencianet\">logue em sua conta Gerencianet</a> e acesse o menu <code>Cobranças > Configurações</code> na aba <code>Comunicação</code>.\n\nMesmo que prefira utilizar sua própria tela, as informações definidas aqui serão utilizadas também nos e-mails disparados pela API. Então recomendamos que faça a personalização de qualquer forma.\n\n## d) Testando em ambiente de testes (Playground):\n\nPara criar um link de pagamento, primeiro é necessário criar uma cobrança na API, consumindo o endpoint <code>POST /v1/charge</code>. Este endpoint retorna, dentre outras informações, um identificador para a cobrança. O status inicial de uma cobrança é <code>new</code>:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"{ \\n \\\"items\\\": [\\n {\\n \\\"name\\\": \\\"Produto exemplo\\\",\\n \\\"value\\\": 1000,\\n \\\"amount\\\": 1\\n }\\n ]\\n}\",\n \"language\": \"json\",\n \"name\": \"Entrada\"\n }\n ]\n}\n[/block]\n<br>\n\nLogo abaixo, os dados de saída previstos de acordo com a entrada realizada acima:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"{ \\n \\\"code\\\":200,\\n \\\"data\\\":{ \\n \\\"charge_id\\\":121062,\\n \\\"status\\\":\\\"new\\\",\\n \\\"total\\\":1000,\\n \\\"custom_id\\\":null,\\n \\\"created_at\\\":\\\"2016-10-31 10:43:57\\\"\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Saída\"\n }\n ]\n}\n[/block]\n<br>\n\nConhecendo o identificador da cobrança, basta consumir o endpoint <code>POST /v1/charge/:id/link</code> para gerar um link de pagamento.\n\n<br>\n<hr>\n\n# 3. Outros endpoints e métodos\n\nExistem outros endpoints e métodos relacionados a link de pagamento que estão disponíveis na API e podem ser explorados pelo integrador. Confira a relação completa:\n\n- [Alterar determinados parâmetros/atributos de um link de pagamento existente](https://dev.gerencianet.com.br/v1/docs/link-outros-endpoints#section-1-alterar-determinados-par-metros-atributos-de-um-link-de-pagamento-existente)\n\n- [Cancelar determinada transação](https://dev.gerencianet.com.br/v1/docs/link-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/v1/docs/link-outros-endpoints#section-3-alterar-url-de-notifica-o-notification_url-e-ou-custom_id-de-transa-o)\n\n- [Acrescentar informações ao histórico da transação](https://dev.gerencianet.com.br/v1/docs/link-outros-endpoints#section-4-acrescentar-informa-es-ao-hist-rico-da-transa-o)\n\n- [Retornar informações sobre transação](https://dev.gerencianet.com.br/v1/docs/link-outros-endpoints#section-5-retornar-informa-es-sobre-transa-o)\n\n<br>\n<hr>\n\n# 4. Vídeo: Criando transação via Playground (ambiente de testes/sandbox)\n\nPensando em oferecer novos meios de transmitir informações, a Gerencianet disponibiliza o vídeo a seguir com o objetivo de explicar, de maneira clara e objetiva, como criar uma transação via playground (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[block:callout]\n{\n \"type\": \"info\",\n \"title\": \"Curso Completo de Integração com a API Gerencianet\",\n \"body\": \"Para acesso as demais aulas, de outros assuntos, acesse a página <a href=\\\"https://dev.gerencianet.com.br/docs/curso-online-gerencianet\\\" title=\\\"Link Interno\\\">Curso Online de Integrações</a>.\"\n}\n[/block]","updates":[],"order":1,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"61892db89071ff0070eda6fa","createdAt":"2021-11-08T14:01:28.731Z","user":"5e8b36bc27ee9b00181b36bf","category":{"sync":{"isSync":false,"url":""},"pages":[],"title":"Link de Pagamento","slug":"link-de-pagamento","order":14,"from_sync":false,"reference":false,"_id":"606f2ca6c5ba91007878343c","createdAt":"2016-11-10T16:00:32.392Z","__v":0,"project":"575aeffae12cf20e002f306c","version":"606f2ca7c5ba9100787834c6"},"version":{"version":"1.1.0","version_clean":"1.1.0","codename":"2021","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["606f2ca6c5ba91007878342b","575af039a083950e004487f7","575af5c7ba4ed70e000ca288","606f2ca6c5ba91007878342c","606f2ca6c5ba91007878342d","606f2ca6c5ba91007878342e","606f2ca6c5ba91007878342f","5761a63d207db7170022fc14","5761b9a2b65324200072d79e","576832939f0bf4190014ffdf","576832c09f0bf4190014ffe1","576832cba151c10e004316f0","576832d5bb15f40e00a288ec","576832e107b1f30e0039c645","606f2ca6c5ba910078783430","606f2ca6c5ba910078783431","5783f78c5cbce30e0074e2b7","606f2ca6c5ba910078783432","606f2ca6c5ba910078783433","606f2ca6c5ba910078783434","606f2ca6c5ba910078783435","606f2ca6c5ba910078783436","606f2ca6c5ba910078783437","578529f887c9280e0090394b","606f2ca6c5ba910078783438","606f2ca6c5ba910078783439","606f2ca6c5ba91007878343a","606f2ca6c5ba91007878343b","606f2ca6c5ba91007878343c","606f2ca6c5ba91007878343d","606f2ca6c5ba91007878343e","606f2ca6c5ba91007878343f","606f2ca6c5ba910078783440","606f2ca6c5ba910078783441","60d61f026ddc3901a32ee5f1","60ec37c637005f015e54174e","61473375119247002a9c14d7","6283a3819575c60045513ea2"],"_id":"606f2ca7c5ba9100787834c6","project":"575aeffae12cf20e002f306c","createdAt":"2016-06-10T16:51:06.080Z","releaseDate":"2016-06-10T16:51:06.080Z","__v":4,"forked_from":"575aeffae12cf20e002f306f"},"project":"575aeffae12cf20e002f306c","__v":0,"parentDoc":null}
Criando link de pagamento
Passo a passo para gerar uma cobrança de link de pagamento na API Gerencianet