Sem porta pública? Prefira WebSocket. Tem servidor HTTPS? Webhooks com HMAC e retries automáticos.
Configurar
1
1. Chave de API
Use uma chave
wp_live_... com as permissões necessárias para as operações que você cria via REST (ex.: payment-pix/create).2
2. Conectar ao gateway
Abra uma conexão WSS em
wss://ws.wovepay.com/v1 a partir do seu servidor (nunca no browser).3
3. Autenticar
Envie a API key na URL, no header do upgrade ou na primeira mensagem (veja Autenticação).
4
4. Inscrever-se
Use
subscribe com pattern (payment.*) ou paymentId específico.5
5. Processar eventos
Trate cada mensagem pelo
id (idempotência) e opcionalmente envie ack.Escopo por API key
Conexões autenticadas comwp_live_... recebem eventos das transações criadas pela mesma API key. Eventos de outra chave da mesma conta não são entregues nessa conexão.
Exceção importante (igual aos webhooks): transfer.internal.received é emitido para a conta destino. Só chega se a API key usada na conexão tiver criado operações relevantes ou se você estiver inscrito na conta correta com a chave que recebe transferências internas.
Teste
- Conecte com sua
wp_live_... - Inscreva-se em
payment.* - Crie um PIX com POST /payment-pix/create usando a mesma API key
- Você deve receber
payment.createde, após pagar,payment.paid
Endpoint
Protocolo
Toda mensagem do cliente é um JSON com campoaction. Toda mensagem do servidor usa o campo event.
Mensagens do cliente
Mensagens do servidor
Autenticação
Escolha uma das três formas:
Resposta de sucesso:
1008.
Chaves com restrição de IP na API key só autenticam se o IP de origem estiver na allowlist configurada na chave.
Ao revogar a API key, todas as conexões abertas com ela são encerradas imediatamente.
Subscribe
Por pattern (wildcards)
Regras:
- Pattern válido: letras minúsculas, números,
_,.,*— até 64 caracteres - Máximo 100 inscrições por conexão (patterns +
paymentIdsomados) - Re-subscribe no mesmo pattern é idempotente
Por pagamento específico
id retornado em POST /payment-pix/create ou GET /payment-pix/get.
Unsubscribe
Formato do evento
Cada evento de negócio segue o envelope abaixo. O campodata é idêntico ao corpo JSON dos webhooks para o mesmo tipo de evento.
Tipos de data
Campos úteis em transações PIX
Para exemplos JSON completos de cada evento, consulte a seção Eventos do guia de webhooks — os payloads são os mesmos; apenas o transporte muda (WSS em vez de
POST HTTPS).
ACK (opcional)
Confirme que processou o evento:- Persista o
idantes de processar odata - Envie
ackapós enfileirar ou concluir o processamento - Duplicatas do mesmo
iddevem ser ignoradas no seu lado
Heartbeat
Sem resposta ao
ping do servidor dentro de 15s, a conexão é fechada. Implemente o handler de ping antes de ir para produção.
Reconexão
O gateway não mantém estado entre desconexões. Após queda de rede ou deploy:- Reconecte com backoff exponencial: 1s → 2s → 4s → 8s → 16s → 30s (máximo)
- Autentique novamente
- Re-inscreva nos patterns necessários
- Consulte a REST API para eventos perdidos durante a janela offline (
GET /payment-pix/get/:id, etc.)
Rate limits
Ao exceder limites de conexão ou auth, o servidor envia
{ "event": "error", "code": "RATE_LIMIT" } e pode fechar a conexão (1008).
Segurança
- Conexão criptografada — use somente
wss://em produção (nuncaws://) - Ownership —
subscribecompaymentIdvalida que a transação pertence à conta da API key - Revogação — API key revogada desconecta todas as sockets imediatamente
- Allowlist de IP — respeitada na autenticação, igual à REST API
- Ações permitidas — cliente só envia:
authenticate,subscribe,unsubscribe,ack,ping - Payload acima de 64 KB → close
1009
Checklist
- Conexão apenas no servidor (nunca browser)
- API key em variável de ambiente (
WovePay_API_KEY) - Handler de
pingimplementado - Idempotência pelo
idda entrega - Reconexão com backoff + re-subscribe
- REST API como fallback após downtime
- Patterns mínimos necessários (
payment.*em vez de*se possível)
Códigos de erro
Erros são enviados como:Códigos de close WebSocket
Eventos
O catálogo é o mesmo dos webhooks. Inscreva-se com patterns (payment.*) ou eventos exatos via * (todos).
Catálogo (ativos)
Eventos de cripto e boleto existem no código mas não estão ativos na API pública no momento.
PIX recebido
Disparados por POST /payment-pix/create.data.type = PIX_IN.
Exemplo
payment.created:
Estorno PIX
Disparados após POST /refunds/create. Odata é o depósito original com bloco refund.
Exemplos completos: Estorno PIX (webhooks).
PIX enviado
Disparados por POST /transfer-pix/create.data.type = PIX_OUT.
Exemplos completos: PIX enviado (webhooks).
Transferência interna
Disparados por POST /transfer-internal/create.
Exemplos completos: Transferência interna (webhooks).
MED
Disputas no trilho PADRAO.data segue GET /meds/get.
Exemplos completos: MED (webhooks).
Links de pagamento
Para links pagos via PIX,
payment.paid também pode ser emitido. Para checkout de link, inscreva-se em payment_link.paid ou payment.*.
Exemplo completo: Links de pagamento (webhooks).
Nota fiscal
Emitidos quando a cobrança usa emissão automática. O WebSocket traz apenasinvoiceId no data.
Fluxos comuns
Exemplo completo (Node.js)
Cliente de produção com auth, subscribe, heartbeat, ACK e reconexão:npm install ws
Exemplo completo (Python)
pip install websockets
WebSocket vs Webhook vs Polling
Quando usar cada um
Veja também: Tutorial prático · Webhooks · Criar cobrança PIX