Emissão de Boletos

Como funciona

Gere boletos através do 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 entrada do post enviado:

POST https://integracao.gerencianet.com.br/xml/boleto/emite/xml HTTP/1.0

entrada=seu_xml

Você deve especificar através do XML (cuja estrutura é mostrada a seguir), o token de integração, os clientes que irão receber o boleto e os itens envolvidos na operação. Há campos opcionais tanto para clientes quanto para itens, você pode não enviá-los, mas, se o fizer, eles passarão por validação (por exemplo, se o CEP for enviado com um número de dígitos diferente de 8, o boleto não será emitido).

Para consumir o webservice para geração de boletos, a URL para a qual o post deve ser enviado é:

https://integracao.gerencianet.com.br/xml/boleto/emite/xml

Observações:

  • /xml/boleto/emite/xml => Receberá um xml com a resposta da requisição;
  • /xml/boleto/emite/html => Será redirecionado para uma página exibindo o boleto ou com informações sobre o erro, caso a integração não seja feita com sucesso;

Você pode gerar boletos para um cliente específico ou para vários clientes de uma só vez. Se a resposta desejada for no formato html, somente a primeira opção estará disponível.

Nosso ambiente de teste pode ser utilizado para validar a estrutura enviada. Neste caso, a URL a ser utilizada para enviar a requisição é:

https://testeintegracao.gerencianet.com.br/xml/boleto/emite/xml

Ressaltamos que nosso ambiente de testes apenas valida a comunicação e a estrutura enviada na requisição.

Procure utilizar o ambiente de testes antes de mandar a requisição para nosso ambiente de produção afim de evitar falhas de integração em seu sistema.

Caso seja necessária a emissão de uma segunda via do boleto emitido, sugerimos pedir a resposta em XML e salvar o link do boleto que vem no XML de resposta para posteriormente emitir a segunda via.

</> Estrutura do XML a ser enviado

TAG OBRIGATÓRIA DESCRIÇÃO

token

<boleto>

<token>

Sim

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

nomeRazaoSocial

<boleto>

<clientes>

<cliente>

<nomeRazaoSocial>

Sim

Nome do cliente ou razão social da empresa.

cpfcnpj

<boleto>

<clientes>

<cliente>

<cpfcnpj>

Sim

CPF do cliente ou CNPJ da empresa. Deve conter 11 ou 14 caracteres, respectivamente, sendo apenas números.

cel

<boleto>

<clientes>

<cliente>

<cel>

Sim

Celular do cliente com DDD contendo 10 ou 11 digitos dependendo da região, sendo apenas números.

email

<boleto>

<clientes>

<cliente>

<opcionais>

<email>

Não

e-mail válido de quem receberá a cobrança.

cep

<boleto>

<clientes>

<cliente>

<opcionais>

<cep>

Não

Código Postal de quem receberá a cobrança. Deve conter 8 caracteres, sendo apenas números.

rua

<boleto>

<clientes>

<cliente>

<opcionais>

<rua>

Não

Logradouro (Rua, Avenida, Praça, etc.) de quem receberá a cobraça.

numero

<boleto>

<clientes>

<cliente>

<opcionais>

<numero>

Não

Número do endereço de quem receberá a cobrança.

bairro

<boleto>

<clientes>

<cliente>

<opcionais>

<bairro>

Não

Bairro de quem receberá a cobrança.

complemento

<boleto>

<clientes>

<cliente>

<opcionais>

<complemento>

Não

Complemento do endereço do cliente, caso seja necessário.

cidade

<boleto>

<clientes>

<cliente>

<opcionais>

<cidade>

Não

Cidade de quem receberá a cobrança.

estado

<boleto>

<clientes>

<cliente>

<opcionais>

<estado>

Não

Dois caracteres referentes ao estado de quem receberá a cobrança.

Por exemplo: MG.

retorno

<boleto>

<clientes>

<cliente>

<opcionais>

<retorno>

Não

Valor à sua escolha usado para associação do boleto a uma numeração própria, permitindo consulta de status de pagamento e sincronização entre sistemas com numerações diferentes.

descricao

<boleto>

<itens>

<item>

<descricao>

Sim

Descrição do item envolvido na transação.

valor

<boleto>

<itens>

<item>

<valor>

