UNPKG

medusa-payment-pesapal

Version:

Pesapal payment provider plugin for Medusa v2 - Accept payments via Pesapal gateway with support for M-Pesa, Airtel Money, and other East African payment methods

90 lines 6.08 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GET = GET; exports.POST = POST; const promises_1 = __importDefault(require("fs/promises")); const path_1 = __importDefault(require("path")); const CONFIG_FILE_PATH = path_1.default.join(process.cwd(), "pesapal-config.json"); async function loadConfig() { try { const data = await promises_1.default.readFile(CONFIG_FILE_PATH, "utf8"); return JSON.parse(data); } catch (error) { return null; } } async function saveConfig(config) { await promises_1.default.writeFile(CONFIG_FILE_PATH, JSON.stringify(config, null, 2)); } async function GET(req, res) { try { const config = await loadConfig(); if (config) { // Don't expose the consumer secret in the response const { consumer_secret, ...safeConfig } = config; res.json({ config: { ...safeConfig, consumer_secret: consumer_secret ? "****" : "" } }); } else { res.json({ config: { consumer_key: "", consumer_secret: "", environment: "sandbox", currency: "KES", merchant_name: "", ipn_url: "", enabled: false } }); } } catch (error) { console.error("Failed to load Pesapal config:", error); res.status(500).json({ message: "Failed to load configuration", error: error.message }); } } async function POST(req, res) { try { const { config } = req.body; // Validate required fields if (!config.consumer_key || !config.consumer_secret) { return res.status(400).json({ message: "Consumer key and consumer secret are required" }); } // Validate environment if (!["sandbox", "live"].includes(config.environment)) { return res.status(400).json({ message: "Environment must be either 'sandbox' or 'live'" }); } await saveConfig(config); res.json({ message: "Configuration saved successfully", config: { ...config, consumer_secret: "****" // Don't expose the secret in response } }); } catch (error) { console.error("Failed to save Pesapal config:", error); res.status(500).json({ message: "Failed to save configuration", error: error.message }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2N1c3RvbS9wZXNhcGFsL2NvbmZpZy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQTZCQSxrQkFpQ0M7QUFFRCxvQkFrQ0M7QUFqR0QsMkRBQTRCO0FBQzVCLGdEQUF1QjtBQUV2QixNQUFNLGdCQUFnQixHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLHFCQUFxQixDQUFDLENBQUE7QUFZeEUsS0FBSyxVQUFVLFVBQVU7SUFDdkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxrQkFBRSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN4RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7QUFDSCxDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxNQUFxQjtJQUM3QyxNQUFNLGtCQUFFLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3ZFLENBQUM7QUFFTSxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLEVBQUUsQ0FBQTtRQUVqQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsbURBQW1EO1lBQ25ELE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUE7WUFDakQsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDUCxNQUFNLEVBQUU7b0JBQ04sR0FBRyxVQUFVO29CQUNiLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtpQkFDL0M7YUFDRixDQUFDLENBQUE7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ1AsTUFBTSxFQUFFO29CQUNOLFlBQVksRUFBRSxFQUFFO29CQUNoQixlQUFlLEVBQUUsRUFBRTtvQkFDbkIsV0FBVyxFQUFFLFNBQVM7b0JBQ3RCLFFBQVEsRUFBRSxLQUFLO29CQUNmLGFBQWEsRUFBRSxFQUFFO29CQUNqQixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsS0FBSztpQkFDZjthQUNGLENBQUMsQ0FBQTtRQUNKLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDdEQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLDhCQUE4QjtZQUN2QyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDckIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFTSxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDaEUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFpQyxDQUFBO1FBRXhELDJCQUEyQjtRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNwRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMxQixPQUFPLEVBQUUsK0NBQStDO2FBQ3pELENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMxQixPQUFPLEVBQUUsZ0RBQWdEO2FBQzFELENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxNQUFNLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUV4QixHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ1AsT0FBTyxFQUFFLGtDQUFrQztZQUMzQyxNQUFNLEVBQUU7Z0JBQ04sR0FBRyxNQUFNO2dCQUNULGVBQWUsRUFBRSxNQUFNLENBQUMsc0NBQXNDO2FBQy9EO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3RELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSw4QkFBOEI7WUFDdkMsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPO1NBQ3JCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDIn0=