Webhook ສຳຫຼັບອັບເດດສະຖານະບິນ
ສິງທີຕ້ອງມີ
URL ສຳຫຼັບຮັບ Callback Webhook (ສາມາດແຈ້ງກັບ support ເພື່ອປຽນ URL ໄດ້)
signature_key ເພື່ອຍືນຍັນຍືນຍັນຄວາມຖືກຕ້ອງ (ໄດ້ຈາກເອກະສານ)
function ສຳຫຼັບ generate signature
js
const crypto = require("crypto");
// Function to generate hash signature
function generateSignature(data, secretKey) {
let text = "";
if (typeof data === "object") {
if (!data.id) {
throw new Error("Data must contain an 'id' field");
}
if (!data.code) {
throw new Error("Data must contain a 'code' field");
}
if (!data.total) {
throw new Error("Data must contain a 'total' field");
}
if (!data.status) {
throw new Error("Data must contain a 'status' field");
}
text = `${data.id}${data.code}${data.total}${data.status}`;
} else {
throw new Error("Data must be an object");
}
const signature = crypto
.createHmac("sha256", secretKey)
.update(text)
.digest("hex");
return signature;
}ຕົວຢາງການຍືນຍັນວ່າ webhook ຖືກສົ່ງຢ່າງຖືກຕ້ອງ
js
app.post("/webhook", (req, res) => {
const this_signature = generateSignature(req.body, "{{ your_signature_key }}");
if ( !req.headers["x-signature"] || req.headers["x-signature"] !== this_signature ) {
console.error("❌ Invalid signature in webhook request");
} else {
console.log("✅ Valid signature in webhook request");
}
res.status(200).json({
timestamp: new Date().toISOString(),
received_data: req.body,
});
});