UNPKG

mpesa-mz-sdk

Version:

SDK para integração com a API M-Pesa de Moçambique

55 lines (54 loc) 2.12 kB
"use strict"; // src/utils.ts var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.encodePublicKeyToBase64 = encodePublicKeyToBase64; exports.generateUniqueReference = generateUniqueReference; exports.generateBearerToken = generateBearerToken; exports.formatPublicKey = formatPublicKey; const crypto_1 = __importDefault(require("crypto")); /** * Codifica a Public Key em Base64. * @param publicKey A Public Key fornecida pela M-Pesa. * @returns A Public Key codificada em Base64. */ function encodePublicKeyToBase64(publicKey) { return Buffer.from(publicKey).toString('base64'); } /** * Gera uma referência única para transações. * @param prefix Um prefixo para a referência (ex: 'C2B', 'B2C'). * @returns Uma string de referência única. */ function generateUniqueReference(prefix = 'REF') { const timestamp = new Date().getTime(); const random = Math.floor(Math.random() * 10000); return `${prefix}-${timestamp}-${random}`; } /** * Gera o Bearer token criptografando o apiKey com a publicKey (PKCS1_PADDING) e codificando em Base64. * @param apiKey Sua apiKey do portal M-Pesa * @param publicKey Sua publicKey do portal M-Pesa (formato PEM) * @returns Bearer token para o header Authorization */ function generateBearerToken(apiKey, publicKey) { const buffer = Buffer.from(apiKey, 'utf8'); const encrypted = crypto_1.default.publicEncrypt({ key: publicKey, padding: crypto_1.default.constants.RSA_PKCS1_PADDING, }, buffer); return encrypted.toString('base64'); } /** * Garante que a chave pública está no formato PEM correto. * @param key Chave pública (com ou sem delimitadores) * @returns Chave pública em formato PEM */ function formatPublicKey(key) { var _a; if (key.includes('BEGIN PUBLIC KEY')) return key; return `-----BEGIN PUBLIC KEY-----\n${(_a = key.match(/.{1,64}/g)) === null || _a === void 0 ? void 0 : _a.join('\n')}\n-----END PUBLIC KEY-----`; }