UNPKG

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
"use strict"; 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)); }