Sim

Valor, em centavos, do item envolvido na transação. Este campo deve conter apenas números.

Por exemplo, se o item custa R$99,00, o valor deverá ser “9900”.

qtde

<boleto>

<itens>

<item>

<qtde>

Sim

Quantidade desse item específico a ser enviada para o cliente ou empresa.

desconto

<boleto>

<itens>

<item>

<desconto>

Não

Desconto, em centavos, do item envolvido na transação. Este campo deve conter apenas números.

Por exemplo, se o item desconto é de R$99,00, o valor deverá ser “9900”.

Atenção: esse desconto não depende da quantidade fornecida na tag qtde.

Valor Padrão: 0.

vencimento

<boleto>

<vencimento>

Não

Vencimento da cobrança. Dados:

  • dd = dia do mês,
  • mm = mês,
  • aaaa = ano, com 4 dígitos,

deve ser enviado no formato dd/mm/aaaa, inclusive com as barras.

Valor Padrão: Dias para vencimento configurado em sua conta.

contra

<boleto>

<opcionais>

<contra>

Não

Se igual a “s”, a cobrança será gerada com possibilidade de contra-apresentação; se igual a “n”, não.

Valor Padrão: “n”.

correios

<boleto>

<opcionais>

<correios>

Não

Se igual a “s”, a cobrança será enviada pelos correios; se igual a “n”, não.

Valor Padrão: “n”.

enviarParaMim

<boleto>

<opcionais>

<enviarParaMim>

Não

Se igual a “s”, o boleto será enviado para o próprio dono da integração; se igual a “n”, será enviado para os clientes.

Valor Padrão: “n”.

btaxa

<boleto>

<opcionais>

<btaxa>

Não

Indica se você deseja remover a taxa de emissão do boleto configurada em sua conta. Envie “s” se deseja e “n” caso contrário.

Valor Padrão: “n”.

continuarCobrando

<boleto>

<opcionais>

<continuarCobrando>

Não

Agendamento de cobranças periódicas:


  • “0” → emissão única,,
  • “1” → emissões mensais,
  • “2” → emissões bimestrais,
  • “3” → emissões trimestrais,,
  • “6” → emissões semestrais,
  • etc.

Valor Padrão: “0”.

descontoSobreTotal

<boleto>

<opcionais>

<descontoSobreTotal>

Não

Desconto, em centavos, sobre o valor total da cobrança. Este campo deve conter apenas números.

Por exemplo, se a tag descontoSobreTotal deve ser de R$99,00, o valor enviado será “9900”.

Valor Padrão: “0”.

frete

<boleto>

<opcionais>

<frete>

Não

Valor do frete, em centavos.

Se o frete for de R$15,33, o valor a ser enviado será “1533”.

Valor Padrão: “0”.

Instruções de pagamento

<boleto>

<instrucoes>

<instrucao>

Não

Instruções de pagamento que aparecerão no documento.

Poderão ser enviadas até 4 tags <instrucao> dentro de <instrucoes> .

As instruções recebidas via integração prevalecerão sobre as instruções cadastradas no sistema.

</> Quais dados você receberá?

TAG DESCRIÇÃO

metodo

<emitirCobranca>

<metodo>

Nome do método requisitado no WS, no caso, o valor será “boleto”.

statusCod

<emitirCobranca>

<statusCod>

Pode conter os valores:

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

Todo statusCod vem acompanhado da tag status.

status

<emitirCobranca>

<status>

Possui uma mensagem para o código mostrado no statusCod.

lote

<emitirCobranca>

<resposta>

<lote>

Código do lote da(s) cobrança(s).

nome

<emitirCobranca>

<resposta>

<cobrancasGeradas>

<cliente>

<nome>

Nome do cliente ou razão social da empresa.

email

<emitirCobranca>

<resposta>

<cobrancasGeradas>

<cliente>

<email>

Seu envio foi opcional. Se enviado, contém o e-mail de quem receberá a cobrança; caso contrário, a tag é inexistente.

cpf

<emitirCobranca>

<resposta>

<cobrancasGeradas>

<cliente>

<cpf>

Seu envio foi opcional. Se enviado, contém o CPF de quem receberá a cobrança; caso contrário, a tag é inexistente.

cnpj

<emitirCobranca>

