Callback

Como funciona

É possível receber em seu site notificações de alteração de status das suas cobranças, para um melhor acompanhamento das transações e dos clientes. Com essa ferramenta é possível manter seu sistema atualizado e ser notificado do pagamento, cancelamento ou visualização da cobrança automaticamente. Para utilizar esta ferramenta não é necessário enviar nenhum dado, visto que o nosso sistema se encarregará de avisá-lo das mudanças na situação da cobrança.

Para configurar esta ferramenta você precisa entrar em sua conta e acessar o menu Integrações. Em seguida selecione a aba ‘Callback’ e acessará o gerenciamento das notificações. Caso não possua nenhuma URL de notificação cadastrada, será exibido o formulário de cadastro. Se já possuir uma ou mais URLs de notificação, serão listadas todas as suas URLs cadastradas. Para cadastrar uma nova, digite no campo "URL de Notificação" a URL de seu site onde você irá receber e processar a notificação e selecione o tipo de notificação que deseja receber neste endereço:

  • Cobranças com pagamento confirmado;
  • Cobranças canceladas;

Caso não seja especificado qual protocolo utilizar, será utilizado HTTP. Se você adicionar gerencianet.com.br, a URL cadastrada será http://gerencianet.com.br/. Se a URL enviada fosse http://gerencianet.com.br ou https://gerencianet.com.br ela não sofreria alteração.

A sua URL cadastrada deve receber via POST um XML contendo os detalhes da transação. Para que a notificação seja considerada entregue é necessário que a requisição retorne o status HTTP "200 (OK)". Após algumas tentativas com falha, sua URL de notificação será desativada. Uma URL desativada pode ser reativada no Gerencianet, no menu Integrações - Callback.

</> Quais dados você receberá?

TAG DESCRIÇÃO TIPOS DE NOTIFICAÇÃO

pagamento

<pagamento>

TAG que engloba os dados das notificações de pagamento

Notificação de Pagamento de Cobrança

cancelamento

<cancelamento>

TAG que engloba os dados das notificações de cancelamento

Notificação de Cancelamento de Cobrança

visualizado

<visualizado>

TAG que engloba os dados das notificações de visualização

Notificação de Visualização de Cobrança

codc

<cliente>

<codc>

Código do cliente da fatura

Todos os Tipos

cliente

<cliente>

<cliente>

Nome do cliente da fatura

Todos os Tipos

cpfcnpj

<cliente>

<cpfcnpj>

CPF ou CNPJ do cliente da fatura

Todos os Tipos

email

<cliente>

<email>

E-mail do cliente da fatura

Todos os Tipos

endereco

<cliente>

<endereco>

Endereço do cliente da fatura

Todos os Tipos

chave

<cobranca>

<chave>

Chave de identificação da cobrança

Todos os Tipos

retorno

<cobranca>

<retorno>

Retorno enviado quando da emissão da cobrança. Quando não enviado é igual à chave

Todos os Tipos

pedido

<cobranca>

<pedido>

Número da fatura

Todos os Tipos

chaveLote

<cobranca>

<chaveLote>

Chave do lote da cobrança

Todos os Tipos

vencimento

<cobranca>

<vencimento>

Data de vencimento da fatura em formato brasileiro (dd/mm/aaaa)

Todos os Tipos

dataFin

<cobranca>

<dataFin>

Data que a fatura foi finalizada em formato brasileiro (dd/mm/aaaa)

Todos os Tipos, mas possui valor apenas em notificação de pagamento

dataCanc

<cobranca>

<dataCanc>

Data que a fatura foi cancelada em formato brasileiro (dd/mm/aaaa)

Todos os Tipos, mas possui dados apenas em notificação de cancelamento.

dataCredito

<cobranca>

<dataCredito>

Data da disponibilização do crédito em sua conta no formato brasileiro (dd/mm/aaaa)

Todos os Tipos

pagconf

<cobranca>

<pagconf>

Indica se o pagamento já foi confirmado

Todos os Tipos

status

<cobranca>

<status>

Status da fatura:

  • a = aguardando;
  • c = cancelado;
  • f = finalizado;
  • i = inadimplente;
  • p = pagamento confirmada;

Todos os Tipos

valorPago

<cobranca>

<valorPago>

Valor que foi pago e confirmado. No caso de não possuirmos esta informação, o valor retornado será "0"

Todos os Tipos

assinatura

<cobranca>

<assinatura>

Identificador da URL de notificação.

Todos os Tipos

pag

<cobranca>

<pag>

Opção de pagamento escolhida pelo cliente:

  • pag0 = carnê;
  • pag1 = boleto;
  • pag2 = cartão de crédito;

Todos os Tipos

total

<cobranca>

<total>

Valor total da fatura

Todos os Tipos

nparcela

<cobranca>

<nparcela>

Número da parcela da cobrança caso seja um carnê, ou "0" caso contrário

Todos os Tipos

produto

<itens>

<item>

<produto>

Descrição do produto

Todos os Tipos

valor

<itens>

<item>

<valor>

Valor do produto

Todos os Tipos

quantidade

<itens>

<item>

