Cancelamento de Boletos e Lâminas de Carnê

Como funciona

Cancele cobranças geradas no sistema Gerencianet.

O consumo do webservice é realizado a partir do envio de um XML via post.

O XML deve ser atribuído ao parâmetro xml do post enviado:

POST https://fortunus.gerencianet.com.br/webservice/cancelarCobranca HTTP/1.0

xml=seu_xml

Você deve especificar através do XML (cuja estrutura é mostrada a seguir), o token de integração e a chave da cobrança a ser cancelada.

</> Estrutura do XML a ser enviado

TAG OBRIGATÓRIA DESCRIÇÃO

Token

<CancelarCobranca>

<Token>

Sim

Chave de integração com 32 caracteres, gerada em sua conta.

Chave

<CancelarCobranca>

<Chave>

Sim

Chave da cobrança a ser cancelada, retornada nas integrações de emissão.

</> Quais dados você receberá?

TAG DESCRIÇÃO

StatusCod

<CancelarCobranca>

<StatusCod>

Pode conter os valores:

  • “2”, em caso de sucesso,
  • “1”, caso contrário.

Exemplos

  1. <?php
  2.  
  3. /**
  4. * String $URL
  5. * URL para onde deve ser enviada a requisição XML via post para cancelamento de cobranças.
  6. */
  7. $url = 'https://fortunus.gerencianet.com.br/webservice/cancelarCobranca';
  8.  
  9. /**
  10. * String $token
  11. * Variável que armazena o token de integração utilizado no cancelamento de cobranças.
  12. * Gere o token em sua conta Gerencianet e atribua à variável.
  13. */
  14. $token = '';
  15.  
  16. /**
  17. * String $chave
  18. * Variável que armazena a chave da cobrança gerada através das integrações de emissões.
  19. */
  20. $chave = '00001-1-ABCDE1';
  21.  
  22. /**
  23. * String $XML
  24. * XML com os dados necessários para cancelamento de cobranças.
  25. */
  26. $xml = "<?xml version='1.0' encoding='utf-8'?>
  27. <CancelarCobranca>
  28. <Token>{$token}</Token>
  29. <Chave>{$chave}</Chave>
  30. </CancelarCobranca>";
  31.  
  32. /**
  33. * O XML enviado não pode conter quebras de linha e tabulações.
  34. */
  35. $xml = str_replace("\n", '', $xml);
  36. $xml = str_replace("\r",'',$xml);
  37. $xml = str_replace("\t",'',$xml);
  38.  
  39. /**
  40. * Handle $ch : Manipulador de comunicação para transferência de dados, via CURL.
  41. */
  42. $ch = curl_init();
  43.  
  44. /**
  45. * Atualiza a URL de destino da variável $ch para a URL definida pela variável $url.
  46. */
  47. curl_setopt($ch, CURLOPT_URL, $url);
  48.  
  49. /**
  50. * Configura a variável $ch para retornar o resultado da comunicação, ao invés de exibir diretamente.
  51. */
  52. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  53.  
  54. /**
  55. * Configura o máximo de redirecionamentos permitido.
  56. */
  57. curl_setopt($ch, CURLOPT_MAXREDIRS, 2);
  58.  
  59. /**
  60. * Configura para que seja inserido automaticamente o campo Referer: nas requisições que seguem um redirecionamento Location:
  61. */
  62. curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  63.  
  64. /**
  65. * Array $data: Armazena o xml a ser enviado($data['xml']=$xml)
  66. */
  67. $data = array('xml' => $xml);
  68.  
  69. /**
  70. * Configura para que a requisição seja enviada via POST
  71. */
  72. curl_setopt($ch, CURLOPT_POST, true);
  73.  
  74. /**
  75. * Define os dados a serem enviados na requisição via POST
  76. */
  77. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  78.  
  79. /**
  80. * Define o tempo limite de tentativa de conexão
  81. */
  82. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
  83.  
  84. /**
  85. * Configura o USERAGENT da requisição
  86. */
  87. curl_setopt($ch, CURLOPT_USERAGENT, 'seu agente');
  88.  
  89. /**
  90. * Envia a requisição via POST com o XML e retorna o resultado da requisição
  91. * String $resposta: Resposta da requisição
  92. */
  93. $resposta = curl_exec($ch);
  94.  
  95. /**
  96. * Encerra a ponte de comunicação
  97. */
  98. curl_close($ch);
  99.  
  100. /**
  101. * Imprime a resposta da requisição.
  102. */
  103. echo $resposta;
  1. <%@page import="java.net.URLEncoder"%>
  2. <%@page import="java.io.DataOutputStream"%>
  3. <%@page import="java.net.HttpURLConnection"%>
  4. <%@page import="java.net.URL"%>
  5. <%@page import="java.io.BufferedReader"%>
  6. <%@page import="java.io.InputStreamReader"%>
  7. <%@page import="javax.net.ssl.HttpsURLConnection;"%>
  8. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  9. <!DOCTYPE html>
  10.  
  11.  
  12.  
  13. <%
  14.  
  15. /**
  16. * String token: Chave de integração gerada em sua conta Gerencianet
  17. */
  18. String token = "";
  19.  
  20. /**
  21. * String chave: Variável que armazena a chave da cobrança gerada através das integrações de emissões.
  22. */
  23. String chave = '00001-1-ABCDE1';
  24.  
  25. /**
  26. * String xml: XML gerado para envio ao Webservice
  27. */
  28. String xml= "<?xml version='1.0' encoding='utf-8'?>"
  29. +"<CancelarCobranca>"
  30. + "<Token>" + token + "</Token>"
  31. + "<Chave>" + chave + "</Chave>"
  32. +"</CancelarCobranca>";
  33. /**
  34. * String urlWS: URL para acesso ao Webservice
  35. */
  36. String urlWS = "https://fortunus.gerencianet.com.br/webservice/cancelarCobranca";
  37.  
  38. /**
  39. * String urlParametros: Parametros para o envio junto a URL
  40. * Contem o parametro entrada com o XML codificado para comunicação via POST.
  41. */
  42. String urlParametros = "xml=" + URLEncoder.encode(xml, "UTF-8");
  43.  
  44. /**
  45. * final String USER_AGENT: Dados de USER_AGENT enviados junto ao POST
  46. */
  47. final String USER_AGENT = "Mozilla/5.0";
  48. /**
  49. * Objeto URL obj: Objeto que armazena a conexão com o wWebservice a partir da URL definida anteriormente
  50. */
  51. URL obj = new URL(urlWS);
  52. /**
  53. * HttpsURLConnection con: Objeto responsável pela comunicação HTTPS utilizando a conexão obtida do URL obj.
  54. */
  55. HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
  56.  
  57. /**
  58. * Seleciona o método de requisição, no caso POST
  59. */
  60. con.setRequestMethod("POST");
  61. /**
  62. * Altera a propriedade de User-Agent da requisição para o valor especificado anteriormente
  63. */
  64. con.setRequestProperty("User-Agent", USER_AGENT);
  65.  
  66. /**
  67. * Permite que a conexão seja utilizada para também para envio dos dados
  68. */
  69. con.setDoOutput(true);
  70. /**
  71. * DataOutputStream wr: Define o objeto para envio da requisição
  72. */
  73. DataOutputStream wr = new DataOutputStream(con.getOutputStream());
  74. /**
  75. * Envia a requisição POST para a URL definida
  76. */
  77. wr.writeBytes(urlParametros);
  78. /**
  79. * Força o envio da requisição, enviando dados que tenham ficado em buffer
  80. */
  81. wr.flush();
  82. /**
  83. * Encerra o envio de dados, fechando a saida da conexão
  84. */
  85. wr.close();
  86.  
  87. /**
  88. * int responseCode: Código respondido pelo servidor, 200 em caso de sucesso
  89. */
  90. int responseCode = con.getResponseCode();
  91. /**
  92. * BufferedReader in: Define o objeto de entrada de dados para recuperação da resposta.
  93. */
  94. BufferedReader in = new BufferedReader(
  95. new InputStreamReader(con.getInputStream()));
  96. /**
  97. * String inputLine: String auxiliar para recuperação linha a linha dos dados
  98. */
  99. String inputLine;
  100. /**
  101. * StringBuffer resposta: String que armazenará o retorno enviado pelo servidor
  102. */
  103. StringBuffer resposta = new StringBuffer();
  104.  
  105. /**
  106. * Recupera os dados, linha a linha e armazena continuamente na resposta
  107. */
  108. while ((inputLine = in.readLine()) != null) {
  109. resposta.append(inputLine);
  110. }
  111. /**
  112. * Encerra a conexão fechando a entrada dos dados
  113. */
  114. in.close();
  115.  
  116. /**
  117. * String resp: cópia de resposta, em formato de string simples
  118. */
  119. String resp = resposta.toString();
  120. %>
  121. <%= resp%>
  1. <%@ Page aspcompat=true %>
  2.  
  3. <%
  4.  
  5. dim url, xml, httpRequest, postResponse, token, chave
  6.  
  7. '''
  8. ' String url
  9. ' URL para onde deve ser enviada a requisição XML via post para cancelamento de cobrança.
  10. '''
  11. url = "https://fortunus.gerencianet.com.br/webservice/cancelarCobranca"
  12.  
  13. '''
  14. ' String token
  15. ' Variável que armazena o token de integração utilizado no cancelamento de cobranças
  16. ' Gere o token em sua conta Gerêncianet e atribua à variável.
  17. '''
  18. token = ""
  19.  
  20. '''
  21. ' String chave
  22. ' Variável que armazena a chave da cobrança gerada através das integrações de emissões.
  23. '''
  24. chave = "00001-1-ABCDE1";
  25.  
  26. '''
  27. ' String xml
  28. ' XML com os dados necessários para cancelamento de cobranças.
  29. '''
  30. xml = "" &
  31. "<?xml version=""1.0"" encoding=""utf-8""?>" &
  32. "<CancelarCobranca>" &
  33. "<Token>" & token & "</Token>" &
  34. "<Chave>" & chave & "</Chave>" &
  35. "</CancelarCobranca>" &
  36. ""
  37.  
  38. '''
  39. ' Os dados serao enviados para a URL definida na string url através do objeto httpRequest e o retorno armazenado na variavel postResponse.
  40. '''
  41. httpRequest = Server.CreateObject("MSXML2.ServerXMLHTTP")
  42. httpRequest.Open("POST", url, False)
  43. httpRequest.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
  44. httpRequest.Send("xml=" & Server.URLEncode(xml))
  45. postResponse = Server.URLDecode(httpRequest.ResponseText)
  46.  
  47. '''
  48. ' Imprime o conteudo da variavel postResponse na tela.
  49. '''
  50. response.write(postResponse)
  51.  
  52. %>

  1. <%@ Page Title="Home Page" Language="C#" AutoEventWireup="true"
  2. CodeBehind="cancelamento.aspx.cs" Inherits="Gerencianet._Cancelamento" %>
  3.  
  4. <%= fazRequisicao() %>
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Collections.Specialized;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Net;
  8. using System.Security.Cryptography.X509Certificates;
  9. using System.Text;
  10. using System.Web;
  11. using System.Web.UI;
  12. using System.Web.UI.WebControls;
  13.  
  14. namespace Gerencianet
  15. {
  16. public partial class _Cancelamento : System.Web.UI.Page
  17. {
  18. public string fazRequisicao()
  19. {
  20. string url, xml, postResponse, token, chave;
  21.  
  22. /**
  23. * String url
  24. * URL para onde deve ser enviada a requisição XML via post para cancelamento de cobranças.
  25. */
  26. url = "https://fortunus.gerencianet.com.br/webservice/cancelarCobranca";
  27.  
  28. /**
  29. * String token
  30. * Variável que armazena o token de integração utilizado no cancelamento de cobranças.
  31. * Gere o token em sua conta Gerencianet e atribua à variável.
  32. */
  33. token = "";
  34.  
  35. /**
  36. * String chave
  37. * Variável que armazena a chave da cobrança gerada através das integrações de emissões.
  38. */
  39. chave = "00001-1-ABCDE1";
  40.  
  41. /**
  42. * String xml
  43. * XML com os dados necessários para cancelamento de cobranças.
  44. */
  45. xml = "" +
  46. "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
  47. "<CancelarCobranca>" +
  48. "<Token>" + token + "</Token>" +
  49. "<Chave>" + chave + "</Chave>" +
  50. "</CancelarCobranca>" +
  51. "";
  52.  
  53. /**
  54. * Os dados serao enviados para a URL definida na string url através do objeto httpRequest e o retorno armazenado na variavel postResponse.
  55. */
  56. postResponse = Post(url, "xml=" + HttpUtility.UrlEncode(xml));
  57.  
  58. return postResponse;
  59. }
  60.  
  61. /**
  62. * Daqui em diante, se voce mexer no codigo, o ceu caira sobre sua cabeca
  63. */
  64. public string Post(string url, string data)
  65. {
  66. string vystup = null;
  67. byte[] buffer = Encoding.ASCII.GetBytes(data);
  68. HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
  69. WebReq.Method = "POST";
  70. WebReq.ContentType = "application/x-www-form-urlencoded";
  71. WebReq.ContentLength = buffer.Length;
  72. Stream PostData = WebReq.GetRequestStream();
  73. PostData.Write(buffer, 0, buffer.Length);
  74. PostData.Close();
  75. HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
  76. Console.WriteLine(WebResp.StatusCode);
  77. Console.WriteLine(WebResp.Server);
  78.  
  79. Stream Answer = WebResp.GetResponseStream();
  80. StreamReader _Answer = new StreamReader(Answer);
  81. vystup = _Answer.ReadToEnd();
  82.  
  83. return vystup.Trim();
  84. }
  85.  
  86. protected void Page_Load(object sender, EventArgs e)
  87. {
  88.  
  89. }
  90. }
  91. }