@easypayment/medusa-payment-paypal 0.9.12 → 0.9.13

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.
@@ -224,9 +224,6 @@ function AdditionalSettingsTab() {
224
224
  )
225
225
  ] }) });
226
226
  }
227
- function PayPalApplePayPage() {
228
- return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: "/settings/paypal/connection", replace: true });
229
- }
230
227
  const DEFAULT_FORM = {
231
228
  enabled: true,
232
229
  title: "Credit or Debit Card",
@@ -311,9 +308,6 @@ function AdvancedCardPaymentsTab() {
311
308
  )
312
309
  ] }) });
313
310
  }
314
- function PayPalGooglePayPage() {
315
- return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: "/settings/paypal/connection", replace: true });
316
- }
317
311
  const config = adminSdk.defineRouteConfig({
318
312
  label: "PayPal Connection"
319
313
  });
@@ -898,6 +892,12 @@ function PayPalConnectionPage() {
898
892
  ` })
899
893
  ] });
900
894
  }
895
+ function PayPalApplePayPage() {
896
+ return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: "/settings/paypal/connection", replace: true });
897
+ }
898
+ function PayPalGooglePayPage() {
899
+ return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: "/settings/paypal/connection", replace: true });
900
+ }
901
901
  function PayPalPayLaterMessagingPage() {
902
902
  return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: "/settings/paypal/connection", replace: true });
903
903
  }
@@ -1119,22 +1119,22 @@ const routeModule = {
1119
1119
  Component: AdditionalSettingsTab,
1120
1120
  path: "/settings/paypal/additional-settings"
1121
1121
  },
1122
- {
1123
- Component: PayPalApplePayPage,
1124
- path: "/settings/paypal/apple-pay"
1125
- },
1126
1122
  {
1127
1123
  Component: AdvancedCardPaymentsTab,
1128
1124
  path: "/settings/paypal/advanced-card-payments"
1129
1125
  },
1130
- {
1131
- Component: PayPalGooglePayPage,
1132
- path: "/settings/paypal/google-pay"
1133
- },
1134
1126
  {
1135
1127
  Component: PayPalConnectionPage,
1136
1128
  path: "/settings/paypal/connection"
1137
1129
  },
1130
+ {
1131
+ Component: PayPalApplePayPage,
1132
+ path: "/settings/paypal/apple-pay"
1133
+ },
1134
+ {
1135
+ Component: PayPalGooglePayPage,
1136
+ path: "/settings/paypal/google-pay"
1137
+ },
1138
1138
  {
1139
1139
  Component: PayPalPayLaterMessagingPage,
1140
1140
  path: "/settings/paypal/pay-later-messaging"
@@ -223,9 +223,6 @@ function AdditionalSettingsTab() {
223
223
  )
224
224
  ] }) });
225
225
  }
226
- function PayPalApplePayPage() {
227
- return /* @__PURE__ */ jsx(Navigate, { to: "/settings/paypal/connection", replace: true });
228
- }
229
226
  const DEFAULT_FORM = {
230
227
  enabled: true,
231
228
  title: "Credit or Debit Card",
@@ -310,9 +307,6 @@ function AdvancedCardPaymentsTab() {
310
307
  )
311
308
  ] }) });
312
309
  }
313
- function PayPalGooglePayPage() {
314
- return /* @__PURE__ */ jsx(Navigate, { to: "/settings/paypal/connection", replace: true });
315
- }
316
310
  const config = defineRouteConfig({
317
311
  label: "PayPal Connection"
318
312
  });
@@ -897,6 +891,12 @@ function PayPalConnectionPage() {
897
891
  ` })
898
892
  ] });
899
893
  }
894
+ function PayPalApplePayPage() {
895
+ return /* @__PURE__ */ jsx(Navigate, { to: "/settings/paypal/connection", replace: true });
896
+ }
897
+ function PayPalGooglePayPage() {
898
+ return /* @__PURE__ */ jsx(Navigate, { to: "/settings/paypal/connection", replace: true });
899
+ }
900
900
  function PayPalPayLaterMessagingPage() {
901
901
  return /* @__PURE__ */ jsx(Navigate, { to: "/settings/paypal/connection", replace: true });
902
902
  }
@@ -1118,22 +1118,22 @@ const routeModule = {
1118
1118
  Component: AdditionalSettingsTab,
1119
1119
  path: "/settings/paypal/additional-settings"
1120
1120
  },
1121
- {
1122
- Component: PayPalApplePayPage,
1123
- path: "/settings/paypal/apple-pay"
1124
- },
1125
1121
  {
1126
1122
  Component: AdvancedCardPaymentsTab,
1127
1123
  path: "/settings/paypal/advanced-card-payments"
1128
1124
  },