<quantidade>

Quantidade do produto

Todos os Tipos

Exemplos

  1. <?php
  2.  
  3. if(isset($_POST['xml'])){
  4. /**
  5. * Transformando o XML em Objeto
  6. */
  7. $objXml = simplexml_load_string($_POST['xml']);
  8.  
  9. /**
  10. * Captura dos dados do cliente
  11. */
  12. $nome = $objXml->cliente->cliente;
  13.  
  14. /**
  15. * Captura dos dados da cobrança
  16. */
  17.  
  18. /**
  19. * Chave da cobrança
  20. */
  21. $chave = $objXml->cobranca->chave;
  22.  
  23. /**
  24. * Retorno da cobrança
  25. */
  26. $retorno = $objXml->cobranca->retorno;
  27.  
  28. /**
  29. * Número do pedido
  30. */
  31. $numeroPedido = $objXml->cobranca->documento;
  32.  
  33. /**
  34. * Valor pago, caso essa informação não esteja disponível o valor será 0
  35. */
  36. $valorPago = $objXml->cobranca->valorPago;
  37.  
  38. /**
  39. * Opção escolhida para pagamento, pag0 -> carnê, pag1 -> boleto, pag2 -> CC
  40. */
  41. $pag = $objXml->cobranca->pag;
  42.  
  43. /**
  44. * Capturar dados dos itens
  45. */
  46. $produtos = array();
  47. foreach($objXml->itens->item as $item){
  48. $produtos[] = $item->produto;
  49. }
  50. }
  1. <%@page import="java.util.*"%><%@page import="javax.xml.parsers.*"%><%@page import="org.xml.sax.InputSource"%><%@page import="org.w3c.dom.*"%><%@page import="java.io.*"%><%@page contentType="text/html" pageEncoding="UTF-8"%><%
  2.  
  3. Element elem;
  4. Node child;
  5. CharacterData cd;
  6.  
  7. String xml = request.getParameter("xml");
  8.  
  9. /**
  10. * Transformando o XML em Objeto
  11. */
  12. DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
  13. InputSource is = new InputSource();
  14. is.setCharacterStream(new StringReader(xml));
  15. Document doc = db.parse(is);
  16.  
  17. /**
  18. * Captura dos dados do cliente
  19. */
  20. elem = (Element)doc.getElementsByTagName("cliente").item(1);
  21. child = elem.getFirstChild();
  22. cd = (CharacterData) child;
  23. String nome = cd.getData();
  24.  
  25. /**
  26. * Captura dos dados da cobrança
  27. */
  28.  
  29. /**
  30. * Chave da cobrança
  31. */
  32. elem = (Element)doc.getElementsByTagName("chave").item(0);
  33. child = elem.getFirstChild();
  34. cd = (CharacterData) child;
  35. String chave = cd.getData();
  36.  
  37. /**
  38. * Retorno da cobrança
  39. */
  40. elem = (Element)doc.getElementsByTagName("retorno").item(0);
  41. child = elem.getFirstChild();
  42. cd = (CharacterData) child;
  43. String retorno = cd.getData();
  44.  
  45. /**
  46. * Número do pedido
  47. */
  48. elem = (Element)doc.getElementsByTagName("documento").item(0);
  49. child = elem.getFirstChild();
  50. cd = (CharacterData) child;
  51. String numeroPedido = cd.getData();
  52.  
  53. /**
  54. * Valor pago, caso essa informação não esteja disponível o valor será 0
  55. */
  56. elem = (Element)doc.getElementsByTagName("valorPago").item(0);
  57. child = elem.getFirstChild();
  58. cd = (CharacterData) child;
  59. String valorPago = cd.getData();
  60.  
  61. /**
  62. * Opção escolhida para pagamento, pag0 -> carnê, pag1 -> boleto, pag2 -> CC
  63. */
  64. elem = (Element)doc.getElementsByTagName("pag").item(0);
  65. child = elem.getFirstChild();
  66. cd = (CharacterData) child;
  67. String pag = cd.getData();
  68.  
  69. /**
  70. * Capturar dados dos itens
  71. */
  72. ArrayList<String> produto = new ArrayList<String>();
  73. NodeList itens = doc.getElementsByTagName("produto");
  74. for (int i = 0; i<itens.getLength();i++) {
  75. elem = (Element) itens.item(i);
  76. child = elem.getFirstChild();
  77. cd = (CharacterData) child;
  78. produto.add(cd.getData());
  79. }
  80. %>
  1. <%@ Page AspCompat="true" ValidateRequest="false" %>
  2.  
  3. <%
  4. dim xmlCallback, objxml, nodes, itens
  5. dim nome, chave, retorno, numeroPedido, valorPago, pag, produtos
  6.  
  7. xmlCallback = request.Form("xml")
  8. '''
  9. ' Transformando o Xml em objeto
  10. '''
  11. objXML = Server.CreateObject("Microsoft.XMLDOM")
  12. objXML.loadXML(xmlCallback)
  13.  
  14. '''
  15. ' Captura dos dados do cliente
  16. '''
  17. nome = objXML.getElementsByTagName("cliente/cliente")(0).text
  18. '''
  19. ' Captura dos dados da cobrança
  20. '''
  21.  
  22. '''
  23. ' Chave da cobrança
  24. '''
  25. chave = objXML.getElementsByTagName("chave")(0).text
  26.  
  27. '''
  28. ' Retorno da cobrança
  29. '''
  30. retorno = objXML.getElementsByTagName("retorno")(0).text
  31.  
  32. '''
  33. ' Número do pedido
  34. '''
  35. numeroPedido = objXML.getElementsByTagName("documento")(0).text
  36.  
  37. '''
  38. ' Valor pago, caso essa informação não esteja disponível o valor será 0
  39. '''
  40. valorPago = objXML.getElementsByTagName("valorPago")(0).text
  41.  
  42. '''
  43. ' Opção escolhida para pagamento, pag0 -> carnê, pag1 -> boleto, pag2 -> CC
  44. '''
  45. pag = objXML.getElementsByTagName("pag")(0).text
  46.  
  47. '''
  48. ' Capturar dados dos itens
  49. '''
  50. itens = objXML.getElementsByTagName("produto")
  51.  
  52. produtos = new Collection
  53. For Each item in itens
  54. produtos.Add(item.text)
  55. Next
  56. %>

  1. <%@ Page Title="Home Page" Language="C#" AutoEventWireup="true"
  2. CodeFile="callback.aspx.cs" Inherits="_Callback" ValidateRequest="false" %>
  1. using System;
  2. using System.Collections;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. using System.Xml;
  8. using System.Text;
  9.  
  10.  
  11. public partial class _Callback : System.Web.UI.Page
  12. {
  13. private string pagamento = "pagamento";
  14. private string cancelamento = "cancelamento";
  15. private string visualizado = "visualizado";
  16. /**
  17. * recebeCallback string: string
  18. *
  19. * Recebe o Xml em formato de string
  20. * verifica o tipo de callback
  21. * retorna o resultado do processamento do mesmo -> 200 = sucesso, 403 = falha
  22. *
  23. */
  24. public string recebeCallback(string xmlCallback)
  25. {
  26.  
  27. XmlDocument xml = new XmlDocument();
  28. /**
  29. * Transformando o Xml em Objeto
  30. */
  31. xml.LoadXml(xmlCallback);
  32.  
  33. /**
  34. * Selecionando o tipo de notificação
  35. */
  36. XmlNode xmlCancelado = xml.SelectSingleNode("/cancelamento");
  37. if (xmlCancelado == null)
  38. {
  39. XmlNode xmlVisualizado = xml.SelectSingleNode("/visualizado");
  40. if (xmlVisualizado == null)
  41. {
  42. XmlNode xmlPago = xml.SelectSingleNode("/pagamento");
  43. if (xmlPago == null)
  44. {
  45. return "403";
  46. }
  47. else
  48. {
  49. return processaCallback(xmlPago);
  50. }
  51.  
  52. }
  53. else
  54. {
  55. return processaCallback(xmlVisualizado);
  56. }
  57. }
  58. else
  59. {
  60. return processaCallback(xmlCancelado);
  61. }
  62. }
  63.  
  64. protected string processaCallback(XmlNode dadosCallback)
  65. {
  66. /**
  67. * Captura dos dados do cliente
  68. */
  69. string nome = dadosCallback.SelectSingleNode("cliente/cliente").InnerText;
  70.  
  71. /**
  72. * Captura dos dados da cobrança
  73. */
  74.  
  75. /**
  76. * Chave da cobrança
  77. */
  78. string chave = dadosCallback.SelectSingleNode("cobranca/chave").InnerText;
  79.  
  80. /**
  81. * Chave da cobrança
  82. */
  83. string retorno = dadosCallback.SelectSingleNode("cobranca/retorno").InnerText;
  84.  
  85. /**
  86. * Número do pedido
  87. */
  88. string numeroPedido = dadosCallback.SelectSingleNode("cobranca/documento").InnerText;
  89.  
  90. /**
  91. * Valor pago, caso essa informação não esteja disponível o valor será 0
  92. */
  93. string valorPago = dadosCallback.SelectSingleNode("cobranca/valorPago").InnerText;
  94.  
  95. /**
  96. * Opção escolhida para pagamento, pag0 -> carnê, pag1 -> boleto, pag2 -> CC
  97. */
  98. string pag = dadosCallback.SelectSingleNode("cobranca/pag").InnerText;
  99.  
  100. /**
  101. * Capturar dados dos itens
  102. */
  103. XmlNodeList itens = dadosCallback.SelectNodes("itens");
  104. ArrayList produtos = new ArrayList();
  105. string a = "";
  106. foreach (XmlNode item in itens)
  107. {
  108. produtos.Add(item.SelectSingleNode("item/produto").InnerText);
  109. }
  110.  
  111. return "200";
  112. }
  113.  
  114. protected void Page_Load(object sender, EventArgs e)
  115. {
  116. HttpContext context = Context;
  117. context.Response.Write(recebeCallback(context.Request.Form["xml"]));
  118. }
  119. }