Configure uma URL de callback no painel da AjnaPay para receber notificações HTTP POST sobre eventos importantes. Seu servidor deve responder com status 200 para confirmar o recebimento.
Acesse o painel da AjnaPay e configure a URL de webhook:
| Evento | Descrição | Payload Principal |
|---|---|---|
payment.received |
Pagamento PIX recebido | deposit_id, amount, status |
payment.sent |
Pagamento PIX enviado | request_payment_id, amount, status |
subscription.created |
Nova assinatura criada | subscription_id, amount, frequency |
subscription.charged |
Cobrança recorrente realizada | subscription_id, charge_id, amount |
subscription.failed |
Cobrança recorrente falhou | subscription_id, error_message |
split.processed |
Split distribuído | deposit_id, account_id, amount |
balance.updated |
Saldo atualizado | account_id, balance, currency |
Todos os webhooks seguem o mesmo formato:
{
"event": "payment.received",
"timestamp": "2026-07-21T10:30:00Z",
"data": {
"id": "uuid-do-evento",
"type": "deposit",
"status": "completed",
"amount": "150.00",
"currency": "BRL",
"account_id": "uuid-da-conta",
"metadata": {
"description": "Pagamento de serviço"
}
}
}
// routes/web.php
Route::post('/webhooks/ajnapay', function (Request $request) {
$event = $request->input('event');
$data = $request->input('data');
// Processar o evento
match($event) {
'payment.received' => handlePaymentReceived($data),
'subscription.charged' => handleSubscriptionCharged($data),
'balance.updated' => handleBalanceUpdated($data),
default => Log::info('Evento desconhecido: ' . $event),
};
// Retornar 200 para confirmar recebimento
return response()->json(['status' => 'ok'], 200);
});
app.post('/webhooks/ajnapay', (req, res) => {
const { event, data } = req.body;
switch(event) {
case 'payment.received':
handlePaymentReceived(data);
break;
case 'subscription.charged':
handleSubscriptionCharged(data);
break;
case 'balance.updated':
handleBalanceUpdated(data);
break;
}
res.status(200).json({ status: 'ok' });
});
Use ferramentas como webhook.site ou ngrok para testar webhooks em desenvolvimento.