URLs de callback
Callback do ControlPay para uma URL usuário após transações e impressões.
Antes de usar as APIs...Certifique-se de ter verificado as secções de APIs e Chave de Integração, além de ter lido as nossas Informações preliminares.
Callback
Esta funcionalidade, também conhecido como Webhook, permite que o sistema ou aplicação que gerou uma transação no ControlPay receba uma notificação assim que ela for finalizada, independentemente do resultado: autorizada, negada ou cancelada, o sistema receberá uma notificação de callback.
As informações presentes no callback permitem identificar a transação. Após acatar notificação, o sistema deverá consultar a transação no ControlPay através das APIs listadas na seção "Transacional".
ObservaçãoO ControlPay concatena a URL cadastrada com o conteúdo necessário para o envio, adicionando o caractere '?' para identificar o início da API. Porém, caso seja cadastrada a URL com o caractere '?', o ControlPay o identificará e concatenará a partir do caractere '&'.
Exemplo:
seusite.com.br/seuservico?cpfCnpj=01234567890&intencaoVendaId=1234&intencaoVendaReferencia=abcd&pedidoId=9876&pedidoReferencia=xyz
Resposta ao callback pela URL cadastrada
Quando o callback for realizado, o ControlPay analisa o código de status enviado pelo sistema cadastrado. Caso o sistema retorne um status code diferente do range de 200 (ex: 200, 201, etc.), o ControlPay irá realizar nova tentativa do callback após 2 minutos. Se na próxima tentativa também retornar status code diferente do range 200, a próxima retentativa ocorrerá após 4 minutos, e assim consecutivamente depois de 8, 16 e 32 minutos.
Obs.: O sistema deve retornar status code com range 200 apenas para callback recebido com sucesso. Se o status code com range de 200 for retornado, não será mais enviado callback.
Tipos de callback
| ID | Nome | Significado |
|---|---|---|
| 1 | UrlRetorno | URL de callback para vendas |
| 2 | UrlConsulta | URL de callback para consultas de vendas |
| 3 | UrlRetornoImpressao | URL de callback para impressões |
Gerenciamento de URL de callback
As Automações Comerciais podem gerenciar as URLs de callback, através dos endpoints abaixo.
Importante!O gerenciamento é feito com base na chave de integração usada. Ou seja: o usuário da chave de integração só pode criar callbacks para si mesmo.
POST Callback/Insert
Esta API é usada para a criação de callbacks. A URL de callback será criada para o usuário dono da chave de integração utilizada na chamada da API. Ou seja: esta será a URL de callback para todos os terminais daquele CPF/CNPJ.
Atenção!Esta API realiza apenas a inserção de uma URLs de callback. Para modificação de uma já existente, utilize a API de Update.
{{Url}}/Callback/Insert/?key={{Key}}Variáveis:
{{Url}}/Callback/Insert/?key={{Key}}V: endereço do ambiente atual. "}}>Url: endereço do ambiente a: chave de acesso.
{
“callbackTipo”: 1,
“urlCallback”: “https://suaUrlDeCallback.com.br/”
}• callbackTipo: [int] tipo do callback desejado (venda, consulta, impressão);
• urlCallback: [string] URL de callback a ser cadastrada. Este valor pode ter até 500 caracteres;
Exemplo: Callback/Insert
{
“callbackTipo”: 1,
“urlCallback”: “https://suaUrlDeCallback.com.br/”
}{
"data": "27/02/2026 11:50:15.7139",
"callback": {
"callbackTipo": {
"id": 1,
"nome": "UrlRetorno"
},
"urlCallback": "https://suaUrlDeCallback.com.br/",
"pessoa": {
"id": 1234,
"nome": "NomeDaPessoa",
"sobrenomeNomeFantasia": "Loja da Esquina"
}
}
}GET Callback/GetRegistered
Esta API é usada para recuperar a URL de callback cadastrada anteriormente.
Atenção!Esta API realiza a leitura das URLs de callback previamente criadas. Para a criação de uma nova URL, utilize a API de Insert.
{{Url}}/Callback/GetRegistered/?key={{Key}}&callbackTipo=1Variáveis:
{{Url}}/Callback/GetRegistered/?key={{Key}}&callbackTipo=1V: endereço do ambiente atual. "}}>Url: endereço do ambiente a: chave de acesso.
ObservaçãoEsta API é apenas um GET, sem body.
Ela é uma API sem body que irá pesquisar a URL relacionada à chave de integração da requisição.
Além disso, ela tem um "param" callbackTipo relacionado aos tipos de callback. Como o callback mais comum é o de venda, aqui usamos o tipo "1".
Exemplo: Callback/GetRegistered
{
"data": "27/02/2026 11:59:20.5408",
"callback": {
"callbackTipo": {
"id": 1,
"nome": "UrlRetorno"
},
"urlCallback": "https://suaUrlDeCallback.com.br/",
"pessoa": {
"id": 1234,
"nome": "NomeDaPessoa",
"sobrenomeNomeFantasia": "Loja da Esquina"
}
}
}POST Callback/Update
Esta API é usada para modificar uma URL previamente cadastrada.
Atenção!Esta API realiza apenas modificação de URLs de callback previamente criadas. Para a criação de uma nova URL, utilize a API de Insert.
{{Url}}/Callback/Update/?key={{Key}}Variáveis:
{{Url}}/Callback/Update/?key={{Key}}V: endereço do ambiente atual. "}}>Url: endereço do ambiente a: chave de acesso.
{
“callbackTipo”: 1,
“urlCallback”: “https://suaUrlDeCallback.com.br/”
}• callbackTipo: [int] tipo do callback desejado (venda, consulta, impressão);
• urlCallback: [string] URL de callback a ser modificada. Este valor pode ter até 500 caracteres;
Exemplo: Callback/Update
{
“callbackTipo”: 1,
“urlCallback”: “https://suaUrlDeCallbackNova.com.br/”
}{
"data": "27/02/2026 12:00:17.1285",
"callback": {
"callbackTipo": {
"id": 1,
"nome": "UrlRetorno"
},
"urlCallback": "https://suaUrlDeCallbackNova.com.br/",
"pessoa": {
"id": 1234,
"nome": "NomeDaPessoa",
"sobrenomeNomeFantasia": "Loja da Esquina"
}
}
}DELETE Callback/Delete
Esta API é usada para deletar callbacks previamente cadastradas.
{{Url}}/Callback/Delete/?key={{Key}}Variáveis:
{{Url}}/Callback/Delete/?key={{Key}}V: endereço do ambiente atual. "}}>Url: endereço do ambiente a: chave de acesso.
{
“callbackTipo”: 1
}• callbackTipo: [int] tipo do callback desejado (venda, consulta, impressão);
Atenção!Caso não seja enviado um body para essa requisição, o ControlPay assumirá como uma requisição para o tipo UrlRetorno.
Exemplo: Callback/Delete
{
“callbackTipo”: 1
}{
"data": "27/02/2026 12:00:37.4872",
"callback": {
"callbackTipo": {
"id": 1,
"nome": "UrlRetorno"
},
"urlCallback": "https://www.postb.in/1770215647337-6262078641446",
"pessoa": {
"id": 1234,
"nome": "NomeDaPessoa",
"sobrenomeNomeFantasia": "Loja da Esquina"
}
}
}O ControlPay retornará as informações da chave que foi deletada, apenas para conferência.
O callback em funcionamento
Após o cadastro do callback, quando houver uma venda, ele funcionará de acordo com o comportamento abaixo, sendo enviado pelo ControlPay no endereço descrito (preenchido com as informações correspondentes).
POST Callback - Intenção de venda
seusite.com.br/seuservico?cpfCnpj={{CpfCnpj}}&intencaoVendaId={{ControlPayId}}&intencaoVendaReferencia={{SeuId}}&pedidoId={{ControlPayPedidoId}}&pedidoReferencia={{SeuPedidoId}}Variáveis:
CpfCnpj: CPF/CNPJ. ControlPayId: ID ControlPay da intenção de venda. SeuId: Sua referência da intenção de venda. ControlPayPedidoId: ID ControlPay do pedido. SeuPedidoId: Sua referência do pedido.
Callback para a intenção de venda. Se não houve registro de pedido, o pedidoId e o pedidoReferencia estarão em branco.
| HEADERS | |
|---|---|
| Content-Type | application/json |
| User-Agent | NomeDaAutomacao/1.0 |
| PARAMS | |
|---|---|
| cpfCnpj | {CpfCnpj} |
| intencaoVendaId | {ControlPayId} |
| intencaoVendaReferencia | {SeuId} |
| pedidoId | {ControlPayPedidoId} |
| pedidoReferencia | {SeuPedidoId} |
Exemplo: Callback de venda
curl --location --request POST 'seusite.com.br/seuservico?cpfCnpj={{CpfCnpj}}&intencaoVendaId={{ControlPayId}}&intencaoVendaReferencia={{SeuId}}&pedidoId={{ControlPayPedidoId}}&pedidoReferencia={{SeuPedidoId}}' \
--header 'Content-Type: application/json' \
--header 'User-Agent: NomeDaAutomacao/1.0' \
--data-raw ''POST Callback - Intenção impressão
seusite.com.br/seuservico?intencaoImpressaoId={{ControlPayId}}&intencaoImpressaoReferencia={{SeuId}}&intencaoImpressaoStatus={{Status}}Variáveis:
ControlPayId: ID ControlPay da intenção de impressão. SeuId: Seu ID da intenção de impressão. Status: Status (ID) da impressão.
Os status retornáveis são:
| Status | Valor |
|---|---|
| ImpressaoEnviada | 5 |
| Imprimindo | 10 |
| Impresso | 15 |
| Expirado | 20 |
| ErroImpressao | 25 |
| PARAMS | |
|---|---|
| intencaoImpressaoId | {ControlPayId} |
| intencaoImpressaoReferencia | {SeuId} |
| intencaoImpressaoStatus | {Status} |
Exemplo: Callback de impressão
curl --location --request POST 'seusite.com.br/seuservico?intencaoImpressaoId={{ControlPayId}}&intencaoImpressaoReferencia={{SeuId}}&intencaoImpressaoStatus={{Status}}'Updated about 23 hours ago
