UNPKG

@gmisoftware/przelewy24-payments-medusa

Version:

Przelewy24 (P24) payment integration plugin for Medusa e-commerce with BLIK, cards, and general P24 support.

90 lines 7.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.POST = POST; const utils_1 = require("@medusajs/framework/utils"); const zod_1 = require("zod"); const blikPaymentSchema = zod_1.z.object({ token: zod_1.z.string().min(1, "Token is required").max(100, "Token is too long"), blikCode: zod_1.z.string().regex(/^\d{6}$/, "BLIK code must be exactly 6 digits"), }); async function POST(req, res) { const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER); try { const validationResult = blikPaymentSchema.safeParse(req.body); if (!validationResult.success) { const errors = validationResult.error.errors.map((err) => `${err.path.join(".")}: ${err.message}`); res.status(400).json({ error: "Validation failed", details: errors, }); return; } const { token, blikCode } = validationResult.data; const posId = process.env.P24_POS_ID; const apiKey = process.env.P24_API_KEY; const sandbox = process.env.P24_IS_SANDBOX; if (!posId || !apiKey) { logger.error("P24 configuration missing: P24_POS_ID or P24_API_KEY not set"); res.status(500).json({ error: "Configuration error", message: "P24 configuration is incomplete", }); return; } const baseURL = sandbox ? "https://sandbox.przelewy24.pl/api/v1" : "https://secure.przelewy24.pl/api/v1"; const url = `${baseURL}/paymentMethod/blik/chargeByCode`; const credentials = Buffer.from(`${posId}:${apiKey}`).toString("base64"); const response = await fetch(url, { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Basic ${credentials}`, }, body: JSON.stringify({ token, blikCode, }), }); if (!response.ok) { const errorText = await response.text(); logger.error(`P24 API request failed: ${response.status} ${response.statusText} - ${errorText}`); res.status(400).json({ error: "P24 API request failed", details: errorText, status: response.status, }); return; } const blikResponse = await response.json(); if (blikResponse.responseCode !== 0) { logger.error(`BLIK payment failed: ${blikResponse.responseCode} - ${blikResponse.data?.message || "Unknown error"}`); res.status(400).json({ error: "BLIK payment failed", details: blikResponse.data?.message || "Unknown error", responseCode: blikResponse.responseCode, }); return; } // BLIK payment initiated successfully // The actual payment confirmation will come via webhook res.status(200).json({ success: true, message: "BLIK payment initiated successfully", data: { token, orderId: blikResponse.data.orderId, message: blikResponse.data.message, }, }); } catch (error) { logger.error(`Error processing BLIK payment: ${error?.message || "Unknown error"}`); res.status(500).json({ error: "Internal server error", message: error?.message || "Unknown error occurred", }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3BheW1lbnRzL2JsaWsvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSxvQkF3R0M7QUFoSEQscURBQXNFO0FBQ3RFLDZCQUF3QjtBQUV4QixNQUFNLGlCQUFpQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDakMsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQztJQUMzRSxRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsb0NBQW9DLENBQUM7Q0FDNUUsQ0FBQyxDQUFDO0FBRUksS0FBSyxVQUFVLElBQUksQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRW5FLElBQUksQ0FBQztRQUNILE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQzlDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FDakQsQ0FBQztZQUNGLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixLQUFLLEVBQUUs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