1129
- {
1130
- Component: PayPalGooglePayPage,
1131
- path: "/settings/paypal/google-pay"
1132
- },
1133
1125
  {
1134
1126
  Component: PayPalConnectionPage,
1135
1127
  path: "/settings/paypal/connection"
1136
1128
  },
1129
+ {
1130
+ Component: PayPalApplePayPage,
1131
+ path: "/settings/paypal/apple-pay"
1132
+ },
1133
+ {
1134
+ Component: PayPalGooglePayPage,
1135
+ path: "/settings/paypal/google-pay"
1136
+ },
1137
1137
  {
1138
1138
  Component: PayPalPayLaterMessagingPage,
1139
1139
  path: "/settings/paypal/pay-later-messaging"
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/store/paypal-complete/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAK7E,wBAAsB,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,2BA6FjE"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/store/paypal-complete/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAM7E,wBAAsB,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,2BAyGjE"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.POST = POST;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
+ const core_flows_1 = require("@medusajs/core-flows");
5
6
  async function POST(req, res) {
6
7
  const { cart_id } = req.body;
7
8
  if (!cart_id || typeof cart_id !== "string") {
@@ -16,6 +17,7 @@ async function POST(req, res) {
16
17
  entity: "cart",
17
18
  fields: [
18
19
  "id",
20
+ "completed_at",
19
21
  "payment_collection.payment_sessions.id",
20
22
  "payment_collection.payment_sessions.data",
21
23
  "payment_collection.payment_sessions.status",
@@ -26,7 +28,11 @@ async function POST(req, res) {
26
28
  ],
27
29
  filters: { id: cart_id },
28
30
  });
29
- const sessions = carts?.[0]?.payment_collection?.payment_sessions || [];
31
+ const cart = carts?.[0];
32
+ if (cart?.completed_at) {
33
+ return res.json({ success: true, cart_id, already_completed: true });
34
+ }
35
+ const sessions = cart?.payment_collection?.payment_sessions || [];
30
36
  const session = sessions
31
37
  .filter((s) => String(s.provider_id || "").includes("paypal"))
32
38
  .sort((a, b) => new Date(b.created_at || 0).getTime() - new Date(a.created_at || 0).getTime())[0];
@@ -58,18 +64,26 @@ async function POST(req, res) {
58
64
  });
59
65
  }
60
66
  const currentStatus = String(session.status || "");
61
- if (currentStatus === "authorized") {
62
- console.info("[paypal-complete] session already authorized, skipping authorizePaymentSession");
63
- return res.json({ success: true, session_id: session.id, status: currentStatus });
67
+ if (currentStatus !== "authorized") {
68
+ try {
69
+ await paymentModule.authorizePaymentSession(session.id, {});
70
+ console.info("[paypal-complete] authorizePaymentSession succeeded for session", session.id);
71
+ }
72
+ catch (e) {
73
+ console.warn("[paypal-complete] authorizePaymentSession non-fatal:", e?.message);
74
+ }
64
75
  }
65
76
  try {
66
- await paymentModule.authorizePaymentSession(session.id, {});
67
- console.info("[paypal-complete] authorizePaymentSession succeeded for session", session.id);
77
+ const { result } = await (0, core_flows_1.completeCartWorkflow)(req.scope).run({
78
+ input: { id: cart_id },
79
+ });
80
+ console.info("[paypal-complete] cart completed, order:", result?.id);
81
+ return res.json({ success: true, cart_id, order_id: result?.id });
68
82
  }
69
83
  catch (e) {
70
- console.warn("[paypal-complete] authorizePaymentSession non-fatal:", e?.message);
84
+ console.warn("[paypal-complete] completeCartWorkflow failed:", e?.message);
85
+ return res.json({ success: true, session_id: session.id });
71
86
  }
72
- return res.json({ success: true, session_id: session.id });
73
87
  }
74
88
  catch (e) {
75
89
  console.error("[paypal-complete] error:", e?.message || e);
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/store/paypal-complete/route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/store/paypal-complete/route.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easypayment/medusa-payment-paypal",
3
- "version": "0.9.12",
3
+ "version": "0.9.13",
4
4
  "description": "PayPal integration for Medusa v2",
5
5
  "author": "EasyPayment Plugins",
6
6
  "license": "MIT",
@@ -39,27 +39,33 @@
39
39
  "prepublishOnly": "npm run build"
40
40
  },
41
41
  "devDependencies": {
42
- "@medusajs/admin-sdk": "2.12.5",
43
- "@medusajs/cli": "2.12.5",
44
- "@medusajs/framework": "2.12.5",
45
- "@medusajs/medusa": "2.12.5",
46
- "@medusajs/test-utils": "2.12.5",
42
+ "@medusajs/admin-sdk": "^2.15.3",
43
+ "@medusajs/cli": "^2.15.3",
44
+ "@medusajs/framework": "^2.15.3",
45
+ "@medusajs/icons": "^2.15.3",
46
+ "@medusajs/medusa": "^2.15.3",
47
+ "@medusajs/test-utils": "^2.15.3",
47
48
  "@medusajs/ui": "^4.0.0",
48
- "@medusajs/icons": "2.12.5",
49
49
  "@swc/core": "^1.5.7",
50
50
  "typescript": "^5.6.2"
51
51
  },
52
52
  "peerDependencies": {
53
53
  "@medusajs/admin-sdk": "^2.12.0",
54
54
  "@medusajs/framework": "^2.12.0",
55
+ "@medusajs/icons": "^2.12.0",
55
56
  "@medusajs/medusa": "^2.12.0",
56
- "@medusajs/ui": "^4.0.0",
57
- "@medusajs/icons": "^2.12.0"
57
+ "@medusajs/ui": "^4.0.0"
58
58
  },
59
59
  "peerDependenciesMeta": {
60
- "@medusajs/admin-sdk": { "optional": true },
61
- "@medusajs/ui": { "optional": true },
62
- "@medusajs/icons": { "optional": true }
60
+ "@medusajs/admin-sdk": {
61
+ "optional": true
62
+ },
63
+ "@medusajs/ui": {
64
+ "optional": true
65
+ },
66
+ "@medusajs/icons": {
67
+ "optional": true
68
+ }
63
69
  },
64
70
  "publishConfig": {
65
71
  "access": "public"
@@ -82,4 +88,4 @@
82
88
  "medusa-paypal-integration",
83
89
  "medusa-paypal"
84
90
  ]
85
- }
91
+ }
@@ -1,6 +1,7 @@
1
1
  import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http"
