const crypto = require("crypto");
const createPayloadChecksum = (checksumKey, payload) => {
const sortedPayload = Object.keys(payload)
.sort()
.reduce((obj, key) => {
obj[key] = payload[key];
return obj;
}, {});
const payloadString = Object.values(sortedPayload).join("");
const hmac = crypto.createHmac("sha256", checksumKey);
hmac.update(payloadString);
return hmac.digest("hex");
};
const validateChecksum = (checksumKey, payload, receivedChecksum) => {
const computedChecksum = createPayloadChecksum(checksumKey, payload);
return computedChecksum === receivedChecksum;
};
// Example usage:
const payload = { amount: 100, currency: "USD", reference: "TX123" };
const checksumKey = "secret-key";
const receivedChecksum = "some-checksum-from-request"; // Replace with actual received checksum
console.log(validateChecksum(checksumKey, payload, receivedChecksum) ? "Valid" : "Invalid");