Lewati ke konten

Verifikasi signature

Jika webhook punya HMAC key, setiap request membawa header:

X-Kirimwa-Signature: sha256=<hex>

<hex> adalah HMAC-SHA256 dari body mentah request dengan HMAC key sebagai kuncinya. Hitung ulang di server Anda, lalu bandingkan.

import express from 'express';
import { createHmac, timingSafeEqual } from 'node:crypto';
const app = express();
app.post('/webhook/nusawap', express.raw({ type: 'application/json' }), (req, res) => {
const expected = 'sha256=' +
createHmac('sha256', process.env.NUSAWAP_HMAC_KEY).update(req.body).digest('hex');
const given = req.get('X-Kirimwa-Signature') ?? '';
const ok = given.length === expected.length &&
timingSafeEqual(Buffer.from(given), Buffer.from(expected));
if (!ok) return res.sendStatus(401);
const event = JSON.parse(req.body);
res.sendStatus(200);
// proses event di sini…
});