Webhooks
Los webhooks son una parte esencial del proceso de integración. Permiten que tu aplicación reciba notificaciones automáticas cuando se ejecutan acciones dentro de Amplify.
De esta forma, tu sistema puede reaccionar en tiempo real ante eventos como la creación de una intención de pago o la confirmación de un pago.
Configuración
Para configurar tus webhooks necesitás tener una cuenta en Amplify.
Una vez dentro de tu perfil, podés definir la URL donde querés recibir las notificaciones desde el panel de administración:
https://getamplify.app/plataforma/webhooks
Allí deberás indicar la URL pública de tu backend que recibirá los eventos.
Integración
Amplify enviará la información mediante un HTTP POST a la URL que hayas configurado.
Tu servidor debe:
- Exponer un endpoint accesible públicamente.
- Aceptar requests
POST. - Procesar el
bodyenviado por Amplify.
Ejemplo básico con Node.js y Express
Definición de ruta
// routes.js
app.post("/api/amplify/webhook", (req, res) => {
AmplifyController.webhook(req, res);
});
Controlador
// AmplifyController.js
function webhook(req, res) {
const { body } = req;
const { topic, transaction } = body;
console.log("TOPIC", topic);
console.log("TRANSACTION", transaction);
res.status(200).send("ok");
}
Es importante responder con un HTTP 200 para confirmar la correcta recepción del webhook.
Tipos de Webhooks
Actualmente existen dos tipos de eventos:
PAYMENT_INTENT_CREATEDPAYMENT_CREATED
PAYMENT_INTENT_CREATED
Se ejecuta cuando un usuario crea una intención de pago.
Esto significa que el SDK se renderizó correctamente dentro de tu integración.
Ejemplo
{
"topic": "PAYMENT_INTENT_CREATED",
"transaction": {
"paymentIntentId": "123...abc",
"receiverId": "123...abc",
"status": "CREATED",
"metadata": {
"randomKey": "randomValue"
}
}
}
Campos relevantes
paymentIntentId: Identificador de la intención de pago.receiverId: Identificador del cliente.status: Estado actual de la intención.metadata: Información adicional enviada al crear la intención.
PAYMENT_CREATED
Se ejecuta cuando un pago fue procesado correctamente.
Este webhook contiene toda la información necesaria para actualizar tu sistema (orden, suscripción, acceso, etc.).
Ejemplo
{
"topic": "PAYMENT_CREATED",
"transaction": {
"paymentId": "123...abc",
"receiverId": "123...abc",
"amount": "1.0",
"token": "USDC",
"chain": "mumbai",
"metadata": {
"randomKey": "randomValue"
},
"symbol": "USDC"
}
}
Campos relevantes
paymentId: Identificador único del pago.receiverId: Identificador del cliente.amount: Monto pagado.token: Token utilizado.chain: Red blockchain utilizada.symbol: Símbolo del token.metadata: Información adicional enviada en la intención de pago.
Buenas prácticas
- Validar que el
topicsea uno esperado antes de procesar la información. - Confirmar que el
receiverIdcorresponda a un cliente válido en tu sistema. - Evitar lógica pesada directamente en el endpoint (usar colas o procesamiento asíncrono si es necesario).
- Registrar logs para auditoría y debugging.