@gmisoftware/przelewy24-payments-medusa 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ const widgetModule = { widgets: [] };
3
+ const routeModule = {
4
+ routes: []
5
+ };
6
+ const menuItemModule = {
7
+ menuItems: []
8
+ };
9
+ const formModule = { customFields: {} };
10
+ const displayModule = {
11
+ displays: {}
12
+ };
13
+ const plugin = {
14
+ widgetModule,
15
+ routeModule,
16
+ menuItemModule,
17
+ formModule,
18
+ displayModule
19
+ };
20
+ module.exports = plugin;
@@ -0,0 +1,21 @@
1
+ const widgetModule = { widgets: [] };
2
+ const routeModule = {
3
+ routes: []
4
+ };
5
+ const menuItemModule = {
6
+ menuItems: []
7
+ };
8
+ const formModule = { customFields: {} };
9
+ const displayModule = {
10
+ displays: {}
11
+ };
12
+ const plugin = {
13
+ widgetModule,
14
+ routeModule,
15
+ menuItemModule,
16
+ formModule,
17
+ displayModule
18
+ };
19
+ export {
20
+ plugin as default
21
+ };
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const zod_1 = require("zod");
6
+ const blikPaymentSchema = zod_1.z.object({
7
+ token: zod_1.z.string().min(1, "Token is required").max(100, "Token is too long"),
8
+ blikCode: zod_1.z.string().regex(/^\d{6}$/, "BLIK code must be exactly 6 digits"),
9
+ });
10
+ async function POST(req, res) {
11
+ const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
12
+ try {
13
+ const validationResult = blikPaymentSchema.safeParse(req.body);
14
+ if (!validationResult.success) {
15
+ const errors = validationResult.error.errors.map((err) => `${err.path.join(".")}: ${err.message}`);
16
+ res.status(400).json({
17
+ error: "Validation failed",
18
+ details: errors,
19
+ });
20
+ return;
21
+ }
22
+ const { token, blikCode } = validationResult.data;
23
+ const posId = process.env.P24_POS_ID;
24
+ const apiKey = process.env.P24_API_KEY;
25
+ const sandbox = process.env.P24_IS_SANDBOX;
26
+ if (!posId || !apiKey) {
27
+ logger.error("P24 configuration missing: P24_POS_ID or P24_API_KEY not set");
28
+ res.status(500).json({
29
+ error: "Configuration error",
30
+ message: "P24 configuration is incomplete",
31
+ });
32
+ return;
33
+ }
34
+ const baseURL = sandbox
35
+ ? "https://sandbox.przelewy24.pl/api/v1"
36
+ : "https://secure.przelewy24.pl/api/v1";
37
+ const url = `${baseURL}/paymentMethod/blik/chargeByCode`;
38
+ const credentials = Buffer.from(`${posId}:${apiKey}`).toString("base64");
39
+ const response = await fetch(url, {
40
+ method: "POST",
41
+ headers: {
42
+ "Content-Type": "application/json",
43
+ Authorization: `Basic ${credentials}`,
44
+ },
45
+ body: JSON.stringify({
46
+ token,
47
+ blikCode,
48
+ }),
49
+ });
50
+ if (!response.ok) {
51
+ const errorText = await response.text();
52
+ logger.error(`P24 API request failed: ${response.status} ${response.statusText} - ${errorText}`);
53
+ res.status(400).json({
54
+ error: "P24 API request failed",
55
+ details: errorText,
56
+ status: response.status,
57
+ });
58
+ return;
59
+ }
60
+ const blikResponse = await response.json();
61
+ if (blikResponse.responseCode !== 0) {
62
+ logger.error(`BLIK payment failed: ${blikResponse.responseCode} - ${blikResponse.data?.message || "Unknown error"}`);
63
+ res.status(400).json({
64
+ error: "BLIK payment failed",
65
+ details: blikResponse.data?.message || "Unknown error",
66
+ responseCode: blikResponse.responseCode,
67
+ });
68
+ return;
69
+ }
70
+ // BLIK payment initiated successfully
71
+ // The actual payment confirmation will come via webhook
72
+ res.status(200).json({
73
+ success: true,
74
+ message: "BLIK payment initiated successfully",
75
+ data: {
76
+ token,
77
+ orderId: blikResponse.data.orderId,
78
+ message: blikResponse.data.message,
79
+ },
80
+ });
81
+ }
82
+ catch (error) {
83
+ logger.error(`Error processing BLIK payment: ${error?.message || "Unknown error"}`);
84
+ res.status(500).json({
85
+ error: "Internal server error",
86
+ message: error?.message || "Unknown error occurred",
87
+ });
88
+ }
89
+ }
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3BheW1lbnRzL2JsaWsvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSxvQkF3R0M7QUFoSEQscURBQXNFO0FBQ3RFLDZCQUF3QjtBQUV4QixNQUFNLGlCQUFpQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDakMsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQztJQUMzRSxRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsb0NBQW9DLENBQUM7Q0FDNUUsQ0FBQyxDQUFDO0FBRUksS0FBSyxVQUFVLElBQUksQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRW5FLElBQUksQ0FBQztRQUNILE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQzlDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FDakQsQ0FBQztZQUNGLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixLQUFLLEVBQUUs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
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ async function GET(req, res) {
6
+ const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
7
+ const { sessionId, status } = req.query;
8
+ try {
9
+ logger.info(`P24 payment return: sessionId=${sessionId}, status=${status}`);
10
+ // Redirect to frontend with payment result
11
+ const redirectUrl = process.env.FRONTEND_URL || "http://localhost:3000";
12
+ const returnUrl = `${redirectUrl}/payment/return?session_id=${sessionId}&status=${status}`;
13
+ res.redirect(302, returnUrl);
14
+ }
15
+ catch (error) {
16
+ logger.error(`Error handling P24 return: ${error?.message || "Unknown error"}`);
17
+ // Redirect to error page
18
+ const redirectUrl = process.env.FRONTEND_URL || "http://localhost:3000";
19
+ const errorUrl = `${redirectUrl}/payment/error`;
20
+ res.redirect(302, errorUrl);
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3JldHVybi9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLGtCQTBCQztBQTVCRCxxREFBc0U7QUFFL0QsS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBRXhDLElBQUksQ0FBQztRQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLFNBQVMsWUFBWSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTVFLDJDQUEyQztRQUMzQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSx1QkFBdUIsQ0FBQztRQUN4RSxNQUFNLFNBQVMsR0FBRyxHQUFHLFdBQVcsOEJBQThCLFNBQVMsV0FBVyxNQUFNLEVBQUUsQ0FBQztRQUUzRixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztRQUNwQixNQUFNLENBQUMsS0FBSyxDQUNWLDhCQUE4QixLQUFLLEVBQUUsT0FBTyxJQUFJLGVBQWUsRUFBRSxDQUNsRSxDQUFDO1FBRUYseUJBQXlCO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLHVCQUF1QixDQUFDO1FBQ3hFLE1BQU0sUUFBUSxHQUFHLEdBQUcsV0FBVyxnQkFBZ0IsQ0FBQztRQUVoRCxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDO0FBQ0gsQ0FBQyJ9