Webhooks e Postbacks
O NextPay Gateway oferece duas formas de receber notificações sobre mudanças de status das transações:- Webhook Permanente: Configurado no painel do usuário, recebe notificações de todas as transações
- Postback por Transação: URL específica configurada no campo
postbackUrlao criar uma venda
Diferenças entre Webhook e Postback
Webhook Permanente
- Configurado no painel do usuário
- Recebe notificações de todas as transações
- Inclui campos adicionais:
fee,transactionId,type - Sem assinatura HMAC
Postback por Transação
- Configurado no campo
postbackUrlda venda - Recebe notificação apenas da transação específica
- Inclui
externalTransactionId - Com assinatura HMAC no header
X-Signature
Webhook Permanente
Webhooks permanentes são configurados no painel do usuário e recebem notificações de todas as transações do usuário.Configuração
Configure seu webhook permanente no painel administrativo do NextPay Gateway. O webhook será chamado sempre que uma transação mudar de status.Formato da Notificação
O webhook permanente envia um payload com os seguintes campos:Campos do Webhook Permanente
ID da transação (Sale ID)
ID do usuário (vendedor)
Valor da transação em centavos (formato string)
Data de criação da transação (ISO 8601)
Status atual da transação. Valores possíveis:
PENDENTE, EM_PROCESSAMENTO, PAGO, CANCELADO, RECUSADO, ESTORNADO, FALHA, CHARGEBACK, MEDMétodo de pagamento. Valores possíveis:
PIX, CREDIT_CARD, DEBIT_CARD, BOLETODocumento do cliente (CPF ou CNPJ)
Email do cliente
Nome completo do cliente
Telefone do cliente (apenas dígitos)
Chave PIX gerada (apenas para pagamentos PIX)
Código do boleto (apenas para pagamentos via boleto)
Informações de entrega em formato JSON string (apenas para produtos físicos).
null para produtos digitais.Taxa cobrada na transação em centavos. Apenas no webhook permanente.
Lista de itens da transação
ID do item
ID da venda (mesmo que
id)Título do produto
Preço unitário em centavos (formato string)
Quantidade do item
Se o item é físico (
true) ou digital (false)ID da transação (mesmo que
id). Apenas no webhook permanente.Tipo da notificação. Sempre
"TRANSACTION" para webhooks de transações. Apenas no webhook permanente.Postback por Transação
Postbacks são URLs específicas configuradas no campopostbackUrl ao criar uma venda. Recebem notificações apenas daquela transação específica.
Configuração
Configure o postback incluindo o campopostbackUrl ao criar a transação:
Segurança
Postbacks incluem assinatura HMAC-SHA256 no headerX-Signature para validação de segurança. A assinatura é gerada usando a chave secreta POSTBACK_SECRET_KEY configurada no ambiente do NextPay Gateway.
Como funciona a assinatura:
- O NextPay Gateway gera uma assinatura HMAC-SHA256 do payload JSON usando a chave secreta
POSTBACK_SECRET_KEY - A assinatura é enviada no header HTTP
X-Signature - Você deve validar a assinatura comparando com a assinatura esperada gerada localmente
Sobre a chave secreta: A chave
POSTBACK_SECRET_KEY é configurada no ambiente do NextPay Gateway. Esta é a mesma chave que você deve usar para validar as assinaturas dos postbacks. Entre em contato com o suporte técnico para obter ou configurar sua chave secreta de postback.Nota importante: O JSON do payload é stringificado sem ordenação de chaves (JSON.stringify padrão). Não use sort_keys=True no Python ou qualquer ordenação de chaves, pois isso resultará em assinaturas diferentes e a validação falhará.Formato da Notificação
O postback por transação envia um payload com os seguintes campos:Campos do Postback por Transação
ID da transação (Sale ID)
ID do usuário (vendedor)
Valor da transação em centavos (formato string)
Data de criação da transação (ISO 8601)
Status atual da transação. Valores possíveis:
PENDENTE, EM_PROCESSAMENTO, PAGO, CANCELADO, RECUSADO, ESTORNADO, FALHA, CHARGEBACK, MEDMétodo de pagamento. Valores possíveis:
PIX, CREDIT_CARD, DEBIT_CARD, BOLETODocumento do cliente (CPF ou CNPJ)
Email do cliente
Nome completo do cliente
Telefone do cliente (apenas dígitos)
Chave PIX gerada (apenas para pagamentos PIX)
Código do boleto (apenas para pagamentos via boleto)
Informações de entrega em formato JSON string (apenas para produtos físicos).
null para produtos digitais.Lista de itens da transação
ID da transação no gateway de pagamento externo (adquirente). Apenas no postback por transação.
Comparação dos Formatos
| Campo | Webhook Permanente | Postback por Transação |
|---|---|---|
id | ✅ | ✅ |
userId | ✅ | ✅ |
amount | ✅ | ✅ |
date | ✅ | ✅ |
status | ✅ | ✅ |
paymentMethod | ✅ | ✅ |
customerDocument | ✅ | ✅ |
customerEmail | ✅ | ✅ |
customerName | ✅ | ✅ |
customerPhone | ✅ | ✅ |
pixKey | ✅ | ✅ |
boletoCode | ✅ | ✅ |
shipping | ✅ | ✅ |
saleItems | ✅ | ✅ |
fee | ✅ | ❌ |
transactionId | ✅ | ❌ |
type | ✅ ("TRANSACTION") | ❌ |
externalTransactionId | ❌ | ✅ |
| Assinatura HMAC | ❌ | ✅ (X-Signature header) |
Quando as Notificações São Enviadas
As notificações são enviadas quando a transação muda para um status final:PAGO- Pagamento confirmadoCANCELADO- Transação canceladaRECUSADO- Pagamento recusadoESTORNADO- Valor estornadoFALHA- Falha no processamentoCHARGEBACK- Chargeback identificado (cartão)MED- Mediação PIX iniciada
PENDENTE e EM_PROCESSAMENTO não geram notificações.
Exemplo de Implementação
Node.js/Express
Python/Flask
Boas Práticas
Dica: Para testar webhooks localmente, use ferramentas como ngrok ou localtunnel para expor seu servidor local.

