{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","results":{"codes":[]},"settings":"","params":[]},"next":{"description":"","pages":[]},"title":"Outros endpoints","type":"basic","slug":"pagar-boleto-outros-endpoints","excerpt":"Outros endpoints para boletos da API Gerencianet","body":"Existem outros endpoints (serviços) disponíveis na API e que podem ser utilizados em transações de boleto bancário:\n\n1. [Alterar data de vencimento de boleto bancário](https://dev.gerencianet.com.br/docs/pagar-boleto-outros-endpoints#section-1-alterar-data-de-vencimento-de-boleto-banc-rio)\n\n2. [Cancelar determinada transação](https://dev.gerencianet.com.br/docs/pagar-boleto-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/pagar-boleto-outros-endpoints#section-3-alterar-url-de-notifica-o-notification_url-e-ou-custom_id-de-transa-o)\n\n4. [Reenviar boleto bancário por e-mail](https://dev.gerencianet.com.br/docs/pagar-boleto-outros-endpoints#section-4-reenviar-boleto-banc-rio-por-e-mail)\n\n5. [Acrescentar informações ao histórico da transação](https://dev.gerencianet.com.br/docs/pagar-boleto-outros-endpoints#section-5-acrescentar-informa-es-ao-hist-rico-da-transa-o)\n\n6. [Retornar informações sobre transação](https://dev.gerencianet.com.br/docs/pagar-boleto-outros-endpoints#section-6-retornar-informa-es-sobre-transa-o)\n\n7. [Marcar como pago determinada transação](https://dev.gerencianet.com.br/docs/marcar-como-pago#section-2-1-marcar-como-pago-determinada-transa-o) \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 data de vencimento de boleto bancário\n\nPossibilita alterar a data de vencimento de uma transação cuja forma de pagamento seja <code>banking_billet</code> (boleto bancário) e que ainda não foi paga.\n\nPara tal, é necessário que você informe o <code>charge_id</code> da transação desejada e a nova data de vencimento em formato <code>YYYY-MM-DD</code> dentro do atributo <code>expire_at</code>. Deve-se enviar uma requisição <code>PUT</code> para a rota <code>/v1/charge/:id/billet</code>, onde <code>:id</code> é o <code>charge_id</code> do boleto que deseja atualizar.\n[block:callout]\n{\n \"type\": \"warning\",\n \"body\": \"A nova data de vencimento deve ser *pelo menos* maior que a data atual.\",\n \"title\": \"IMPORTANTE\"\n}\n[/block]\nCaso queira, pode explorar e conhecer mais sobre este recurso [usando nosso Playground](https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_billet).\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\\t'expire_at' => '2020-12-20'\\n];\\n\\ntry {\\n $api = new Gerencianet($options);\\n $charge = $api->updateBillet($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 },\n {\n \"code\": \"'use strict';\\n\\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 params = {\\n id: 1008\\n}\\n\\nvar body = {\\n expire_at: '2020-12-12'\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n .updateBillet(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_relative \\\"./credentials\\\"\\n\\noptions = {\\n client_id: CREDENTIALS::CLIENT_ID,\\n client_secret: CREDENTIALS::CLIENT_SECRET,\\n sandbox: true\\n}\\n\\nparams = {\\n id: 1008\\n}\\n\\nbody = {\\n expire_at: \\\"2020-12-12\\\"\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.update_billet(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': 1\\n}\\n\\nbody = {\\n 'expire_at': '2018-12-12'\\n}\\n\\nresponse = gn.update_billet(params=params, body=body)\\nprint(response)\",\n \"language\": \"python\"\n },\n {\n \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n class UpdateBillet\\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 = 1174\\n };\\n\\n var body = new\\n {\\n expire_at = \\\"2020-12-20\\\"\\n };\\n\\n try\\n {\\n var response = endpoints.UpdateBillet(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/defaults/charge/json/UpdateBillet.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/defaults/charge/map/UpdateBillet.java\\n\\n*/\",\n \"language\": \"java\"\n },\n {\n \"code\": \"interface\\nfunction UpdateBillet(Id: String): String;\\nvar\\n Body : String;\\n Params : String;\\nbegin\\n Params := CreateRequestParams( [ 'id='+Id ] ).Text;\\n Body := '{\\\"expire_at\\\": \\\"2020-12-12\\\"}';\\n Result := ExecuteGerenciaNetRequest( 'updateBillet', Params, '', Body );\\nend;\",\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\\\"expire_at\\\": \\\"2020-12-12\\\",\\n\\t}\\n\\n\\tres, err := gn.UpdateBillet(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#### Dados de entrada e saída\n\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"{\\n \\\"expire_at\\\": \\\"2022-12-30\\\"\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de entrada\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200 // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de saída\"\n }\n ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/ChargeBilletUpdate\"\n \"expire_at\"</pre>\n\nPara verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_billet) e explore em nosso Playground.\n\n<br>\n\n## b) Atributo que pode ser utilizado para atualizar data de vencimento de boleto:\n[block:parameters]\n{\n \"data\": {\n \"h-0\": \"Atributo\",\n \"h-1\": \"Descrição\",\n \"h-2\": \"Obrigatório\",\n \"h-3\": \"Tipo\",\n \"0-3\": \"String\",\n \"0-2\": \"Sim\",\n \"0-0\": \"<code>expire_at</code>\",\n \"0-1\": \"Data de vencimento do boleto.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Formato: YYYY-MM-DD</span></strong>\"\n },\n \"cols\": 4,\n \"rows\": 1\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 (por exemplo, cancelar um boleto), 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/defaults/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/defaults/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#### Dados de entrada e saída\n\n\n\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"Parâmetro de entrada: informe a \\\"charge_id\\\" da transação desejada\",\n \"language\": \"text\",\n \"name\": \"Dados de entrada\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200 // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de saída\"\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/defaults/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/defaults/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#### Dados de entrada e saída\n\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"{\\n \\\"notification_url\\\": 'http://seu_dominio.com/notification',\\n \\\"custom_id\\\": 'REF0001'\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de entrada\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200 // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de saída\"\n }\n ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/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. Reenviar boleto bancário por e-mail\n\nUma transação que possui <code>banking_billet</code> (boleto bancário) como forma de pagamento e cujo status é <code>waiting</code> ou <code>unpaid</code>, pode ter o boleto 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 boleto deverá ser enviado.\n\nPara reenviar um boleto por e-mail, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/charge/:id/billet/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// $charge_id refere-se ao ID da transação (\\\"charge_id\\\")\\n$params = [\\n 'id' => $charge_id\\n];\\n \\n$body = [\\n 'email' => 'email_do_cliente:::at:::servidor.com.br'\\n];\\n \\ntry {\\n $api = new Gerencianet($options);\\n $response = $api->resendBillet($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 \"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 email: '[email protected]'\\n}\\n \\nvar gerencianet = new Gerencianet(options);\\n \\ngerencianet\\n .resendBillet(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 email: \\\"[email protected]\\\"\\n}\\n \\ngerencianet = Gerencianet.new(options)\\ngerencianet.resend_billet(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\\t'id': 1000\\n}\\n \\nbody = {\\n\\t'email': \\\"[email protected]\\\"\\n}\\n \\ngn.resend_billet(params=params, body=body)\\n\",\n \"language\": \"python\"\n },\n {\n \"code\": \"dynamic endpoints = new Endpoints(\\\"client_id\\\", \\\"client_secret\\\", true);\\n \\nvar params = new {\\n id = 1000\\n};\\n \\nvar body = new {\\n email = \\\"[email protected]\\\"\\n}\\n \\nvar response = endpoints.ResendBillet(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/defaults/charge/json/ResendBillet.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/defaults/charge/map/ResendBillet.java\\n\\n*/\",\n \"language\": \"java\"\n },\n {\n \"code\": \"interface\\nfunction ResendBillet(Id: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction ResendBillet(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 := '{\\\"email\\\": \\\"[email protected]\\\"}';\\n Result := ExecuteGerenciaNetRequest( 'resendBillet', 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\\\"email\\\": \\\"[email protected]\\\",\\n\\t}\\n\\n\\tres, err := gn.ResendBillet(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#### Dados de entrada e saída\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"{\\n \\\"email\\\": \\\"[email protected]\\\"\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de entrada\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200 // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de saída\"\n }\n ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/ChargeBilletResend\"\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[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 boleto deverá ser enviado.\",\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. 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/defaults/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/defaults/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#### Dados de entrada e saída\n\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"{\\n \\\"description\\\": \\\"Camisa Polo tamanho G cor azul, cobrança Bolix, pix com boleto.\\\"\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de entrada\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200 // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de saída\"\n }\n ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/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# 6. Retornar informações sobre transação\n\nPara retornar informações de uma transação (como um boleto, por exemplo), 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/defaults/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/defaults/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#### Dados de entrada e saída\n\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"Parâmetro de entrada: informe a \\\"charge_id\\\" da transação desejada\",\n \"language\": \"json\",\n \"name\": \"Dados de entrada\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200, // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n \\\"data\\\": {\\n \\\"charge_id\\\": 1234567, // número da ID referente à transação gerada\\n \\\"total\\\": 8900, // valor total da transação (em centavos, sendo 8900 = R$89,00)\\n \\\"status\\\": \\\"waiting\\\", // forma de pagamento selecionada, aguardando a confirmação do pagamento (o termo \\\"waiting\\\" equivale a \\\"aguardando\\\")\\n \\\"custom_id\\\": null, // identificador próprio opcional\\n \\\"created_at\\\": \\\"2022-10-31 10:18:21\\\", // data e hora da criação da transação\\n \\\"notification_url\\\": null,\\n \\\"items\\\": [\\n {\\n \\\"name\\\": \\\"Meu Produto\\\", // nome de seu item, produto ou serviço\\n \\\"value\\\": 8900, // valor, em centavos. Por exemplo: 8900 (equivale a R$ 89,00)\\n \\\"amount\\\": 1 // quantidade do item ou produto\\n }\\n ],\\n \\\"history\\\": [\\n {\\n \\\"message\\\": \\\"Cobrança criada\\\",\\n \\\"created_at\\\": \\\"2222-10-31 10:18:21\\\"\\n },\\n {\\n \\\"message\\\": \\\"Pagamento via boleto aguardando confirmação\\\",\\n \\\"created_at\\\": \\\"2022-10-31 10:19:05\\\"\\n } \\n ],\\n \\\"customer\\\": {\\n \\\"name\\\": \\\"Gorbadoc Oldbuck\\\",\\n \\\"cpf\\\": \\\"94271564656\\\",\\n \\\"email\\\": \\\"[email protected]\\\",\\n \\\"phone_number\\\": \\\"5144916523\\\",\\n \\\"address\\\": {\\n \\\"street\\\": \\\"Avenida Juscelino Kubitschek\\\",\\n \\\"number\\\": \\\"909\\\",\\n \\\"complement\\\": null,\\n \\\"neighborhood\\\": \\\"Bauxita\\\",\\n \\\"city\\\": \\\"Ouro Preto\\\",\\n \\\"state\\\": \\\"MG\\\",\\n \\\"zipcode\\\": \\\"35400000\\\"\\n }\\n },\\n \\\"payment\\\": {\\n \\\"method\\\": \\\"banking_billet\\\", // forma de pagamento da cobrança (banking_billet equivale a boleto bancário)\\n \\\"created_at\\\": \\\"2022-10-31 10:19:05\\\",\\n \\\"message\\\": \\\"Usando o atributo message, este conteúdo é exibido no campo OBSERVAÇÃO da cobrança emitida via API\\\\n ... e também no campo OBSERVAÇÃO DO VENDEDOR nos e-mails de cobrança enviados ao cliente\\\\n É possível utilizar até 4 linhas de conteúdo, com no máximo 100 caracteres por linha\\\\n Essa mensagem poderá ser vista nos e-mails relacionados à cobrança, no boleto ou carnê\\\",\\n \\\"banking_billet\\\": {\\n \\\"barcode\\\": \\\"00000.00000 00000.000000 00000.000000 0 00000000000000\\\",\\n \\\"pix\\\":{\\n \\\"qrcode\\\":\\\"00020101021226990014BR.GOV.BCB.PIX2577qrcodes-pix.gerencianet.com.br/bolix/v2/cobv/0000000000000000000000000000GERENCIANET SA6010OURO PRETO62070503***63047CB1\\\", // BRCode ou copia e cola\\n \\\"qrcode_image\\\":\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My 5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NSA0NSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJNMCAwaDQ1djQ1SD...\\\" // QR Code imagem\\n },\\n \\\"link\\\": \\\"link_https_para_acesso_ao_boleto\\\", // link do Bolix gerado\\n \\\"pdf\\\": {\\n \\\"charge\\\": \\\"link_https_do_pdf_da_cobranca\\\" // link do PDF do Bolix\\n },\\n \\\"expire_at\\\": \\\"2022-12-30\\\", // data de vencimento da cobrança no seguinte formato: 2022-12-30 (ou seja, equivale a 30/12/2022)\\n \\\"configurations\\\": {\\n \\\"interest\\\": 33, // valor cobrado de juros por dia após a data de vencimento (neste caso, 33 equivale a 0,033%)\\n \\\"fine\\\": 200 // valor cobrado de multa após o vencimento (neste caso, 200 equivale a 2%)\\n }\\n }\\n }\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de saída Bolix\"\n },\n {\n \"code\": \"{\\n \\\"code\\\": 200, // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n \\\"data\\\": {\\n \\\"charge_id\\\": 1234567, // número da ID referente à transação gerada\\n \\\"total\\\": 8900, // valor total da transação (em centavos, sendo 8900 = R$89,00)\\n \\\"status\\\": \\\"waiting\\\", // forma de pagamento selecionada, aguardando a confirmação do pagamento (o termo \\\"waiting\\\" equivale a \\\"aguardando\\\")\\n \\\"custom_id\\\": null, // identificador próprio opcional\\n \\\"created_at\\\": \\\"2022-10-31 10:18:21\\\", // data e hora da criação da transação\\n \\\"notification_url\\\": null,\\n \\\"items\\\": [\\n {\\n \\\"name\\\": \\\"Meu Produto\\\", // nome de seu item, produto ou serviço\\n \\\"value\\\": 8900, // valor, em centavos. Por exemplo: 8900 (equivale a R$ 89,00)\\n \\\"amount\\\": 1 // quantidade do item ou produto\\n }\\n ],\\n \\\"history\\\": [\\n {\\n \\\"message\\\": \\\"Cobrança criada\\\",\\n \\\"created_at\\\": \\\"2222-10-31 10:18:21\\\"\\n },\\n {\\n \\\"message\\\": \\\"Pagamento via boleto aguardando confirmação\\\",\\n \\\"created_at\\\": \\\"2022-10-31 10:19:05\\\"\\n } \\n ],\\n \\\"customer\\\": {\\n \\\"name\\\": \\\"Gorbadoc Oldbuck\\\",\\n \\\"cpf\\\": \\\"94271564656\\\",\\n \\\"email\\\": \\\"[email protected]\\\",\\n \\\"phone_number\\\": \\\"5144916523\\\",\\n \\\"address\\\": {\\n \\\"street\\\": \\\"Avenida Juscelino Kubitschek\\\",\\n \\\"number\\\": \\\"909\\\",\\n \\\"complement\\\": null,\\n \\\"neighborhood\\\": \\\"Bauxita\\\",\\n \\\"city\\\": \\\"Ouro Preto\\\",\\n \\\"state\\\": \\\"MG\\\",\\n \\\"zipcode\\\": \\\"35400000\\\"\\n }\\n },\\n \\\"payment\\\": {\\n \\\"method\\\": \\\"banking_billet\\\", // forma de pagamento da cobrança (banking_billet equivale a boleto bancário)\\n \\\"created_at\\\": \\\"2022-10-31 10:19:05\\\",\\n \\\"message\\\": \\\"Usando o atributo message, este conteúdo é exibido no campo OBSERVAÇÃO da cobrança emitida via API\\\\n ... e também no campo OBSERVAÇÃO DO VENDEDOR nos e-mails de cobrança enviados ao cliente\\\\n É possível utilizar até 4 linhas de conteúdo, com no máximo 100 caracteres por linha\\\\n Essa mensagem poderá ser vista nos e-mails relacionados à cobrança, no boleto ou carnê\\\",\\n \\\"banking_billet\\\": {\\n \\\"barcode\\\": \\\"00000.00000 00000.000000 00000.000000 0 00000000000000\\\",\\n \\\"link\\\": \\\"link_https_para_acesso_ao_boleto\\\", // link da transação gerada\\n \\\"pdf\\\": {\\n \\\"charge\\\": \\\"link_https_do_pdf_da_cobranca\\\" // link do PDF da cobrança\\n },\\n \\\"expire_at\\\": \\\"2022-12-30\\\", // data de vencimento da cobrança no seguinte formato: 2022-12-30 (ou seja, equivale a 30/12/2022)\\n \\\"configurations\\\": {\\n \\\"interest\\\": 33, // valor cobrado de juros por dia após a data de vencimento (neste caso, 33 equivale a 0,033%)\\n \\\"fine\\\": 200 // valor cobrado de multa após o vencimento (neste caso, 200 equivale a 2%)\\n }\\n }\\n }\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"Dados de saída boleto\"\n }\n ]\n}\n[/block]\n<br>\n<hr>\n\n# 7. Marcar como pago determinada transação\n\nPara detalhes sobre como marcar como pago determinada transação, [veja neste link](https://dev.gerencianet.com.br/docs/marcar-como-pago#section-2-1-marcar-como-pago-determinada-transa-o).","updates":[],"order":4,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"606f2ca7c5ba910078783475","githubsync":"","parentDoc":null,"createdAt":"2016-11-01T15:56:10.768Z","project":"575aeffae12cf20e002f306c","__v":0,"category":{"sync":{"isSync":false,"url":""},"pages":[],"title":"Pagar com Boleto (Bolix)","slug":"pagar-com-boleto","order":10,"from_sync":false,"reference":false,"_id":"606f2ca6c5ba910078783432","createdAt":"2016-07-11T19:49:54.838Z","__v":1,"project":"575aeffae12cf20e002f306c","version":"606f2ca7c5ba9100787834c6"},"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"},"user":"57601a13af3e090e00108059"}
Outros endpoints
Outros endpoints para boletos da API Gerencianet