neppayments
Version:
A simple and easy-to-use package for integrating Nepali payment gateways (Khalti and eSewa) into your applications
32 lines (31 loc) • 1.33 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateEsewaSignature = generateEsewaSignature;
exports.validateEsewaSignature = validateEsewaSignature;
const crypto_1 = __importDefault(require("crypto"));
/**
* Generates HMAC-SHA256 signature for eSewa request
* @param requestId Unique request identifier
* @param amount Payment amount
* @param clientSecret Base64 encoded client secret
*/
function generateEsewaSignature(requestId, amount, clientSecret) {
const data = `request_id=${requestId},amount=${amount}`;
const hmac = crypto_1.default.createHmac('sha256', Buffer.from(clientSecret, 'base64'));
hmac.update(data);
return hmac.digest('base64');
}
/**
* Validates eSewa signature
* @param signature Signature to validate
* @param requestId Unique request identifier
* @param amount Payment amount
* @param clientSecret Base64 encoded client secret
*/
function validateEsewaSignature(signature, requestId, amount, clientSecret) {
const expectedSignature = generateEsewaSignature(requestId, amount, clientSecret);
return crypto_1.default.timingSafeEqual(Buffer.from(signature), Buffer.from(expectedSignature));
}