<resposta>

<cobrancasGeradas>

<cliente>

<cnpj>

Seu envio foi opcional. Se enviado, contém o CNPJ da empresa que receberá a cobrança; caso contrário, a tag é inexistente.

chave

<emitirCobranca>

<resposta>

<cobrancasGeradas>

<cliente>

<cobranca>

<chave>

Chave de identificação do boleto.

retorno

<emitirCobranca>

<resposta>

<cobrancasGeradas>

<cliente>

<cobranca>

<retorno>

Associação do boleto a um código próprio, permitindo consulta de status de pagamento e sincronização entre sistemas com numerações diferentes.

vencimento

<emitirCobranca>

<resposta>

<cobrancasGeradas>

<cliente>

<cobranca>

<vencimento>

Dados:

  • dd = dia do mês,
  • mm = mês,
  • aaaa = ano, com 4 dígitos,

refere-se ao vencimento do boleto, no formato aaaa-mm-dd, inclusive com os traços.

link

<emitirCobranca>

<resposta>

<cobrancasGeradas>

<cliente>

<cobranca>

<link>

Link para download direto do boleto do respectivo cliente.

valor

<emitirCobranca>

<resposta>

<cobrancasGeradas>

<cliente>

<cobranca>

<valor>

Valor, em centavos, da cobrança emitida.

Por exemplo, se a cobrança for de R$26,00, o valor será “2600”.

status

<emitirCobranca>

<resposta>

<erro>

<status>

Em caso de erro, retorna o número de status referente ao erro encontrado.

statusMsg

<emitirCobranca>

<resposta>

<erro>

<statusMsg>

Em caso de erro, retorna a mensagem de status referente ao erro encontrado.

erro

<emitirCobranca>

<resposta>

<erroXml>

<erro>

Em caso de erro na validação do XML, retorna a mensagem com o erro encontrado na validação do mesmo.

Erros comuns

ERRO COMO EVITÁ-LO

email inválido

  • Não inserir e-mails inexistentes,
  • e-mail não é um campo obrigatório; se não está seguro sobre a existência do mesmo, deixe a tag vazia ou exclua-a,
  • emails como teste@teste.com são barrados, portanto evite-os.

XML inválido

  • Checar, através da documentação, se todas as tags contidas no XML são permitidas para o WS específico,
  • checar se nenhuma tag obrigatória ficou faltando em seu XML.

XML mal formatado

  • Lembrar de tratar caracteres especiais e remover espaços em brancos entre as tags,
  • verificar se todas as tags abertas foram fechadas.

Retorno já utilizado

  • O retorno é único, portanto, se já o utilizou em uma cobrança anterior, forneça um novo valor para este campo.

Resposta já gerada anteriormente

  • Ocorre quando uma cobrança exatamente igual foi gerada anteriormente. Altere algum valor para gerar uma cobrança diferente.

