{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","settings":"","results":{"codes":[]},"params":[]},"next":{"description":"","pages":[]},"title":"Outros endpoints","type":"basic","slug":"link-outros-endpoints","excerpt":"Outros endpoints para link de pagamento da API Gerencianet","body":"Existem outros endpoints (serviços) disponíveis na API e que podem ser utilizados em links de pagamento:\n\n1. [Alterar determinados parâmetros/atributos de um link de pagamento existente](https://dev.gerencianet.com.br/docs/link-outros-endpoints#section-1-alterar-determinados-par-metros-atributos-de-um-link-de-pagamento-existente)\n\n2. [Cancelar determinada transação](https://dev.gerencianet.com.br/docs/link-outros-endpoints#section-2-cancelar-determinada-transa-o)\n\n3. [Alterar URL de notificação (notification_url) e/ou custom_id de transação](https://dev.gerencianet.com.br/docs/link-outros-endpoints#section-3-alterar-url-de-notifica-o-notification_url-e-ou-custom_id-de-transa-o)\n\n4. [Acrescentar informações ao histórico da transação](https://dev.gerencianet.com.br/docs/link-outros-endpoints#section-4-acrescentar-informa-es-ao-hist-rico-da-transa-o)\n\n5. [Retornar informações sobre transação](https://dev.gerencianet.com.br/docs/link-outros-endpoints#section-5-retornar-informa-es-sobre-transa-o)\n\n6. [Reenviar Link de pagamento por e-mail](https://dev.gerencianet.com.br/v1.1.0/docs/link-outros-endpoints#section-6-reenviar-link-de-pagamento-por-e-mail)\n[block:callout]\n{\n \"type\": \"warning\",\n \"body\": \"O restante desta página apresenta os procedimentos detalhados, mas você precisa [instalar uma de nossas bibliotecas](https://dev.gerencianet.com.br/docs#section-2-bibliotecas) em seu servidor para executar os códigos de exemplo.\",\n \"title\": \"Antes de prosseguir, certifique-se de que a SDK da Gerencianet foi instalada\"\n}\n[/block]\n# 1. Alterar determinados parâmetros/atributos de um link de pagamento existente\n\nPermite atualizar (alterar) determinados parâmetros e atributos de um link de pagamento criado através do <code>PUT /v1/charge/:id/link</code>, desde que não tenha ocorrido a confirmação do pagamento.\n\nAlgumas informações que são passíveis de serem atualizadas/alteradas em um link de pagamento:\n\n- Atualizar (alterar) forma de pagamento permitida;\n- Inserção de descontos (inclusive condicionais);\n- Alteração da mensagem informativa ao cliente;\n- Data de vencimento do link de pagamento;\n- Mudança de solicitação (ou não) do endereço de entrega do comprador.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso [usando nosso Playground](https://dev.gerencianet.com.br/docs/playground-transacoes#put_charge_id_link).\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' => 0,\\n 'card_discount' => 0,\\n 'message' => '',\\n 'expire_at' => '2018-12-20',\\n 'request_delivery_address' => false,\\n 'payment_method' => 'all'\\n];\\n\\ntry {\\n $api = new Gerencianet($options);\\n $response = $api->updateChargeLink($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 billet_discount: 0,\\n card_discount: 0,\\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 .updateChargeLink(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.update_charge_link(params: params, body: body)\",\n \"language\": \"ruby\"\n },\n {\n \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n 'id': 0\\n}\\n\\nbody = {\\n 'billet_discount': 0,\\n 'card_discount': 0,\\n 'message': '',\\n 'expire_at': '2018-12-12',\\n 'request_delivery_address': false,\\n 'payment_method': 'all'\\n}\\n\\nresponse = gn.update_charge_link(params=params, body=body)\\nprint(response)\",\n \"language\": \"python\"\n },\n {\n \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n class UpdateChargeLink\\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.UpdateChargeLink(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\": \"Em atualização\",\n \"language\": \"java\"\n },\n {\n \"code\": \"Em atualização\",\n \"language\": \"json\",\n \"name\": \"Delphi\"\n },\n {\n \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tbody := map[string]interface{} {\\n\\t\\t\\\"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.UpdateChargeLink(1, body) // no lugar do 1 coloque o charge_id certo\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n \"language\": \"go\"\n }\n ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/ChargeLinkUpdate\"\n \"billet_discount\": {\n \"card_discount\": {\n \"conditional_discount\": {\n \"null\"\n \"id\": \"/ConditionalDiscount\"\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, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-transacoes#put_charge_id_link) e explore em nosso Playground.\n\n<br>\n\n## b) Atributos que podem ser utilizados para alterar determinados parâmetros/atributos de um link de pagamento existente:\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\": \"billet_discount\",\n \"1-0\": \"card_discount\",\n \"2-0\": \"conditional_discount\",\n \"3-0\": \"message\",\n \"4-0\": \"expire_at\",\n \"5-0\": \"request_delivery_address\",\n \"6-0\": \"payment_method\",\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 \"5-2\": \"Sim\",\n \"5-3\": \"Boolean\",\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 \"4-2\": \"Sim\",\n \"4-3\": \"String\",\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 \"0-2\": \"Não\",\n \"0-3\": \"Integer\",\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 \"1-2\": \"Não\",\n \"1-3\": \"Integer\",\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\\n<span class=\\\"tab1\\\">*Observação: também é possível remover o desconto condicional. Para tal, informe <code>conditional_discount</code> como <code>null</code> (<a href=\\\"https://s3-sa-east-1.amazonaws.com/pe85007/portal/wp-content/uploads/2018/07/30132758/ChargeLinkUpdate_exemplo_null.png\\\" target=\\\"_blank\\\">exemplo</a>)*</span>\",\n \"2-2\": \"Não\",\n \"2-3\": \"Object\",\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 \"3-2\": \"Não\",\n \"3-3\": \"String\",\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 \"6-2\": \"Sim\",\n \"6-3\": \"Object\"\n },\n \"cols\": 4,\n \"rows\": 7\n}\n[/block]\n<br>\n<hr>\n\n# 2. Cancelar determinada transação\n\nUma transação pode ser cancelada apenas se ela possuir o status <code>new</code>, <code>waiting</code>, <code>unpaid</code> ou <code>link</code>.\n\nA partir do momento que uma transação é cancelada, existe apenas uma condição para que esse status seja alterado novamente: se o cliente imprimir o boleto antes do integrador cancelar a transação, ele poderá realizar o pagamento normalmente em uma agência bancária. Neste caso, o integrador e o pagador recebem a confirmação do pagamento como já acontece normalmente e o status da cobrança é alterado de <code>canceled</code> para <code>paid</code>.\n\nPara cancelar uma transação, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/charge/:id/cancel</code>, onde <code>:id</code> é o <code>charge_id</code> da transação desejada.\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 (\\\"charge_id\\\")\\n$params = [\\n 'id' => $charge_id\\n];\\n \\ntry {\\n $api = new Gerencianet($options);\\n $charge = $api->cancelCharge($params, []);\\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');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n\\tclient_id: credentials.client_id,\\n\\tclient_secret: credentials.client_secret,\\n\\tsandbox: true\\n}\\n\\nvar params = {\\n\\tid: 0\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n\\t.cancelCharge(params)\\n\\t.then(console.log)\\n\\t.catch(console.log)\\n\\t.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\\nparams = {\\n id: 2363\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.cancel_charge(params: params)\",\n \"language\": \"ruby\"\n },\n {\n \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n 'id': 1\\n}\\n\\nresponse = gn.cancel_charge(params=params)\\nprint(response)\",\n \"language\": \"python\"\n },\n {\n \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n class CancelCharge\\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 = 0\\n };\\n\\n try\\n {\\n var response = endpoints.CancelCharge(param);\\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/CancelCharge.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/CancelCharge.java\\n\\n*/\",\n \"language\": \"java\"\n },\n {\n \"code\": \"interface\\nfunction CancelCharge(Id: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction CancelCharge(Id: String): String;\\nvar\\n CancelParams: String;\\nbegin\\n EnableService( 'GerenciaNet.dll' ); \\n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n GerenciaNetAuthorize();\\n\\n CancelParams := CreateRequestParams( [ 'id='+Id ] ).Text;\\n Result := ExecuteGerenciaNetRequest( 'cancelCharge',CancelParams, '', '' );\\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\\tres, err := gn.CancelCharge(1) // 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<hr>\n\n# 3. Alterar URL de notificação (notification_url) e/ou custom_id de transação\n\nÉ possível definir ou alterar as informações enviadas na propriedade <code>metadata</code> da transação a qualquer momento. Este endpoint é de **extrema importância** para atualizar sua URL de notificação atrelada às transações ou modificar o <code>custom_id</code> previamente associado às suas transações.\n\nPara alterar a <code>notification_url</code> e/ou <code>custom_id</code> de uma transação, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/charge/:id/metadata</code>, onde <code>:id</code> é o <code>charge_id</code> da transação desejada.\n\n**Casos de uso deste endpoint:**\n\n- Integrador alterou o IP do servidor que estava associado na URL de notificação das transações;\n\n- Integrador atualizou a URL de notificação para as novas transações que forem criadas (<code>createCharge</code>), mas precisa atualizar também nas transações anteriores (<code>updateChargeMetadata</code>) que foram geradas e que estão associadas com a URL incorreta/desatualizada;\n\n- Foi instalado SSL (https) no servidor do cliente e mesmo que o cliente defina uma regra de redirecionamento 301 ou 302, será preciso definir a nova URL nas transações que estão com a URL \"antiga\";\n\n- Integrador gerou cobranças e não havia informado a URL de notificação ao enviar a requisição de criação da transação;\n\n- Modificar ou acrescentar uma informação junto ao atributo <code>custom_id</code> associado às transações geradas previamente;\n\n- Dentre outros possíveis cenários.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_metadata\" 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 (\\\"charge_id\\\")\\n$params = [\\n 'id' => $charge_id\\n];\\n \\n$body = [\\n 'custom_id' => 'REF0001', // associar transação Gerencianet com seu identificador próprio\\n 'notification_url' => 'http://seu_dominio.com/notification' // url de notificação\\n];\\n \\ntry {\\n $api = new Gerencianet($options);\\n $charge = $api->updateChargeMetadata($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 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 body = {\\n custom_id: 'REF0001'\\n notification_url: 'http://your_domain.com/notification',\\n}\\n \\nvar gerencianet = new Gerencianet(options);\\n \\ngerencianet\\n .updateChargeMetadata(params, 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 \\nparams = {\\n id: 1000\\n}\\n \\nbody = {\\n notification_url: \\\"http://yourdomain.com\\\",\\n custom_id: \\\"my_new_id\\\"\\n}\\n \\ngerencianet = Gerencianet.new(options)\\ngerencianet.update_charge_metadata(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\\t'id': 1000\\n}\\n \\nbody = {\\n\\t'notification_url': \\\"http://yourdomain.com\\\",\\n\\t'custom_id': \\\"my_new_id\\\"\\n}\\n \\ngn.update_charge_metadata(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 notification_url = \\\"http://yourdomain.com\\\",\\n custom_id = \\\"my_new_id\\\"\\n};\\n \\nvar response = endpoints.UpdateChargeMetadata(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/UpdateMetadata.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/UpdateMetadata.java\\n\\n*/\",\n \"language\": \"java\"\n },\n {\n \"code\": \"interface\\nfunction UpdateChargeMetadata(Id: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction UpdateChargeMetadata(Id: String): String;\\nvar\\n Body : String;\\n Params : 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 :=\\n '{\\\"custom_id\\\": \\\"Product10\\\",'+\\n '\\\"notification_url\\\": \\\"http://domain.com/notification\\\" }';\\n Result := ExecuteGerenciaNetRequest( 'updateChargeMetadata', 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\\\"custom_id\\\": \\\"Product 0001\\\",\\n\\t\\t\\\"notification_url\\\": \\\"http://domain.com/notification\\\",\\n\\t}\\n\\n\\tres, err := gn.UpdateChargeMetadata(1, body) // no lugar do 1 coloque o charge_id certo\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n \"language\": \"go\"\n }\n ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/ChargeMetadataUpdate\"\n \"notification_url\"\n \"custom_id\"</pre>\n\nPara verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_metadata) e explore em nosso Playground.\n\n<br>\n\n## b) Atributos que podem ser utilizados para atualizar URL de notificação e/ou custom_id:\n[block:parameters]\n{\n \"data\": {\n \"0-0\": \"<code>notification_url</code>\",\n \"1-0\": \"<code>custom_id</code>\",\n \"h-0\": \"Atributo\",\n \"h-1\": \"Descrição\",\n \"h-2\": \"Obrigatório\",\n \"h-3\": \"Tipo\",\n \"0-1\": \"Endereço de sua URL válida que receberá as notificações de mudanças de status das transações.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres.</span></strong></div>\",\n \"1-1\": \"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.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres.</span></strong></div>\",\n \"0-2\": \"Não\",\n \"1-2\": \"Não\",\n \"0-3\": \"String/null\",\n \"1-3\": \"String\"\n },\n \"cols\": 4,\n \"rows\": 2\n}\n[/block]\n<br>\n<hr>\n\n# 4. Acrescentar informações ao histórico da transação\n\nO histórico de uma transação representa todas as ações que ocorreram com esta transação até o presente momento. As mensagens personalizadas não influenciam na transação em si, apenas em seu histórico.\n\nEste pode ser visualizado tanto no detalhamento da transação pela interface quanto usando o *endpoint* de detalhes da transação.\n\nPara isso, basta enviar o identificador <code>charge_id</code> e a mensagem a ser adicionada ao histórico da transação.\n\nPara adicionar mensagens personalizadas no histórico de uma transação, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/charge/:id/history</code>, onde <code>:id</code> é o <code>charge_id</code> da transação desejada.\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 (\\\"charge_id\\\")\\n$params = [\\n 'id' => $charge_id\\n];\\n \\n$body = [\\n 'description' => 'Custom history' // mensagem que será inserida ao histórico do carnê\\n];\\n \\ntry {\\n $api = new Gerencianet($options);\\n $response = $api->createChargeHistory($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'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 params = {\\n id: 1000\\n}\\n \\nvar body = {\\n description: 'Custom history'\\n}\\n \\nvar gerencianet = new Gerencianet(options);\\n \\ngerencianet\\n .createChargeHistory(params, body)\\n .then(console.log)\\n .catch(console.log)\\n .done();\\n\",\n \"language\": \"javascript\",\n \"name\": \"NodeJS\"\n },\n {\n \"code\": \"\\nrequire \\\"gerencianet\\\"\\n \\noptions = {\\n client_id: \\\"client_id\\\",\\n client_secret: \\\"client_secret\\\",\\n sandbox: true\\n}\\n \\nparams = {\\n id: 1000\\n}\\n \\nbody = {\\n description: 'Custom description'\\n}\\n \\ngerencianet = Gerencianet.new(options)\\ngerencianet.create_charge_history(params: params, body: body)\\n\",\n \"language\": \"ruby\"\n },\n {\n \"code\": \"\\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 \\nparams = {\\n 'id': 1000\\n}\\n \\nbody = {\\n 'description': 'Custom description'\\n}\\n \\ngn.create_carnet_history(params=params, body=body)\\n\",\n \"language\": \"python\"\n },\n {\n \"code\": \"\\ndynamic endpoints = new Endpoints(\\\"client_id\\\", \\\"client_secret\\\", true);\\n \\nvar params = new {\\n id = 1000\\n};\\n \\nvar body = new\\n{\\n description = \\\"This charge was not fully paid\\\"\\n};\\n \\nvar response = endpoints.CreateChargeHistory(params, body);\\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/CreateChargeHistory.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/CreateChargeHistory.java\\n\\n*/\",\n \"language\": \"java\"\n },\n {\n \"code\": \"interface\\nfunction CreateChargeHistory(Id: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction CreateChargeHistory(Id: String): String;\\nvar\\n Body : String;\\n UpdateParams : String;\\nbegin\\n EnableService( 'GerenciaNet.dll' ); \\n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n GerenciaNetAuthorize();\\n\\n UpdateParams := CreateRequestParams( [ 'id='+Id ] ).Text;\\n Body := '{\\\"description\\\": \\\"This carnet is about a service\\\"}';\\n Result := ExecuteGerenciaNetRequest( 'createChargeHistory',UpdateParams, '', 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\\\"description\\\": \\\"This charge was not fully paid\\\",\\n\\t}\\n\\n\\tres, err := gn.CreateChargeHistory(1, body) // no lugar do 1 coloque o charge_id certo\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n \"language\": \"go\"\n }\n ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/ChargeHistory\"\n \"description\"</pre>\n\nPara verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_history) e explore em nosso Playground.\n\n<br>\n\n## b) Atributo que pode ser utilizado para acrescentar mensagens ao histórico da 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>description</code>\",\n \"0-1\": \"Permite acrescentar informações ao histórico da transação.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255 caracteres.</span></strong>\",\n \"0-2\": \"Sim\",\n \"0-3\": \"String\"\n },\n \"cols\": 4,\n \"rows\": 1\n}\n[/block]\n<br>\n<hr>\n\n# 5. Retornar informações sobre transação\n\nPara retornar informações de uma transação, você deve enviar uma requisição <code>GET</code> para a rota <code>/v1/charge/:id</code>, onde <code>:id</code> é o <code>charge_id</code> da transação desejada.\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 = [\\n 'id' => $charge_id // $charge_id refere-se ao ID da transação (\\\"charge_id\\\")\\n];\\n\\ntry {\\n $api = new Gerencianet($options);\\n $charge = $api->detailCharge($params, []);\\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');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n\\tclient_id: credentials.client_id,\\n\\tclient_secret: credentials.client_secret,\\n\\tsandbox: true\\n}\\n\\nvar params = {\\n\\tid: 0\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n\\t.detailCharge(params)\\n\\t.then(console.log)\\n\\t.catch(console.log)\\n\\t.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\\nparams = {\\n id: 1000\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.detail_charge(params: params)\",\n \"language\": \"ruby\"\n },\n {\n \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n 'id': 1\\n}\\n\\nresponse = gn.detail_charge(params=params)\\nprint(response)\",\n \"language\": \"python\"\n },\n {\n \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n class DetailCharge\\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 try\\n {\\n var response = endpoints.DetailCharge(param);\\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/DetailCharge.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/DetailCharge.java\\n\\n*/\",\n \"language\": \"java\"\n },\n {\n \"code\": \"interface\\nfunction DetailCharge(Id: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction DetailCharge(Id: String): String;\\nvar\\n DetailParams: String;\\nbegin\\n EnableService( 'GerenciaNet.dll' ); \\n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n GerenciaNetAuthorize();\\n\\n DetailParams := CreateRequestParams( [ 'id='+Id ] ).Text;\\n Result := ExecuteGerenciaNetRequest( 'detailCharge',DetailParams, '', '' );\\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\\tres, err := gn.DetailCharge(1) // 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# 6. Reenviar link de pagamento por e-mail\n\nUma transação que possui <code>link</code> e cujo status é <code>Link de pagamento</code> , pode ter o seu link reenviado por e-mail.\n\nPara isso, basta enviar seu identificador <code>charge_id</code> e o endereço de e-mail válido para o qual o link da tela de pagamento deverá ser enviado.\n\nPara reenviar um link de pagamento por e-mail, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/charge/:id/link/resend</code>, onde <code>:id</code> é o <code>charge_id</code> da transação desejada.\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 = [\\n 'id' => $charge_id // $charge_id refere-se ao ID da transação (\\\"charge_id\\\")\\n];\\n\\n$body = [\\n 'email' => 'email_do_cliente:::at:::servidor.com.br'\\n];\\n\\ntry {\\n $api = new Gerencianet($options);\\n $charge = $api->resendLink($params, $body);\\n print_r($charge);\\n} catch (GerencianetException $e) {\\n print_r($e->code);\\n print_r($e->error);\\n print_r($e->errorDescription);\\n} catch (Exception $e) {\\n print_r($e->getMessage());\\n}\",\n \"language\": \"php\",\n \"name\": \"PHP\"\n },\n {\n \"code\": \"\",\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\": \"/ChargeLinkResend\"\n \"email\"</pre>\n\nPara verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_billet_resend) e explore em nosso Playground.\n\n<br>\n\n## b) Atributo que pode ser utilizado para reenviar um boleto por e-mail:\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>email</code>\",\n \"0-1\": \"Informe um endereço de e-mail válido para o qual o link de pagamento deverá ser enviado.\",\n \"0-2\": \"Sim\",\n \"0-3\": \"String\"\n },\n \"cols\": 4,\n \"rows\": 1\n}\n[/block]","updates":[],"order":3,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"606f2ca7c5ba9100787834aa","project":"575aeffae12cf20e002f306c","version":{"version":"1.1.0","version_clean":"1.1.0","codename":"2021","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["606f2ca6c5ba91007878342b","575af039a083950e004487f7","575af5c7ba4ed70e000ca288","606f2ca6c5ba91007878342c","606f2ca6c5ba91007878342d","606f2ca6c5ba91007878342e","606f2ca6c5ba91007878342f","5761a63d207db7170022fc14","5761b9a2b65324200072d79e","576832939f0bf4190014ffdf","576832c09f0bf4190014ffe1","576832cba151c10e004316f0","576832d5bb15f40e00a288ec","576832e107b1f30e0039c645","606f2ca6c5ba910078783430","606f2ca6c5ba910078783431","5783f78c5cbce30e0074e2b7","606f2ca6c5ba910078783432","606f2ca6c5ba910078783433","606f2ca6c5ba910078783434","606f2ca6c5ba910078783435","606f2ca6c5ba910078783436","606f2ca6c5ba910078783437","578529f887c9280e0090394b","606f2ca6c5ba910078783438","606f2ca6c5ba910078783439","606f2ca6c5ba91007878343a","606f2ca6c5ba91007878343b","606f2ca6c5ba91007878343c","606f2ca6c5ba91007878343d","606f2ca6c5ba91007878343e","606f2ca6c5ba91007878343f","606f2ca6c5ba910078783440","606f2ca6c5ba910078783441","60d61f026ddc3901a32ee5f1","60ec37c637005f015e54174e","61473375119247002a9c14d7","6283a3819575c60045513ea2"],"_id":"606f2ca7c5ba9100787834c6","project":"575aeffae12cf20e002f306c","createdAt":"2016-06-10T16:51:06.080Z","releaseDate":"2016-06-10T16:51:06.080Z","__v":4,"forked_from":"575aeffae12cf20e002f306f"},"category":{"sync":{"isSync":false,"url":""},"pages":[],"title":"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"},"user":"57601a13af3e090e00108059","createdAt":"2018-07-27T12:41:04.734Z","githubsync":"","__v":0,"parentDoc":null}
Outros endpoints
Outros endpoints para link de pagamento da API Gerencianet