The SDK ships helpers for verifying webhook signatures and parsing event payloads. For the full list of webhook events and payload shapes, see the Webhooks reference.
Setup
Pass your webhook public key when initializing the SDK:
const afriex = new AfriexSDK({
apiKey: "your-api-key",
webhookPublicKey: "your-afriex-public-key",
});
Verify and Parse
Validate the signature and parse the payload in one call:
app.post("/webhook", (req, res) => {
const signature = req.headers["x-webhook-signature"];
const payload = req.body; // Raw string body
try {
const event = afriex.webhooks.verifyAndParse(payload, signature);
switch (event.event) {
case "CUSTOMER.CREATED":
case "CUSTOMER.UPDATED":
case "CUSTOMER.DELETED":
console.log("Customer event:", event.data);
break;
case "TRANSACTION.CREATED":
case "TRANSACTION.UPDATED":
console.log("Transaction event:", event.data);
break;
case "PAYMENT_METHOD.CREATED":
case "PAYMENT_METHOD.UPDATED":
case "PAYMENT_METHOD.DELETED":
console.log("Payment method event:", event.data);
break;
case "CHECKOUT_SESSION.CREATED":
console.log("Checkout session event:", event.data);
break;
}
res.status(200).send("OK");
} catch (error) {
console.error("Invalid signature");
res.status(400).send("Invalid signature");
}
});
Verify Only
Validate the signature without parsing:
const isValid = afriex.webhooks.verify(payload, signature);
if (isValid) {
const event = JSON.parse(payload);
// Handle event
}
Trigger Test Webhook (Sandbox)
Send a test webhook to your endpoint in sandbox:
const result = await afriex.webhooks.triggerTestWebhook({
event: "TRANSACTION.UPDATED",
resourceId: "transaction-id",
});
console.log(result); // { success: true, message: "..." }
For CHECKOUT_SESSION.CREATED, use the checkout session UUID as resourceId.
Test webhook triggers only work in the sandbox environment.