Emissão de Carnês

Como funciona

Gere carnês 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/carne/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 carnê 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 carnê não será emitido).

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

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

onde:

  • /xml/boleto/emite/xml => Receberá um xml com a resposta da requisição;
  • /xml/boleto/emite/html => Uma página para baixar a capa e as lâminas do carnê é retornada;

Você pode gerar carnês 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/carne/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 carnê emitido, sugerimos pedir a resposta em XML e salvar o link do carnê que vem no XML de resposta para posteriormente emitir a segunda via.

</> Estrutura do XML a ser enviado

TAG OBRIGATÓRIA DESCRIÇÃO

token

<carne>

<token>

Sim

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

nomeRazaoSocial

<carne>

<clientes>

<cliente>

<nomeRazaoSocial>

Sim

Nome do cliente ou razão social da empresa.

cpfcnpj

<carne>

<clientes>

<cliente>

<cpfcnpj>

Sim

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

cel

<carne>

<clientes>

<cliente>

<cel>

Sim

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

email

<carne>

<clientes>

<cliente>

<opcionais>

<email>

Não

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

cep

<carne>

<clientes>

<cliente>

<opcionais>

<cep>

Não

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

rua

<carne>

<clientes>

<cliente>

<opcionais>

<rua>

Não

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

numero

<carne>

<clientes>

<cliente>

<opcionais>

<numero>

Não

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

bairro

<carne>

<clientes>

<cliente>

<opcionais>

<bairro>

Não

Bairro de quem receberá a cobrança.

complemento

<carne>

<clientes>

<cliente>

<opcionais>

<complemento>

Não

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

cidade

<carne>

<clientes>

<cliente>

<opcionais>

<cidade>

Não

Cidade de quem receberá a cobrança.

estado

<carne>

<clientes>

<cliente>

<opcionais>

<estado>

Não

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

Por exemplo: MG.

descricao

<carne>

<itens>

<item>

<descricao>

Sim

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

valor

<carne>

<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

<carne>

<itens>

<item>

<qtde>

Sim

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

desconto

<carne>

<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.

primeiroVencimento

<carne>

<primeiroVencimento>

Sim

Vencimento da primeira lâmina do carnê. 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.

nParcelas

<carne>

<nParcelas>

Sim

Número de parcelas em que será dividido o valor total da emissão.

dividirValor

<carne>

<dividirValor>

Sim

Se igual a “s”, o valor total da cobrança será dividido entre as parcelas; se igual a “n”, todas as parcelas terão o mesmo valor que o total da cobrança.

contra

<carne>

<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

<carne>

<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

<carne>

<opcionais>

<enviarParaMim>

Não

Se igual a “s”, as lâminas serão enviadas para o próprio dono da integração; se igual a “n”, serão enviadas para os clientes.

Valor Padrão: “n”.

btaxa

<carne>

<opcionais>

<btaxa>

Não

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

Valor Padrão: “n”.

Instruções de pagamento

<carne>

<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á “carne”.

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).

link

<emitirCobranca>

<resposta>

<link>

Link que redireciona ao ambiente Gerencianet para download de todo lote de lâminas.

linkCapa

<emitirCobranca>

<resposta>

<linkCapa>

Link para download direto de todas capas do lote de lâminas.

linkCarne

<emitirCobranca>

<resposta>

<linkCarne>

Link para download direto de todos carnês do lote de lâminas.

nome

<emitirCobranca>

<resposta>

<carnes>

<cliente>

<nome>

Nome do cliente ou razão social da empresa.

email

<emitirCobranca>

<resposta>

<carnes>

<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>

<carnes>

<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>

<carnes>

<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>

<carnes>

<cliente>

<laminas>

<lamina>

<chave>

Chave de identificação do carnê.

vencimento

<emitirCobranca>

<resposta>

<carnes>

<cliente>

<laminas>

<lamina>

<vencimento>

Dados:

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

refere-se ao vencimento da lâmina do carnê, no formato aaaa-mm-dd, inclusive com os traços.

