Skip to content

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,
  });
});