Exemplos

  1. <?php
  2. /**
  3. * String $URL
  4. * URL para onde deve ser enviada a requisição XML via post para emissão de boleto.
  5. */
  6. $url = "https://integracao.gerencianet.com.br/xml/boleto/emite/xml";
  7.  
  8. /**
  9. * String $token
  10. * Variável que armazena o token de integração utilizado na geração do boleto.
  11. * Gere o token em sua conta Gerencianet e atribua à variável.
  12. */
  13. $token = '';
  14.  
  15. /**
  16. * String $XML
  17. * XML com os dados necessários para emissão de um boleto pelo sistema Gerencianet.
  18. */
  19.  
  20. $xml = "<?xml version='1.0' encoding='utf-8'?>
  21. <boleto>
  22. <token>$token</token>
  23. <clientes>
  24. <cliente>
  25. <nomeRazaoSocial>Nome ou Razao Social</nomeRazaoSocial>
  26. <cpfcnpj>50481946160</cpfcnpj>
  27. <cel>3599584125</cel>
  28. <opcionais>
  29. <email></email>
  30. <cep>35400000</cep>
  31. <rua>Rua Jose</rua>
  32. <numero>75</numero>
  33. <bairro>Piedade</bairro>
  34. <complemento>casa</complemento>
  35. <estado>MG</estado>
  36. <cidade>Ouro Preto</cidade>
  37. </opcionais>
  38. </cliente>
  39. </clientes>
  40. <itens>
  41. <item>
  42. <descricao>Produto 2</descricao>
  43. <valor>1030</valor>
  44. <qtde>2</qtde>
  45. <desconto>500</desconto>
  46. </item>
  47. </itens>
  48. <vencimento>15/07/2057</vencimento>
  49. <opcionais>
  50. <contra>s</contra>
  51. <btaxa>n</btaxa>
  52. <enviarParaMim>s</enviarParaMim>
  53. <continuarCobrando>0</continuarCobrando>
  54. <correios>n</correios>
  55. </opcionais>
  56. </boleto>";
  57.  
  58. /**
  59. * O XML enviado não pode conter quebras de linha e tabulações.
  60. */
  61. $xml = str_replace("\n", '', $xml);
  62. $xml = str_replace("\r",'',$xml);
  63. $xml = str_replace("\t",'',$xml);
  64.  
  65. /**
  66. * Handle $ch : Manipulador de comunicação para transferência de dados, via CURL.
  67. */
  68. $ch = curl_init();
  69.  
  70. /**
  71. * Atualiza a URL de destino da variável $ch para a URL definida pela variável $url.
  72. */
  73. curl_setopt($ch, CURLOPT_URL, $url);
  74.  
  75. /**
  76. * Configura a variável $ch para retornar o resultado da comunicação, ao invés de exibir diretamente.
  77. */
  78. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  79.  
  80. /**
  81. * Configura o máximo de redirecionamentos permitido.
  82. */
  83. curl_setopt($ch, CURLOPT_MAXREDIRS, 2);
  84.  
  85. /**
  86. * Configura para que seja inserido automaticamente o campo Referer: nas requisições que seguem um redirecionamento Location:
  87. */
  88. curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  89.  
  90. /**
  91. * Array $data: Armazena o xml a ser enviado($data['entrada']=$xml)
  92. */
  93. $data = array('entrada' => $xml);
  94.  
  95. /**
  96. * Configura para que a requisição seja enviada via POST
  97. */
  98. curl_setopt($ch, CURLOPT_POST, true);
  99.  
  100. /**
  101. * Define os dados a serem enviados na requisição via POST
  102. */
  103. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  104.  
  105. /**
  106. * Define o tempo limite de tentativa de conexão
  107. */
  108. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
  109.  
  110. /**
  111. * Configura o USERAGENT da requisição
  112. */
  113. curl_setopt($ch, CURLOPT_USERAGENT, 'seu agente');
  114.  
  115. /**
  116. * Envia a requisição via POST com o XML e retorna o resultado da requisição
  117. * String $resposta: Resposta da requisição
  118. */
  119. $resposta = curl_exec($ch);
  120.  
  121. /**
  122. * Encerra a ponte de comunicação
  123. */
  124. curl_close($ch);
  125.  
  126. /**
  127. * Imprime a resposta da requisição.
  128. */
  129. echo $resposta;
  130. // Apenas um exemplo de como Extrair informações do XML de resposta. Veja que é necessário verificar a estrutura da resposta para acessar os campos desejados.
  131. $retorno = simplexml_load_string($resposta);
  132. // Resposta em caso de sucesso na emissão
  133. if($retorno->statusCod == 2){
  134. $link = $retorno->resposta->cobrancasGeradas->cliente->cobranca->link;
  135. //você pode acessar as outras informações do XML.
  136. echo $link;
  137. }
  138. else{
  139. if($retorno->resposta->erro->status == 1012){
  140. // significa que é um erro de cobrança já gerada anteriormente. Logo, iremos tratar a resposta anterior.
  141. $erro = $retorno->resposta->erro->statusMsg;
  142. echo '['.$erro.']';
  143. $link = $retorno->resposta->erro->entrada->emitirCobranca->resposta->cobrancasGeradas->cliente->cobranca->link;
  144. echo '['.$link.']';
  145. }
  146. else {
  147. //Foi outro tipo de erro. Nesse caso, pode ser tratado, ou então mostrar o erro na página
  148. //Capturando os erros encontrados
  149. print_r($retorno->resposta->errosXml->erro);
  150. die('Erro na geração da cobrança. Entre em contato com o desenvolvedor.');
  151. }
  152. }
  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. * String xml: XML gerado para envio ao Webservice
  21. * Caso for colocar um email, utilizar email válido senão vai gerar um erro na integração.
  22. */
  23. String xml= "<?xml version='1.0' encoding='utf-8'?>"
  24. +"<boleto>"
  25. +"<token>"+token+"</token>"
  26. +"<clientes>"
  27. +"<cliente>"
  28. +"<nomeRazaoSocial>Nome do cliente ou Razao Social</nomeRazaoSocial>"
  29. +"<cpfcnpj>50481946160</cpfcnpj>"
  30. +"<cel>3599584125</cel>"
  31. +"<opcionais>"
  32. +"<email></email>"
  33. +"<cep>35400000</cep>"
  34. +"<rua>Rua Jose</rua>"
  35. +"<numero>75</numero>"
  36. +"<bairro>Piedade</bairro>"
  37. +"<complemento>casa</complemento>"
  38. +"<estado>MG</estado>"
  39. +"<cidade>Ouro Preto</cidade>"
  40. +"</opcionais>"
  41. +"</cliente>"
  42. +"</clientes>"
  43. +"<itens>"
  44. +"<item>"
  45. +"<descricao>Produto 2</descricao>"
  46. +"<valor>1000</valor>"
  47. +"<qtde>2</qtde>"
  48. +"<desconto>500</desconto>"
  49. +"</item>"
  50. +"</itens>"
  51. +"<vencimento>15/07/2057</vencimento>"
  52. +"<opcionais>"
  53. +"<contra>s</contra>"
  54. +"<btaxa>n</btaxa>"
  55. +"<enviarParaMim>s</enviarParaMim>"
  56. +"<continuarCobrando>0</continuarCobrando>"
  57. +"<correios>n</correios>"
  58. +"</opcionais>"
  59. +"</boleto>";
  60. /**
  61. * String urlWS: URL para acesso ao Webservice
  62. * Para ambiente de teste utilize https://testeintegracao.gerencianet.com.br/xml/boleto/emite/xml
  63. */
  64. String urlWS = "https://integracao.gerencianet.com.br/xml/boleto/emite/xml";
  65.  
  66. /**
  67. * String urlParametros: Parametros para o envio junto a URL
  68. * Contem o parametro entrada com o XML codificado para comunicação via POST.
  69. */
  70. String urlParametros = "entrada=" + URLEncoder.encode(xml, "UTF-8");
  71.  
  72. /**
  73. * final String USER_AGENT: Dados de USER_AGENT enviados junto ao POST
  74. */
  75. final String USER_AGENT = "Mozilla/5.0";
  76. /**
  77. * Objeto URL obj: Objeto que armazena a conexão com o wWebservice a partir da URL definida anteriormente
  78. */
  79. URL obj = new URL(urlWS);
  80. /**
  81. * HttpsURLConnection con: Objeto responsável pela comunicação HTTPS utilizando a conexão obtida do URL obj.
  82. */
  83. HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
  84.  
  85. /**
  86. * Seleciona o método de requisição, no caso POST
  87. */
  88. con.setRequestMethod("POST");
  89. /**
  90. * Altera a propriedade de User-Agent da requisição para o valor especificado anteriormente
  91. */
  92. con.setRequestProperty("User-Agent", USER_AGENT);
  93.  
  94. /**
  95. * Permite que a conexão seja utilizada para também para envio dos dados
  96. */
  97. con.setDoOutput(true);
  98. /**
  99. * DataOutputStream wr: Define o objeto para envio da requisição
  100. */
  101. DataOutputStream wr = new DataOutputStream(con.getOutputStream());
  102. /**
  103. * Envia a requisição POST para a URL definida
  104. */
  105. wr.writeBytes(urlParametros);
  106. /**
  107. * Força o envio da requisição, enviando dados que tenham ficado em buffer
  108. */
  109. wr.flush();
  110. /**
  111. * Encerra o envio de dados, fechando a saida da conexão
  112. */
  113. wr.close();
  114.  
  115. /**
  116. * int responseCode: Código respondido pelo servidor, 200 em caso de sucesso
  117. */
  118. int responseCode = con.getResponseCode();
  119. /**
  120. * BufferedReader in: Define o objeto de entrada de dados para recuperação da resposta.
  121. */
  122. BufferedReader in = new BufferedReader(
  123. new InputStreamReader(con.getInputStream()));
  124. /**
  125. * String inputLine: String auxiliar para recuperação linha a linha dos dados
  126. */
  127. String inputLine;
  128. /**
  129. * StringBuffer resposta: String que armazenará o retorno enviado pelo servidor
  130. */
  131. StringBuffer resposta = new StringBuffer();
  132.  
  133. /**
  134. * Recupera os dados, linha a linha e armazena continuamente na resposta
  135. */
  136. while ((inputLine = in.readLine()) != null) {
  137. resposta.append(inputLine);
  138. }
  139. /**
  140. * Encerra a conexão fechando a entrada dos dados
  141. */
  142. in.close();
  143.  
  144. /**
  145. * String resp: cópia de resposta, em formato de string simples
  146. */
  147. String resp = resposta.toString();
  148. %>
  149. <%= resp%>
  1. <%@ Page aspcompat=true %>
  2.  
  3. <%
  4.  
  5. '''
  6. ' A tag email nao e obrigatoria, porém, se deseja inserir um email, o mesmo deve ser válido. Caso contrario, a cobranca nao sera gerada.
  7. '''
  8.  
  9. dim url, xml, httpRequest, postResponse, token
  10.  
  11. '''
  12. ' String url
  13. ' URL para onde deve ser enviada a requisição XML via post para emissão de boleto.
  14. '''
  15. url = "https://integracao.gerencianet.com.br/xml/boleto/emite/xml"
  16.  
  17. '''
  18. ' String token
  19. ' Variável que armazena o token de integração utilizado na geração do boleto.
  20. ' Gere o token em sua conta Gerencianet e atribua à variável.
  21. '''
  22. token = ""
  23.  
  24. '''
  25. ' String xml
  26. ' XML com os dados necessários para emissão de uma cobrança online pelo sistema Gerencianet.
  27. '''
  28. xml = "" &
  29. "<?xml version=""1.0"" encoding=""utf-8""?>" &
  30. "<boleto>" &
  31. "<token>" & token & "</token>" &
  32. "<clientes>" &
  33. "<cliente>" &
  34. "<nomeRazaoSocial>Nome do cliente ou Razao Social</nomeRazaoSocial>" &
  35. "<cpfcnpj>50481946160</cpfcnpj>" &
  36. "<cel>3599584125</cel>" &
  37. "<opcionais>" &
  38. "<email></email>" &
  39. "<cep>35400000</cep>" &
  40. "<rua>Rua Jose </rua>" &
  41. "<numero>75</numero>" &
  42. "<bairro>Piedade</bairro>" &
  43. "<complemento>casa</complemento>" &
  44. "<estado>MG</estado>" &
  45. "<cidade>Ouro Preto</cidade>" &
  46. "</opcionais>" &
  47. "</cliente>" &
  48. "</clientes>" &
  49. "<itens>" &
  50. "<item>" &
  51. "<descricao>Produto 2</descricao>" &
  52. "<valor>1000</valor>" &
  53. "<qtde>2</qtde>" &
  54. "<desconto>500</desconto>" &
  55. "</item>" &
  56. "</itens>" &
  57. "<vencimento>15/07/2057</vencimento>" &
  58. "<opcionais>" &
  59. "<contra>s</contra>" &
  60. "<btaxa>n</btaxa>" &
  61. "<enviarParaMim>s</enviarParaMim>" &
  62. "<continuarCobrando>0</continuarCobrando>" &
  63. "<correios>n</correios>" &
  64. "</opcionais>" &
  65. "</boleto>" &
  66. ""
  67.  
  68. '''
  69. ' Os dados serao enviados para a URL definida na string url através do objeto httpRequest e o retorno armazenado na variavel postResponse.
  70. '''
  71. httpRequest = Server.CreateObject("MSXML2.ServerXMLHTTP")
  72. httpRequest.Open("POST", url, False)
  73. httpRequest.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
  74. httpRequest.Send("entrada=" & Server.URLEncode(xml))
  75. postResponse = Server.URLDecode(httpRequest.ResponseText)
  76.  
  77. '''
  78. ' Imprime o conteudo da variavel postResponse na tela.
  79. '''
  80. response.write(postResponse)
  81.  
  82. %>

  1. <%@ Page Title="Home Page" Language="C#" AutoEventWireup="true"
  2. CodeBehind="boleto.aspx.cs" Inherits="Gerencianet._Boleto" %>
  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 _Boleto : System.Web.UI.Page
  17. {
  18. public string fazRequisicao()
  19. {
  20. /**
  21. * A tag email nao e obrigatoria, porém, se deseja inserir um email,
  22. * o mesmo deve ser válido. Caso contrario, a cobranca nao sera gerada.
  23. */
  24.  
  25. string url, xml, postResponse, token;
  26.  
  27. /**
  28. * String url
  29. * URL para onde deve ser enviada a requisição XML via post para emissão de boleto.
  30. */
  31. url = "https://integracao.gerencianet.com.br/xml/boleto/emite/xml";
  32.  
  33. /**
  34. * String token
  35. * Variável que armazena o token de integração utilizado na geração do boleto.
  36. */
  37. token = "";
  38.  
  39. /**
  40. * String xml
  41. * XML com os dados necessários para emissão de uma cobrança online pelo sistema Gerencianet.
  42. */
  43. xml = "" +
  44. "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
  45. "<boleto>" +
  46. "<token>" + token + "</token>" +
  47. "<clientes>" +
  48. "<cliente>" +
  49. "<nomeRazaoSocial>Nome do & cliente ou RazaoSocial</nomeRazaoSocial>" +
  50. "<cpfcnpj>50481946160</cpfcnpj>" +
  51. "<cel>3599584125</cel>" +
  52. "<opcionais>" +
  53. "<email></email>" +
  54. "<cep>35400000</cep>" +
  55. "<rua>Rua Jose </rua>" +
  56. "<numero>75999</numero>" +
  57. "<bairro>Piedade</bairro>" +
  58. "<complemento>casa</complemento>" +
  59. "<estado>MG</estado>" +
  60. "<cidade>Ouro Preto</cidade>" +
  61. "</opcionais>" +
  62. "</cliente>" +
  63. "</clientes>" +
  64. "<itens>" +
  65. "<item>" +
  66. "<descricao>Produto 2</descricao>" +
  67. "<valor>1000</valor>" +
  68. "<qtde>2</qtde>" +
  69. "<desconto>500</desconto>" +
  70. "</item>" +
  71. "</itens>" +
  72. "<vencimento>15/07/2057</vencimento>" +
  73. "<opcionais>" +
  74. "<contra>s</contra>" +
  75. "<btaxa>n</btaxa>" +
  76. "<enviarParaMim>s</enviarParaMim>" +
  77. "<continuarCobrando>0</continuarCobrando>" +
  78. "<correios>n</correios>" +
  79. "</opcionais>" +
  80. "</boleto>" +
  81. "";
  82.  
  83. /**
  84. * Os dados serao enviados para a URL definida na string url através do objeto httpRequest e o retorno armazenado na variavel postResponse.
  85. */
  86. postResponse = Post(url, "entrada=" + HttpUtility.UrlEncode(xml));
  87.  
  88. return postResponse;
  89. }
  90.  
  91. /**
  92. * Daqui em diante, se voce mexer no codigo, o ceu caira sobre sua cabeca
  93. */
  94. public string Post(string url, string data)
  95. {
  96. string vystup = null;
  97. byte[] buffer = Encoding.ASCII.GetBytes(data);
  98. HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
  99. WebReq.Method = "POST";
  100. WebReq.ContentType = "application/x-www-form-urlencoded";
  101. WebReq.ContentLength = buffer.Length;
  102. Stream PostData = WebReq.GetRequestStream();
  103. PostData.Write(buffer, 0, buffer.Length);
  104. PostData.Close();
  105. HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
  106. Console.WriteLine(WebResp.StatusCode);
  107. Console.WriteLine(WebResp.Server);
  108.  
  109. Stream Answer = WebResp.GetResponseStream();
  110. StreamReader _Answer = new StreamReader(Answer);
  111. vystup = _Answer.ReadToEnd();
  112.  
  113. return vystup.Trim();
  114. }
  115.  
  116. protected void Page_Load(object sender, EventArgs e)
  117. {
  118.  
  119. }
  120. }
  121. }