Payload completo de cada evento da Flare Payments
{ "event": "charge.paid", "data": { "id": "ch_flare_dc7dc11b7f984d2886d2b429", "object": "charge", "amount": 10.00, "amount_cents": 1000, "status": "paid", "description": "Pedido #1234", "customer": { "name": "João Silva", "email": "joao@email.com" }, "paid_at": "2026-03-05T18:16:22.000Z", "created_at": "2026-03-05T18:14:48.552Z" } }
{ "event": "charge.expired", "data": { "id": "ch_flare_dc7dc11b7f984d2886d2b429", "object": "charge", "amount": 10.00, "status": "expired", "expires_at": "2026-03-05T19:14:48.549Z" } }
{ "event": "charge.failed", "data": { "id": "ch_flare_dc7dc11b7f984d2886d2b429", "object": "charge", "amount": 10.00, "status": "failed" } }
{ "event": "transfer.completed", "data": { "id": "wd_flare_a1b2c3d4e5f6a7b8c9d0e1f2", "object": "withdrawal", "amount": 100.00, "fee": 1.90, "net_amount": 98.10, "status": "paid" } }
{ "event": "transfer.failed", "data": { "id": "wd_flare_a1b2c3d4e5f6a7b8c9d0e1f2", "object": "withdrawal", "amount": 100.00, "status": "failed", "error": "Chave PIX inválida" } }
app.post('/webhooks/flare', express.json(), (req, res) => { res.json({ received: true }); const { event, data } = req.body; switch (event) { case 'charge.paid': // Liberar produto/serviço liberarPedido(data.id, data.amount); break; case 'charge.expired': // Notificar cliente, cancelar reserva cancelarPedido(data.id); break; case 'charge.failed': // Log e notificação interna logFalha(data.id); break; case 'transfer.completed': // Confirmar saque no dashboard interno confirmarSaque(data.id, data.net_amount); break; case 'transfer.failed': // Notificar equipe financeira notificarFalhaSaque(data.id, data.error); break; default: console.log(`Evento desconhecido: ${event}`); } });