2
2
  import type { IPaymentModuleService } from "@medusajs/framework/types"
3
3
  import { Modules } from "@medusajs/framework/utils"
4
+ import { completeCartWorkflow } from "@medusajs/core-flows"
4
5
  import type PayPalModuleService from "../../../modules/paypal/service"
5
6
 
6
7
  export async function POST(req: MedusaRequest, res: MedusaResponse) {
@@ -20,6 +21,7 @@ export async function POST(req: MedusaRequest, res: MedusaResponse) {
20
21
  entity: "cart",
21
22
  fields: [
22
23
  "id",
24
+ "completed_at",
23
25
  "payment_collection.payment_sessions.id",
24
26
  "payment_collection.payment_sessions.data",
25
27
  "payment_collection.payment_sessions.status",
@@ -31,7 +33,12 @@ export async function POST(req: MedusaRequest, res: MedusaResponse) {
31
33
  filters: { id: cart_id },
32
34
  })
33
35
 
34
- const sessions = carts?.[0]?.payment_collection?.payment_sessions || []
36
+ const cart = carts?.[0]
37
+ if (cart?.completed_at) {
38
+ return res.json({ success: true, cart_id, already_completed: true })
39
+ }
40
+
41
+ const sessions = cart?.payment_collection?.payment_sessions || []
35
42
  const session = sessions
36
43
  .filter((s: any) => String(s.provider_id || "").includes("paypal"))
37
44
  .sort(
@@ -79,19 +86,25 @@ export async function POST(req: MedusaRequest, res: MedusaResponse) {
79
86
  }
80
87
 
81
88
  const currentStatus = String(session.status || "")
82
- if (currentStatus === "authorized") {
83
- console.info("[paypal-complete] session already authorized, skipping authorizePaymentSession")
84
- return res.json({ success: true, session_id: session.id, status: currentStatus })
89
+ if (currentStatus !== "authorized") {
90
+ try {
91
+ await (paymentModule as any).authorizePaymentSession(session.id, {})
92
+ console.info("[paypal-complete] authorizePaymentSession succeeded for session", session.id)
93
+ } catch (e: any) {
94
+ console.warn("[paypal-complete] authorizePaymentSession non-fatal:", e?.message)
95
+ }
85
96
  }
86
97
 
87
98
  try {
88
- await (paymentModule as any).authorizePaymentSession(session.id, {})
89
- console.info("[paypal-complete] authorizePaymentSession succeeded for session", session.id)
99
+ const { result } = await completeCartWorkflow(req.scope).run({
100
+ input: { id: cart_id },
101
+ })
102
+ console.info("[paypal-complete] cart completed, order:", result?.id)
103
+ return res.json({ success: true, cart_id, order_id: result?.id })
90
104
  } catch (e: any) {
91
- console.warn("[paypal-complete] authorizePaymentSession non-fatal:", e?.message)
105
+ console.warn("[paypal-complete] completeCartWorkflow failed:", e?.message)
106
+ return res.json({ success: true, session_id: session.id })
92
107
  }
93
-
94
- return res.json({ success: true, session_id: session.id })
95
108
  } catch (e: any) {
96
109
  console.error("[paypal-complete] error:", e?.message || e)
97
110
  return res.status(500).json({ message: "Internal error" })