{"_id":"5760307866b6b72400f8d2b7","project":"575aeffae12cf20e002f306c","category":{"_id":"57602fe5b82256240055c657","version":"575aeffae12cf20e002f306f","__v":0,"project":"575aeffae12cf20e002f306c","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-06-14T16:25:09.214Z","from_sync":false,"order":14,"slug":"opções-avançadas","title":"Outros Recursos da API"},"parentDoc":null,"__v":79,"version":{"_id":"575aeffae12cf20e002f306f","project":"575aeffae12cf20e002f306c","__v":30,"createdAt":"2016-06-10T16:51:06.080Z","releaseDate":"2016-06-10T16:51:06.080Z","categories":["575aeffae12cf20e002f3070","575af039a083950e004487f7","575af5c7ba4ed70e000ca288","57602fe5b82256240055c657","57602ff6c811102000cef302","576030909b1a9a220067ca40","57604518b82256240055c722","5761a63d207db7170022fc14","5761b9a2b65324200072d79e","576832939f0bf4190014ffdf","576832c09f0bf4190014ffe1","576832cba151c10e004316f0","576832d5bb15f40e00a288ec","576832e107b1f30e0039c645","577680bf3cee3a0e00a000bc","577ff3b1ff48990e000c6806","5783f78c5cbce30e0074e2b7","5783f86292edb92200e6101c","5783f86dbfbba719003f0d8b","5783f8755cbce30e0074e2b8","5783f8b65cbce30e0074e2b9","5783f8bf5cbce30e0074e2ba","5783f8d8ce802f0e0087d574","578529f887c9280e0090394b","57852aeb87c9280e0090394d","57866e72b2f4060e00fa39ca","57ab6d5c39c2fd1900191879","57f39451ab0ee12000bef915","582499a0d90fa027009b259e","58c29df1258e5a1900b60478"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"2016","version_clean":"1.0.0","version":"1"},"user":"57601a13af3e090e00108059","updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-06-14T16:27:36.041Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":7,"body":"Através dos *endpoints* relacionados a reenvios por email, é possível efetuar o reenvio de boletos, carnês e parcelas específicas de um determinado carnê.\n\nO restante desta página apresenta os procedimentos detalhados, mas você precisa instalar uma de nossas bibliotecas em seu servidor para executar os códigos de exemplo. [Certifique-se que a SDK da Gerencianet foi instalada](https://dev.gerencianet.com.br/docs#section-bibliotecas).\n\nVá direto ao ponto ­- utilize o índice abaixo e veja diretamente o que você precisa:\n\n1. [Reenviando um boleto bancário por email](https://dev.gerencianet.com.br/docs/reenvio-de-transacoes#section-1-reenviando-um-boleto-banc-rio-por-email)\n\n2. [Reenviando um carnê por email](https://dev.gerencianet.com.br/docs/reenvio-de-transacoes#section-2-reenviando-um-carn-por-email)\n\n3. [Reenviando parcela específica de um carnê](https://dev.gerencianet.com.br/docs/reenvio-de-transacoes#section-3-reenviando-parcela-espec-fica-de-um-carn-)\n\n\n# 1. Reenviando um boleto bancário por email\n\nUma transação que possui <code>banking_billet</code> (equivale a boleto bancário) como forma de pagamento definida e cujo status é <code>waiting</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 email 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>/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 = 'your_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'your_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n  'client_id' => $clientId,\\n  'client_secret' => $clientSecret,\\n  'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\\n];\\n \\n// $charge_id refere-se ao ID da transação gerada anteriormente\\n$params = [\\n  'id' => $charge_id\\n];\\n \\n$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: 'oldbuck@gerencianet.com.br'\\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: \\\"oldbuck@gerencianet.com.br\\\"\\n}\\n \\ngerencianet = Gerencianet.new(options)\\ngerencianet.resend_billet(params: params, body: body)\\n\",\n      \"language\": \"ruby\",\n      \"name\": \"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': \\\"oldbuck@gerencianet.com.br\\\"\\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 = \\\"oldbuck@gerencianet.com.br\\\"\\n}\\n \\nvar response = endpoints.ResendBillet(params, body)\\n\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"// Para detalhes, acesse o documento específico em nosso Github:\\n// https://github.com/gerencianet/gn-api-sdk-java/blob/master/docs/RESEND_BILLET.md\",\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\\\": \\\"oldbuck@gerencianet.com.br\\\"}';\\n    Result := ExecuteGerenciaNetRequest( 'resendBillet', Params, '', Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\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\n<br>\n\n## b) Atributos que podem ser usados para reenviar um boleto:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"0-0\": \"<code>id</code>\",\n    \"0-1\": \"Identificador da transação - <code>charge_id</code>\\n\\n<span class=\\\"tab1\\\"><em>Atributos de id</em></span>\\n\\n<div class=\\\"tab2\\\"><code>email</code> // endereço de email válido para o qual o boleto deverá ser enviado.\",\n    \"0-2\": \"Sim\",\n    \"h-3\": \"Tipo\",\n    \"0-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n<br>\n\n<hr>\n\n# 2. Reenviando um carnê por email\n\nUm carnê que possui o status <code>up_to_date</code> ou <code>unpaid</code> pode ser reenviado por email.\n\nPara isso, basta enviar seu identificador <code>carnet_id</code> e o endereço de email válido para o qual o carnê deverá ser enviado.\n\nPara reenviar um carnê por email, você deve enviar uma requisição <code>POST</code> para a rota <code>/carnet/:id/resend</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê que deseja reenviar.\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 = 'your_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'your_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n  'client_id' => $clientId,\\n  'client_secret' => $clientSecret,\\n  'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\\n];\\n \\n// $carnet_id refere-se ao ID do carnê gerado anteriormente\\n$params = [\\n  'id' => $carnet_id\\n];\\n \\n$body = [\\n  'email' => 'email_do_cliente@servidor.com.br'\\n];\\n \\ntry {\\n    $api = new Gerencianet($options);\\n    $response = $api->resendCarnet($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: 'oldbuck@gerencianet.com.br'\\n}\\n \\nvar gerencianet = new Gerencianet(options);\\n \\ngerencianet\\n  .resendCarnet(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  email: \\\"oldbuck@gerencianet.com.br\\\"\\n}\\n \\ngerencianet = Gerencianet.new(options)\\ngerencianet.resend_carnet(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'email': \\\"oldbuck@gerencianet.com.br\\\"\\n}\\n \\ngn.resend_carnet(params=params, body=body)\",\n      \"language\": \"python\",\n      \"name\": null\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 = \\\"oldbuck@gerencianet.com.br\\\"\\n};\\n \\nvar response = endpoints.ResendCarnet(params, body);\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"// Para detalhes, acesse o documento específico em nosso Github:\\n// https://github.com/gerencianet/gn-api-sdk-java/blob/master/docs/CARNET_RESEND.md\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"interface\\nfunction ResendCarnet(CarnetID: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction ResendCarnet(CarnetID: String): String;\\nvar\\n  Body : String;\\n  UpdateParcelParams : String;\\nbegin\\n    EnableService( 'GerenciaNet.dll' ); \\n    ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n    GerenciaNetAuthorize();\\n\\n    UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID ] ).Text;\\n    Body := '{\\\"email\\\": \\\"oldbuck@gerencianet.com.br\\\"}';\\n    Result := ExecuteGerenciaNetRequest( 'resendCarnet',UpdateParcelParams, '', Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\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\": \"/CarnetResend\"\n    \"email\"</pre>\n\n<br>\n\n## b) Atributos que podem ser usados para reenviar um carnê:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"0-0\": \"<code>id</code>\",\n    \"0-1\": \"Identificador da transação - <code>carnet_id</code>\\n\\n<span class=\\\"tab1\\\"><em>Atributos de id</em></span>\\n\\n<div class=\\\"tab2\\\"><code>email</code> // endereço de email válido para o qual o carnê deverá ser enviado.\",\n    \"0-2\": \"Sim\",\n    \"h-3\": \"Tipo\",\n    \"0-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n<br>\n\n<hr>\n\n# 3. Reenviando parcela específica de um carnê\n\nDa mesma forma que o carnê pode ser reenviado, pode-se reenviar somente uma parcela de um carnê. Para isso, é necessário que a parcela tenha o status <code>waiting</code>.\n\nNeste caso, basta enviar o <code>carnet_id</code> (identificador do carnê), o número da parcela e o endereço de email válido para o qual a parcela deverá ser enviada.\n\nPara reenviar uma parcela específica de um carnê por email, você deve enviar uma requisição <code>POST</code> para a rota <code>/carnet/:id/parcel/:parcel/resend</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê e <code>:parcel</code> é o número da parcela que deseja reenviar por email (por exemplo: 3 - se for a terceira parcela que você deseja reenviar por email).\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 = 'your_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'your_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n  'client_id' => $clientId,\\n  'client_secret' => $clientSecret,\\n  'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\\n];\\n \\n// $carnet_id refere-se ao ID do carnê gerado anteriormente\\n$params = [\\n  'id' => $carnet_id,\\n  'parcel' => 1 // número da parcela do carnê que será reenviada por email\\n];\\n \\n$body = [\\n  'email' => 'email_do_cliente@servidor.com.br'\\n];\\n \\ntry {\\n    $api = new Gerencianet($options);\\n    $response = $api->resendParcel($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  parcel: 1\\n}\\n \\nvar body = {\\n  email: 'oldbuck@gerencianet.com.br'\\n}\\n \\nvar gerencianet = new Gerencianet(options);\\n \\ngerencianet\\n  .resendParcel(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  parcel: 1\\n}\\n \\nbody = {\\n  email: \\\"oldbuck@gerencianet.com.br\\\"\\n}\\n \\ngerencianet = Gerencianet.new(options)\\ngerencianet.resend_parcel(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\\t'parcel': 1\\n}\\n \\nbody = {\\n\\t'email': \\\"oldbuck@gerencianet.com.br\\\"\\n}\\n \\ngn.resend_parcel(params=params, body=body)\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"\\ndynamic endpoints = new Endpoints(\\\"client_id\\\", \\\"client_secret\\\", true);\\n \\nvar param = new {\\n    id = 1000,\\n    parcel = 1\\n};\\n \\nvar body = new {\\n    email = \\\"oldbuck@gerencianet.com.br\\\"\\n};\\n \\nvar response = endpoints.ResendParcel(param, body);\\n\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"// Para detalhes, acesse o documento específico em nosso Github:\\n// https://github.com/gerencianet/gn-api-sdk-java/blob/master/docs/CARNET_RESEND_PARCEL.md\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"interface\\nfunction ResendParcel(CarnetID, CarnetParcel:  String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction ResendParcel(CarnetID, CarnetParcel:  String): String;\\nvar\\n  Body : String;\\n  UpdateParcelParams : String;\\nbegin\\n    EnableService( 'GerenciaNet.dll' ); \\n    ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n    GerenciaNetAuthorize();\\n\\n    UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID, 'parcel='+CarnetParcel ] ).Text;\\n    Body := '{\\\"email\\\": \\\"oldbuck@gerencianet.com.br\\\"}';\\n    Result := ExecuteGerenciaNetRequest( 'resendParcel',UpdateParcelParams, '', Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\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\": \"/CarnetParcelResend\"\n    \"email\"</pre>\n\n<br>\n\n## b) Atributos que podem ser usados para reenviar parcela específica de um carnê:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"0-2\": \"Sim\",\n    \"0-1\": \"Identificador da transação - <code>carnet_id</code>\\n\\n<span class=\\\"tab1\\\"><em>Atributos de id</em></span>\\n\\n<div class=\\\"tab2\\\"><code>email</code> // endereço de email válido para o qual a parcela específica do carnê deverá ser enviada.\",\n    \"0-0\": \"<code>id</code>\",\n    \"1-1\": \"\",\n    \"1-0\": \"\",\n    \"1-2\": \"\",\n    \"h-3\": \"Tipo\",\n    \"0-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]","excerpt":"Você está em: *\"Outros Recursos da API > Reenvio de Transações\"*","slug":"reenvio-de-transacoes","type":"basic","title":"Reenvio de Transações"}

Reenvio de Transações

Você está em: *"Outros Recursos da API > Reenvio de Transações"*

Através dos *endpoints* relacionados a reenvios por email, é possível efetuar o reenvio de boletos, carnês e parcelas específicas de um determinado carnê. O restante desta página apresenta os procedimentos detalhados, mas você precisa instalar uma de nossas bibliotecas em seu servidor para executar os códigos de exemplo. [Certifique-se que a SDK da Gerencianet foi instalada](https://dev.gerencianet.com.br/docs#section-bibliotecas). Vá direto ao ponto ­- utilize o índice abaixo e veja diretamente o que você precisa: 1. [Reenviando um boleto bancário por email](https://dev.gerencianet.com.br/docs/reenvio-de-transacoes#section-1-reenviando-um-boleto-banc-rio-por-email) 2. [Reenviando um carnê por email](https://dev.gerencianet.com.br/docs/reenvio-de-transacoes#section-2-reenviando-um-carn-por-email) 3. [Reenviando parcela específica de um carnê](https://dev.gerencianet.com.br/docs/reenvio-de-transacoes#section-3-reenviando-parcela-espec-fica-de-um-carn-) # 1. Reenviando um boleto bancário por email Uma transação que possui <code>banking_billet</code> (equivale a boleto bancário) como forma de pagamento definida e cujo status é <code>waiting</code>, pode ter o boleto reenviado por e-mail. Para isso, basta enviar seu identificador <code>charge_id</code> e o endereço de email válido para o qual o boleto deverá ser enviado. Para reenviar um boleto por e-mail, você deve enviar uma requisição <code>POST</code> para a rota <code>/charge/:id/billet/resend</code>, onde <code>:id</code> é o <code>charge_id</code> da transação desejada. O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'your_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'your_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\n \n$options = [\n 'client_id' => $clientId,\n 'client_secret' => $clientSecret,\n 'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\n];\n \n// $charge_id refere-se ao ID da transação gerada anteriormente\n$params = [\n 'id' => $charge_id\n];\n \n$body = [\n 'email' => 'email_do_cliente@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}", "language": "php" }, { "code": "'use strict';\n \nvar Gerencianet = require('gn-api-sdk-node');\n \nvar clientId = 'your_client_id';\nvar clientSecret = 'your_client_secret';\n \nvar options = {\n client_id: clientId,\n client_secret: clientSecret,\n sandbox: true\n}\n \nvar params = {\n id: 1000\n}\n \nvar body = {\n email: 'oldbuck@gerencianet.com.br'\n}\n \nvar gerencianet = new Gerencianet(options);\n \ngerencianet\n .resendBillet(params, body)\n .then(console.log)\n .catch(console.log)\n .done();\n", "language": "javascript", "name": "NodeJS" }, { "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: \"oldbuck@gerencianet.com.br\"\n}\n \ngerencianet = Gerencianet.new(options)\ngerencianet.resend_billet(params: params, body: body)\n", "language": "ruby", "name": "Ruby" }, { "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': \"oldbuck@gerencianet.com.br\"\n}\n \ngn.resend_billet(params=params, body=body)\n", "language": "python" }, { "code": "dynamic endpoints = new Endpoints(\"client_id\", \"client_secret\", true);\n \nvar params = new {\n id = 1000\n};\n \nvar body = new {\n email = \"oldbuck@gerencianet.com.br\"\n}\n \nvar response = endpoints.ResendBillet(params, body)\n", "language": "asp", "name": ".NET" }, { "code": "// Para detalhes, acesse o documento específico em nosso Github:\n// https://github.com/gerencianet/gn-api-sdk-java/blob/master/docs/RESEND_BILLET.md", "language": "java" }, { "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\": \"oldbuck@gerencianet.com.br\"}';\n Result := ExecuteGerenciaNetRequest( 'resendBillet', Params, '', Body );\nend;", "language": "json", "name": "Delphi" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/ChargeBilletResend" "email"</pre> <br> ## b) Atributos que podem ser usados para reenviar um boleto: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "0-0": "<code>id</code>", "0-1": "Identificador da transação - <code>charge_id</code>\n\n<span class=\"tab1\"><em>Atributos de id</em></span>\n\n<div class=\"tab2\"><code>email</code> // endereço de email válido para o qual o boleto deverá ser enviado.", "0-2": "Sim", "h-3": "Tipo", "0-3": "String" }, "cols": 4, "rows": 1 } [/block] <br> <hr> # 2. Reenviando um carnê por email Um carnê que possui o status <code>up_to_date</code> ou <code>unpaid</code> pode ser reenviado por email. Para isso, basta enviar seu identificador <code>carnet_id</code> e o endereço de email válido para o qual o carnê deverá ser enviado. Para reenviar um carnê por email, você deve enviar uma requisição <code>POST</code> para a rota <code>/carnet/:id/resend</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê que deseja reenviar. O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'your_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'your_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\n \n$options = [\n 'client_id' => $clientId,\n 'client_secret' => $clientSecret,\n 'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\n];\n \n// $carnet_id refere-se ao ID do carnê gerado anteriormente\n$params = [\n 'id' => $carnet_id\n];\n \n$body = [\n 'email' => 'email_do_cliente@servidor.com.br'\n];\n \ntry {\n $api = new Gerencianet($options);\n $response = $api->resendCarnet($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}", "language": "php" }, { "code": "'use strict';\n \nvar Gerencianet = require('gn-api-sdk-node');\n \nvar clientId = 'your_client_id';\nvar clientSecret = 'your_client_secret';\n \nvar options = {\n client_id: clientId,\n client_secret: clientSecret,\n sandbox: true\n}\n \nvar params = {\n id: 1000\n}\n \nvar body = {\n email: 'oldbuck@gerencianet.com.br'\n}\n \nvar gerencianet = new Gerencianet(options);\n \ngerencianet\n .resendCarnet(params, body)\n .then(console.log)\n .catch(console.log)\n .done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\n \noptions = {\n client_id: \"client_id\",\n client_secret: \"client_secret\",\n sandbox: true\n}\n \nparams = {\n id: 1000\n}\n \nbody = {\n email: \"oldbuck@gerencianet.com.br\"\n}\n \ngerencianet = Gerencianet.new(options)\ngerencianet.resend_carnet(params: params, body: body)", "language": "ruby" }, { "code": "from gerencianet import Gerencianet\n \noptions = {\n 'client_id': 'client_id',\n 'client_secret': 'client_secret',\n 'sandbox': True\n}\n \ngn = Gerencianet(options)\n \nparams = {\n\t'id': 1000\n}\n \nbody = {\n\t'email': \"oldbuck@gerencianet.com.br\"\n}\n \ngn.resend_carnet(params=params, body=body)", "language": "python", "name": null }, { "code": "dynamic endpoints = new Endpoints(\"client_id\", \"client_secret\", true);\n \nvar params = new {\n id = 1000\n};\n \nvar body = new {\n email = \"oldbuck@gerencianet.com.br\"\n};\n \nvar response = endpoints.ResendCarnet(params, body);", "language": "asp", "name": ".NET" }, { "code": "// Para detalhes, acesse o documento específico em nosso Github:\n// https://github.com/gerencianet/gn-api-sdk-java/blob/master/docs/CARNET_RESEND.md", "language": "java" }, { "code": "interface\nfunction ResendCarnet(CarnetID: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction ResendCarnet(CarnetID: String): String;\nvar\n Body : String;\n UpdateParcelParams : String;\nbegin\n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize();\n\n UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID ] ).Text;\n Body := '{\"email\": \"oldbuck@gerencianet.com.br\"}';\n Result := ExecuteGerenciaNetRequest( 'resendCarnet',UpdateParcelParams, '', Body );\nend;", "language": "json", "name": "Delphi" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/CarnetResend" "email"</pre> <br> ## b) Atributos que podem ser usados para reenviar um carnê: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "0-0": "<code>id</code>", "0-1": "Identificador da transação - <code>carnet_id</code>\n\n<span class=\"tab1\"><em>Atributos de id</em></span>\n\n<div class=\"tab2\"><code>email</code> // endereço de email válido para o qual o carnê deverá ser enviado.", "0-2": "Sim", "h-3": "Tipo", "0-3": "String" }, "cols": 4, "rows": 1 } [/block] <br> <hr> # 3. Reenviando parcela específica de um carnê Da mesma forma que o carnê pode ser reenviado, pode-se reenviar somente uma parcela de um carnê. Para isso, é necessário que a parcela tenha o status <code>waiting</code>. Neste caso, basta enviar o <code>carnet_id</code> (identificador do carnê), o número da parcela e o endereço de email válido para o qual a parcela deverá ser enviada. Para reenviar uma parcela específica de um carnê por email, você deve enviar uma requisição <code>POST</code> para a rota <code>/carnet/:id/parcel/:parcel/resend</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê e <code>:parcel</code> é o número da parcela que deseja reenviar por email (por exemplo: 3 - se for a terceira parcela que você deseja reenviar por email). O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'your_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'your_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\n \n$options = [\n 'client_id' => $clientId,\n 'client_secret' => $clientSecret,\n 'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\n];\n \n// $carnet_id refere-se ao ID do carnê gerado anteriormente\n$params = [\n 'id' => $carnet_id,\n 'parcel' => 1 // número da parcela do carnê que será reenviada por email\n];\n \n$body = [\n 'email' => 'email_do_cliente@servidor.com.br'\n];\n \ntry {\n $api = new Gerencianet($options);\n $response = $api->resendParcel($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}", "language": "php" }, { "code": "'use strict';\n \nvar Gerencianet = require('gn-api-sdk-node');\n \nvar clientId = 'your_client_id';\nvar clientSecret = 'your_client_secret';\n \nvar options = {\n client_id: clientId,\n client_secret: clientSecret,\n sandbox: true\n}\n \nvar params = {\n id: 1000,\n parcel: 1\n}\n \nvar body = {\n email: 'oldbuck@gerencianet.com.br'\n}\n \nvar gerencianet = new Gerencianet(options);\n \ngerencianet\n .resendParcel(params, body)\n .then(console.log)\n .catch(console.log)\n .done();\n", "language": "javascript", "name": "NodeJS" }, { "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 parcel: 1\n}\n \nbody = {\n email: \"oldbuck@gerencianet.com.br\"\n}\n \ngerencianet = Gerencianet.new(options)\ngerencianet.resend_parcel(params: params, body: body)\n", "language": "ruby" }, { "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\t'parcel': 1\n}\n \nbody = {\n\t'email': \"oldbuck@gerencianet.com.br\"\n}\n \ngn.resend_parcel(params=params, body=body)\n", "language": "python" }, { "code": "\ndynamic endpoints = new Endpoints(\"client_id\", \"client_secret\", true);\n \nvar param = new {\n id = 1000,\n parcel = 1\n};\n \nvar body = new {\n email = \"oldbuck@gerencianet.com.br\"\n};\n \nvar response = endpoints.ResendParcel(param, body);\n", "language": "asp", "name": ".NET" }, { "code": "// Para detalhes, acesse o documento específico em nosso Github:\n// https://github.com/gerencianet/gn-api-sdk-java/blob/master/docs/CARNET_RESEND_PARCEL.md", "language": "java" }, { "code": "interface\nfunction ResendParcel(CarnetID, CarnetParcel: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction ResendParcel(CarnetID, CarnetParcel: String): String;\nvar\n Body : String;\n UpdateParcelParams : String;\nbegin\n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize();\n\n UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID, 'parcel='+CarnetParcel ] ).Text;\n Body := '{\"email\": \"oldbuck@gerencianet.com.br\"}';\n Result := ExecuteGerenciaNetRequest( 'resendParcel',UpdateParcelParams, '', Body );\nend;", "language": "json", "name": "Delphi" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/CarnetParcelResend" "email"</pre> <br> ## b) Atributos que podem ser usados para reenviar parcela específica de um carnê: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "0-2": "Sim", "0-1": "Identificador da transação - <code>carnet_id</code>\n\n<span class=\"tab1\"><em>Atributos de id</em></span>\n\n<div class=\"tab2\"><code>email</code> // endereço de email válido para o qual a parcela específica do carnê deverá ser enviada.", "0-0": "<code>id</code>", "1-1": "", "1-0": "", "1-2": "", "h-3": "Tipo", "0-3": "String" }, "cols": 4, "rows": 1 } [/block]