Webhooks
Overview
Lorsque des événements se produisent sur nos systèmes, vous serez notifiés sur vos urls ipn.
Security
Il est nécessaire de vérifier que les événements proviennent bien de ALAL afin d’éviter de créer des transactions dues à un événement frauduleux.
Pour vérifier les événements, validez l’en-tête x-alal-signature envoyé avec l’événement. La signature HMAC SHA512 est la charge utile payload
de l’événement signée avec votre clé secrète ALAL_API_KEY
.
const crypto = require('crypto');
const webhookSecret = process.env.ALAL_API_KEY;
// Using Express
app.post("/webhook_url", function(req, res) {
//validate event
const hash = crypto.createHmac('sha512', webhookSecret).update(JSON.stringify(req.body)).digest('hex');
if (hash == req.headers['x-alal-signature']) {
// Retrieve the request's body
const event = req.body;
// Do something with event
}
res.send(200);
});
Card Users Events
CardUser Verification Successful
{
"event": "card_user_verification.successful",
"data": {
"reference": "88c2f29c-2fba-40f1-a303-b33008e42fe9",
"first_name": "Testeur",
"last_name": "glock",
"address": "Pikine Texaco 11",
"id_no": "17521999133211635",
"phone": "221776854872",
"email": "testingboy@gmail.com",
"status": "passed"
}
}
CardUser Verification Failed
{
"event": "card_user_verification.failed",
"data": {
"reference": "88c2f29c-2fba-40f1-a303-b33008e42fe9",
"first_name": "Testeur",
"last_name": "glock",
"address": "Pikine Texaco 11",
"id_no": "17521999133211635",
"phone": "221776854872",
"email": "testingboy@gmail.com",
"status": "failed"
}
}
Cards Events
Card Creation Successful
{
"event": "card_creation.successful",
"data": {
"reference": "9c54515e-7890-44f9-8cc2-a85b80322b98",
"card_number": "4634716555196705",
"card_brand": "Visa",
"card_type": "virtual",
"cvv2": "363",
"expiry": "2027-06",
"balance": "0",
"status": "issued"
}
}
Card Creation Failed
{
"event": "card_creation.failed",
"data": {
"reference": "9c54515e-7890-44f9-8cc2-a85b80322b98",
"card_number": "4634716555196705",
"card_brand": "Visa",
"card_type": "virtual",
"cvv2": "363",
"expiry": "2027-06",
"balance": "0",
"status": "unissued"
}
}
Transaction Events
Recharge Successful
{
"event": "card_recharge.successful",
"data": {
"reference": "b60f55b1-922a-406a-8417-g54atb0849ttb22c",
"card_reference": "9c54515e-7890-44f9-8cc2-a85b80322b98",
"status": "success",
"kind": "recharge",
"merchant": "",
"amount": 2000,
"created_at": "2023-06-22T10:40:17.000000Z"
}
}
Recharge Failed
{
"event": "card_recharge.failed",
"data": {
"reference": "b60f55b1-922a-406a-8417-g54atb0849ttb22c",
"card_reference": "9c54515e-7890-44f9-8cc2-a85b80322b98",
"status": "failed",
"kind": "recharge",
"merchant": "",
"amount": 2000,
"created_at": "2023-06-22T10:40:17.000000Z"
}
}
Withdraw Successful
{
"event": "card_withdraw.successful",
"data": {
"reference": "b60f55b1-922a-406a-8417-g54atb0849ttb22c",
"card_reference": "9c54515e-7890-44f9-8cc2-a85b80322b98",
"status": "success",
"kind": "withdraw",
"merchant": "Netflix SA",
"amount": 2000,
"created_at": "2023-06-22T10:40:17.000000Z"
}
}
Withdraw Failed
{
"event": "card_withdraw.failed",
"data": {
"reference": "b60f55b1-922a-406a-8417-g54atb0849ttb22c",
"card_reference": "9c54515e-7890-44f9-8cc2-a85b80322b98",
"status": "failed",
"kind": "withdraw",
"merchant": "Netflix SA",
"amount": 2000,
"created_at": "2023-06-22T10:40:17.000000Z"
}
}
Reverse Successful
{
"event": "card_reverse.successful",
"data": {
"reference": "b60f55b1-922a-406a-8417-g54atb0849ttb22c",
"card_reference": "9c54515e-7890-44f9-8cc2-a85b80322b98",
"status": "success",
"kind": "reversed",
"merchant": "Netflix SA",
"amount": 2000,
"created_at": "2023-06-22T10:40:17.000000Z"
}
}
Card Sale Successful
{
"event": "card_sale.successful",
"data": {
"reference": "222d9c54-1aa4-4a14-a099-7d6e4d80063f",
"card_reference": "a7517090-79b9-4af5-8c56-861ae221ae8c",
"status": "success",
"kind": "card-sale",
"merchant": "Alal",
"amount": 4000,
"created_at": "2023-10-10T13:29:45.000000Z"
}
}