Introducción
Puedes crear Webhooks para le avisemos a tu servidor cuando pase algo, por ejemplo, un nuevo pedido.
En la pestaña Webhooks de la sección API de tu panel de administración puedes crear un Webhook.
Los datos enviados se enviarán en una llamada POST en un JSON payload con formato:
{
"data": {
"order": {
...
}
},
"date": "2020-01-06T15:36:50.145Z",
"type": "newOrder"
}
Seguridad
Al crear un Webhook debes entrar un clave, que le llamamos secreto. Todas las llamadas que hagamos a tu url van a ser firmadas con esta clave. Así puedes verificar que son datos reales enviados por Justo. La firma es un hash sha-1 del body (en antes de convertir el JSON a objeto) y viene en el header X-Orion-Signature
Para verificar la firma debes hacer lo siguiente:
import JSSHA from 'jssha'
const mySecret = '12345'
// para comprobar que la firma es correcta debemos generarla de nuevo y ver si coincide con la entregada en el request
const checkSignature = (body, passedSignature) => {
const shaObj = new JSSHA('SHA-1', 'TEXT')
// usamos la clave que le ingresamos al webhook
shaObj.setHMACKey(mySecret, 'TEXT')
// generamos el hash del body
shaObj.update(body)
const signature = shaObj.getHMAC('HEX')
// si son iguales significa que esta verificado
return passedSignature === calculatedSignature
}
checkSignature(request.body, headers['x-orion-signature'])
No es necesario realizar una verificación de firma, pero es muy recomendado