valor

<emitirCobranca>

<resposta>

<carnes>

<cliente>

<laminas>

<lamina>

<valor>

Valor, em centavos, da cobrança emitida.

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

parcela

<emitirCobranca>

<resposta>

<carnes>

<cliente>

<laminas>

<lamina>

<parcela>

Número da parcela. Refere-se à lâmina do carnê gerado.

linkCapa

<emitirCobranca>

<resposta>

<carnes>

<cliente>

<linkCapa>

Link para download direto da capa das lâminas do respectivo cliente.

linkCarne

<emitirCobranca>

<resposta>

<carnes>

<cliente>

<linkCarne>

Link para download direto de todo carnê do respectivo cliente.

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.

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. /**
  4. * String $URL
  5. * URL para onde deve ser enviada a requisição XML via post para emissão de carnês.
  6. */
  7. $url = 'https://integracao.gerencianet.com.br/xml/carne/emite/xml';
  8.  
  9. /**
  10. * String $token
  11. * Variável que armazena o token de integração utilizado na geração do carnê.
  12. * Gere o token em sua conta Gerencianet e atribua à variável.
  13. */
  14. $token = '';
  15.  
  16. /**
  17. * String $XML
  18. * XML com os dados necessários para emissão de uma cobrança online pelo sistema Gerencianet.
  19. */
  20. $xml = "<?xml version='1.0' encoding='utf-8'?>
  21. <carne>
  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>1000</valor>
  44. <qtde>2</qtde>
  45. <desconto>500</desconto>
  46. </item>
  47. </itens>
  48. <primeiroVencimento>15/07/2057</primeiroVencimento>
  49. <nParcelas>3</nParcelas>
  50. <dividirValor>s</dividirValor>
  51. <opcionais>
  52. <contra>s</contra>
  53. <correios>n</correios>
  54. <enviarParaMim>s</enviarParaMim>
  55. <btaxa>n</btaxa>
  56. </opcionais>
  57. </carne>";
  58.  
  59.  
  60.  
  61. /**
  62. * O XML enviado não pode conter quebras de linha e tabulações.
  63. */
  64. $xml = str_replace("\n", '', $xml);
  65. $xml = str_replace("\r",'',$xml);
  66. $xml = str_replace("\t",'',$xml);
  67.  
  68. /**
  69. * Handle $ch : Manipulador de comunicação para transferência de dados, via CURL.
  70. */
  71. $ch = curl_init();
  72.  
  73. /**
  74. * Atualiza a URL de destino da variável $ch para a URL definida pela variável $url.
  75. */
  76. curl_setopt($ch, CURLOPT_URL, $url);
  77.  
  78. /**
  79. * Configura a variável $ch para retornar o resultado da comunicação, ao invés de exibir diretamente.
  80. */
  81. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  82.  
  83. /**
  84. * Configura o máximo de redirecionamentos permitido.
  85. */
  86. curl_setopt($ch, CURLOPT_MAXREDIRS, 2);
  87.  
  88. /**
  89. * Configura para que seja inserido automaticamente o campo Referer: nas requisições que seguem um redirecionamento Location:
  90. */
  91. curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  92.  
  93. /**
  94. * Array $data: Armazena o xml a ser enviado($data['entrada']=$xml)
  95. */
  96. $data = array('entrada' => $xml);
  97.  
  98. /**
  99. * Configura para que a requisição seja enviada via POST
  100. */
  101. curl_setopt($ch, CURLOPT_POST, true);
  102.  
  103. /**
  104. * Define os dados a serem enviados na requisição via POST
  105. */
  106. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  107.  
  108. /**
  109. * Define o tempo limite de tentativa de conexão
  110. */
  111. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
  112.  
  113. /**
  114. * Configura o USERAGENT da requisição
  115. */
  116. curl_setopt($ch, CURLOPT_USERAGENT, 'seu agente');
  117.  
  118. /**
  119. * Envia a requisição via POST com o XML e retorna o resultado da requisição
  120. * String $resposta: Resposta da requisição
  121. */
  122. $resposta = curl_exec($ch);
  123.  
  124. /**
  125. * Encerra a ponte de comunicação
  126. */
  127. curl_close($ch);
  128.  
  129. /**
  130. * Imprime a resposta da requisição.
  131. */
  132. 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. * 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. +"<carne>"
  25. + "<token>" + token + "</token>"
  26. +"<clientes>"
  27. +"<cliente>"
  28. +"<nomeRazaoSocial>Nome 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. +"<primeiroVencimento>15/07/2057</primeiroVencimento>"
  52. +"<nParcelas>3</nParcelas>"
  53. +"<dividirValor>s</dividirValor>"
  54. +"<opcionais>"
  55. +"<contra>s</contra>"
  56. +"<correios>n</correios>"
  57. +"<enviarParaMim>s</enviarParaMim>"
  58. +"<btaxa>n</btaxa>"
  59. +"</opcionais>"
  60. +"</carne>";
  61. /**
  62. * String urlWS: URL para acesso ao Webservice
  63. * Para ambiente de teste utilize https://testeintegracao.gerencianet.com.br/xml/carne/emite/xml
  64. */
  65. String urlWS = "https://integracao.gerencianet.com.br/xml/carne/emite/xml";
  66.  
  67. /**
  68. * String urlParametros: Parametros para o envio junto a URL
  69. * Contem o parametro entrada com o XML codificado para comunicação via POST.
  70. */
  71. String urlParametros = "entrada=" + URLEncoder.encode(xml, "UTF-8");
  72.  
  73. /**
  74. * final String USER_AGENT: Dados de USER_AGENT enviados junto ao POST
  75. */
  76. final String USER_AGENT = "Mozilla/5.0";
  77. /**
  78. * Objeto URL obj: Objeto que armazena a conexão com o wWebservice a partir da URL definida anteriormente
  79. */
  80. URL obj = new URL(urlWS);
  81. /**
  82. * HttpsURLConnection con: Objeto responsável pela comunicação HTTPS utilizando a conexão obtida do URL obj.
  83. */
  84. HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
  85.  
  86. /**
  87. * Seleciona o método de requisição, no caso POST
  88. */
  89. con.setRequestMethod("POST");
  90. /**
  91. * Altera a propriedade de User-Agent da requisição para o valor especificado anteriormente
  92. */
  93. con.setRequestProperty("User-Agent", USER_AGENT);
  94.  
  95. /**
  96. * Permite que a conexão seja utilizada para também para envio dos dados
  97. */
  98. con.setDoOutput(true);
  99. /**
  100. * DataOutputStream wr: Define o objeto para envio da requisição
  101. */
  102. DataOutputStream wr = new DataOutputStream(con.getOutputStream());
  103. /**
  104. * Envia a requisição POST para a URL definida
  105. */
  106. wr.writeBytes(urlParametros);
  107. /**
  108. * Força o envio da requisição, enviando dados que tenham ficado em buffer
  109. */
  110. wr.flush();
  111. /**
  112. * Encerra o envio de dados, fechando a saida da conexão
  113. */
  114. wr.close();
  115.  
  116. /**
  117. * int responseCode: Código respondido pelo servidor, 200 em caso de sucesso
  118. */
  119. int responseCode = con.getResponseCode();
  120. /**
  121. * BufferedReader in: Define o objeto de entrada de dados para recuperação da resposta.
  122. */
  123. BufferedReader in = new BufferedReader(
  124. new InputStreamReader(con.getInputStream()));
  125. /**
  126. * String inputLine: String auxiliar para recuperação linha a linha dos dados
  127. */
  128. String inputLine;
  129. /**
  130. * StringBuffer resposta: String que armazenará o retorno enviado pelo servidor
  131. */
  132. StringBuffer resposta = new StringBuffer();
  133.  
  134. /**
  135. * Recupera os dados, linha a linha e armazena continuamente na resposta
  136. */
  137. while ((inputLine = in.readLine()) != null) {
  138. resposta.append(inputLine);
  139. }
  140. /**
  141. * Encerra a conexão fechando a entrada dos dados
  142. */
  143. in.close();
  144.  
  145. /**
  146. * String resp: cópia de resposta, em formato de string simples
  147. */
  148. String resp = resposta.toString();
  149. %>
  150. <%= 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/carne/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. "<carne>" &
  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. "<primeiroVencimento>15/07/2057</primeiroVencimento>" &
  58. "<nParcelas>3</nParcelas>" &
  59. "<dividirValor>s</dividirValor>" &
  60. "<opcionais>" &
  61. "<contra>s</contra>" &
  62. "<correios>n</correios>" &
  63. "<enviarParaMim>s</enviarParaMim>" &
  64. "<btaxa>n</btaxa>" &
  65. "</opcionais>" &
  66. "</carne>" &
  67. ""
  68.  
  69. '''
  70. ' Os dados serao enviados para a URL definida na string url através do objeto httpRequest e o retorno armazenado na variavel postResponse.
  71. '''
  72. httpRequest = Server.CreateObject("MSXML2.ServerXMLHTTP")
  73. httpRequest.Open("POST", url, False)
  74. httpRequest.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
  75. httpRequest.Send("entrada=" & Server.URLEncode(xml))
  76. postResponse = Server.URLDecode(httpRequest.ResponseText)
  77.  
  78. '''
  79. ' Imprime o conteudo da variavel postResponse na tela.
  80. '''
  81. response.write(postResponse)
  82.  
  83. %>

  1. <%@ Page Title="Home Page" Language="C#" AutoEventWireup="true"
  2. CodeBehind="carne.aspx.cs" Inherits="Gerencianet._Carne" %>
  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 _Carne : 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/carne/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. "<carne>" +
  46. "<token>" + token + "</token>" +
  47. "<clientes>" +
  48. "<cliente>" +
  49. "<nomeRazaoSocial>Nome do cliente ou Razao Social</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>75</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. "<primeiroVencimento>15/07/2057</primeiroVencimento>" +
  73. "<nParcelas>3</nParcelas>" +
  74. "<dividirValor>s</dividirValor>" +
  75. "<opcionais>" +
  76. "<contra>s</contra>" +
  77. "<correios>n</correios>" +
  78. "<enviarParaMim>s</enviarParaMim>" +
  79. "<btaxa>n</btaxa>" +
  80. "</opcionais>" +
  81. "</carne>" +
  82. "";
  83.  
  84. /**
  85. * Os dados serao enviados para a URL definida na string url através do objeto httpRequest e o retorno armazenado na variavel postResponse.
  86. */
  87. postResponse = Post(url, "entrada=" + HttpUtility.UrlEncode(xml));
  88.  
  89. return postResponse;
  90. }
  91.  
  92. /**
  93. * Daqui em diante, se voce mexer no codigo, o ceu caira sobre sua cabeca
  94. */
  95. public string Post(string url, string data)
  96. {
  97. string vystup = null;
  98. byte[] buffer = Encoding.ASCII.GetBytes(data);
  99. HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
  100. WebReq.Method = "POST";
  101. WebReq.ContentType = "application/x-www-form-urlencoded";
  102. WebReq.ContentLength = buffer.Length;
  103. Stream PostData = WebReq.GetRequestStream();
  104. PostData.Write(buffer, 0, buffer.Length);
  105. PostData.Close();
  106. HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
  107. Console.WriteLine(WebResp.StatusCode);
  108. Console.WriteLine(WebResp.Server);
  109.  
  110. Stream Answer = WebResp.GetResponseStream();
  111. StreamReader _Answer = new StreamReader(Answer);
  112. vystup = _Answer.ReadToEnd();
  113.  
  114. return vystup.Trim();
  115. }
  116.  
  117. protected void Page_Load(object sender, EventArgs e)
  118. {
  119.  
  120. }
  121. }
  122. }