Skip to main content
Os webhooks da API Quantum Pay permitem que sua aplicação receba notificações automáticas quando eventos importantes acontecem em sua conta, como pagamentos recebidos, transferências concluídas e mudanças de status.

Como funcionam

Os webhooks são enviados automaticamente via POST para as URLs que você configurar sempre que eventos relevantes ocorrem em sua conta. Isso elimina a necessidade de fazer polling constante na API.

Vantagens

Tempo real

Receba notificações instantâneas sobre mudanças importantes

Confiabilidade

Sistema de retry automático para garantir entrega

Segurança

Verificação de assinatura HMAC-SHA256 para autenticidade

Flexibilidade

Configure diferentes endpoints para diferentes tipos de evento

Eventos disponíveis

Eventos de transação (PIX IN)

Eventos de transferência (PIX OUT)

Estrutura de payloads

Webhook de Transação (PIX IN)

Webhook de Transferência (PIX OUT)

Verificação de assinatura

IMPORTANTE: Sempre verifique a assinatura dos webhooks para garantir autenticidade e segurança.
Toda notificação que enviamos para o seu endpoint é assinada. Fazemos isso incluindo um header com o nome Quantum-Pay-Signature em cada evento que enviamos. Isso permite verificar e garantir que o evento foi enviado pelo Quantum Pay e não por um terceiro.

Formato do Header Quantum-Pay-Signature

O header Quantum-Pay-Signature contém um timestamp e uma ou mais assinaturas. O timestamp é prefixado por t= e cada assinatura é prefixada por um schema. Schemas começam com v seguido de um integer. Atualmente existe apenas um schema de assinatura que é o v1. Exemplo do Header Quantum-Pay-Signature:
As assinaturas são geradas usando HMAC com SHA-256. Para prevenir ataques de reversão de versão (downgrade attacks), você deve ignorar todos os schemas que não são v1.

Como Validar a Assinatura

Passo 1: Extrair o timestamp e assinatura do Header

Faça um split no header usando o caractere , como separador para pegar a lista de elementos. Feito isso, faça outro split usando o caractere = como separador, para pegar o prefixo e o valor. O valor obtido no prefixo t corresponde ao timestamp e o v1 corresponde à assinatura. Você pode descartar outros valores.

Passo 2: Preparar a string para comparar as assinaturas

Você deve concatenar essas informações:
  1. O timestamp (como string)
  2. O caractere .
  3. O payload JSON raw (corpo da requisição, em formato de string)
Computar o HMAC com a função hash SHA256. Use o signatureSecret recebido na hora da criação do webhook e use a string signed_payload como mensagem.

Passo 3: Comparar as assinaturas

Compare a assinatura enviada pelo Quantum Pay no header com a assinatura que você gerou no Passo 2.

Exemplo Completo em Node.js

Exemplo Completo em Python

Exemplo Completo em PHP

⚠️ Importante sobre o Payload

CRÍTICO: O payload JSON deve ser mantido exatamente como foi recebido, sem qualquer conversão ou formatação. Qualquer alteração, como transformá-lo em um objeto e depois reconvertê-lo em string (por exemplo, usando JSON.stringify), pode resultar em diferenças que invalidariam a assinatura calculada.

Exemplo de Extração de Valores

Validação de Timestamp (Opcional)

Certificados mTLS para webhooks

IMPORTANTE: Por norma de segurança, é necessário configurar certificados mTLS (autenticação mútua) em seu servidor para receber webhooks do Quantum Pay.

Entendendo o padrão mTLS

Para garantir a segurança na comunicação, será necessário inserir a chave pública do Quantum Pay em seu servidor para que a comunicação obedeça o padrão mTLS. No domínio que representa seu servidor, você deverá configurar a exigência da chave pública (mTLS) que estamos disponibilizando, para que ocorra a autenticação mútua.

Como funciona a validação

O Quantum Pay fará 2 requisições para seu domínio (servidor):
  1. Primeira Requisição: Vamos certificar que seu servidor esteja exigindo uma chave pública do Quantum Pay. Para isso, enviaremos uma requisição sem certificado e seu servidor não deverá aceitar a requisição. Caso seu servidor responda com recusa, enviaremos a 2ª requisição.
  2. Segunda Requisição: Seu servidor, que deve conter a chave pública disponibilizada, deverá realizar o “Hand-Shake” para que a comunicação seja estabelecida.

Requisitos Técnicos

  • Versão mínima do TLS: 1.2
  • Resposta padrão: Configure uma rota ‘POST’ com uma resposta padrão como string “200”
  • Certificado: Inclua nosso certificado de produção ou homologação em seu servidor

Certificados Disponíveis

Certificado de produção

URL: http://api.quantumpay.com.br/caPara uso em ambiente de produção

Certificado de homologação

URL: http://api.quantumpay.com.br/caPara uso em ambiente de desenvolvimento/teste

Exemplo de Configuração do Servidor

Nginx

Apache

Instalação do Certificado

1. Baixar o Certificado

2. Instalar no Servidor

Servidores Dedicados

Recomendação: Use um servidor dedicado para configurar webhooks, pois é necessário acesso a arquivos de configuração do servidor para implementar mTLS corretamente.

Skip-mTLS (Hospedagem Compartilhada)

Para hospedagem em servidores compartilhados, onde pode haver restrições para inserir certificados de outras entidades, disponibilizamos a opção skip-mTLS.

Como funciona

  • Permite cadastro de webhook sem validação mTLS
  • Você fica responsável por validar nosso certificado
  • Sempre enviamos o certificado nos webhooks
  • Implementação de medidas de segurança adicionais é obrigatória

Medidas de Segurança Recomendadas

Restrinja a comunicação para aceitar apenas do IP da Quantum Pay:
Adicione um HMAC à URL para validação:
Exemplo de URL:
O termo ignorar= serve para tratar a adição automática de /pix no final da URL pelo sistema.

Validação de Certificados (Skip-mTLS)

Teste de Configuração

Implementação recomendada

1. Endpoint Webhook Robusto

2. Processamento por Tipo de Evento

Sistema de retry

Se seu endpoint não responder com status 200, implementamos um sistema de retry automático:
  • 1ª tentativa: Imediatamente
  • 2ª tentativa: Após 1 minuto
  • 3ª tentativa: Após 5 minutos
  • 4ª tentativa: Após 15 minutos
  • 5ª tentativa: Após 1 hora
Após 5 tentativas sem sucesso, o webhook é marcado como falhado e você pode visualizar no dashboard.

Monitoramento

Dashboard de Webhooks

No seu dashboard você pode:
  • Ver histórico de webhooks enviados
  • Verificar status de entrega
  • Reenviar webhooks falhados
  • Visualizar logs detalhados

Logs Úteis

Solução de problemas

Problemas Comuns

  • Verifique se a URL está acessível publicamente
  • Confirme se está respondendo com status 200
  • Teste com ferramentas como ngrok para desenvolvimento local
  • Verifique se não há firewall bloqueando
  • Confirme se está usando o signatureSecret correto
  • Verifique se o payload não foi modificado
  • Use o body raw da requisição para verificação
  • Certifique-se de usar UTF-8 encoding
  • Implemente processamento idempotente
  • Use o id do evento para deduplicação
  • Armazene IDs processados em cache/banco
  • Sempre responda 200 para eventos já processados

Suporte

Para configurar webhooks ou resolver problemas: Email: contato@quantumhubpay.com
WhatsApp: +55 62 9631-7464
Documentação: Gerenciar Webhooks
Dica: Use ferramentas como webhook.site para testar e debuggar seus webhooks durante o desenvolvimento.