@easypayment/medusa-payment-paypal 0.9.29 → 0.9.30

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.
Files changed (117) hide show
  1. package/.medusa/server/src/admin/index.js +12 -10
  2. package/.medusa/server/src/admin/index.mjs +12 -10
  3. package/.medusa/server/src/api/admin/paypal/onboarding-link/route.d.ts.map +1 -1
  4. package/.medusa/server/src/api/admin/paypal/onboarding-link/route.js +24 -4
  5. package/.medusa/server/src/api/admin/paypal/onboarding-link/route.js.map +1 -1
  6. package/.medusa/server/src/api/store/paypal/capture-order/route.d.ts.map +1 -1
  7. package/.medusa/server/src/api/store/paypal/capture-order/route.js +4 -2
  8. package/.medusa/server/src/api/store/paypal/capture-order/route.js.map +1 -1
  9. package/.medusa/server/src/api/store/paypal/webhook/route.js +1 -1
  10. package/.medusa/server/src/api/store/paypal/webhook/route.js.map +1 -1
  11. package/.medusa/server/src/modules/paypal/migrations/20270301000000_add_webhook_transmission_id_index.d.ts +6 -0
  12. package/.medusa/server/src/modules/paypal/migrations/20270301000000_add_webhook_transmission_id_index.d.ts.map +1 -0
  13. package/.medusa/server/src/modules/paypal/migrations/20270301000000_add_webhook_transmission_id_index.js +14 -0
  14. package/.medusa/server/src/modules/paypal/migrations/20270301000000_add_webhook_transmission_id_index.js.map +1 -0
  15. package/.medusa/server/src/modules/paypal/payment-provider/card-service.d.ts +1 -1
  16. package/.medusa/server/src/modules/paypal/payment-provider/card-service.d.ts.map +1 -1
  17. package/.medusa/server/src/modules/paypal/payment-provider/card-service.js +9 -35
  18. package/.medusa/server/src/modules/paypal/payment-provider/card-service.js.map +1 -1
  19. package/.medusa/server/src/modules/paypal/payment-provider/service.d.ts +2 -5
  20. package/.medusa/server/src/modules/paypal/payment-provider/service.d.ts.map +1 -1
  21. package/.medusa/server/src/modules/paypal/payment-provider/service.js +14 -66
  22. package/.medusa/server/src/modules/paypal/payment-provider/service.js.map +1 -1
  23. package/.medusa/server/src/modules/paypal/service.d.ts +1 -1
  24. package/.medusa/server/src/modules/paypal/service.d.ts.map +1 -1
  25. package/.medusa/server/src/modules/paypal/service.js +41 -22
  26. package/.medusa/server/src/modules/paypal/service.js.map +1 -1
  27. package/.medusa/server/src/modules/paypal/utils/amounts.d.ts +1 -1
  28. package/.medusa/server/src/modules/paypal/utils/amounts.d.ts.map +1 -1
  29. package/.medusa/server/src/modules/paypal/utils/amounts.js +17 -6
  30. package/.medusa/server/src/modules/paypal/utils/amounts.js.map +1 -1
  31. package/.medusa/server/src/modules/paypal/utils/credential-resolver.d.ts +42 -0
  32. package/.medusa/server/src/modules/paypal/utils/credential-resolver.d.ts.map +1 -0
  33. package/.medusa/server/src/modules/paypal/utils/credential-resolver.js +186 -0
  34. package/.medusa/server/src/modules/paypal/utils/credential-resolver.js.map +1 -0
  35. package/.medusa/server/src/modules/paypal/utils/payment-session.d.ts.map +1 -1
  36. package/.medusa/server/src/modules/paypal/utils/payment-session.js +7 -1
  37. package/.medusa/server/src/modules/paypal/utils/payment-session.js.map +1 -1
  38. package/.medusa/server/src/modules/paypal/utils/paypal-fetch.d.ts +3 -11
  39. package/.medusa/server/src/modules/paypal/utils/paypal-fetch.d.ts.map +1 -1
  40. package/.medusa/server/src/modules/paypal/utils/paypal-fetch.js +119 -18
  41. package/.medusa/server/src/modules/paypal/utils/paypal-fetch.js.map +1 -1
  42. package/.medusa/server/src/modules/paypal/utils/secret-crypto.d.ts.map +1 -1
  43. package/.medusa/server/src/modules/paypal/utils/secret-crypto.js +6 -0
  44. package/.medusa/server/src/modules/paypal/utils/secret-crypto.js.map +1 -1
  45. package/.medusa/server/src/modules/paypal/webhook-processor.d.ts.map +1 -1
  46. package/.medusa/server/src/modules/paypal/webhook-processor.js +10 -9
  47. package/.medusa/server/src/modules/paypal/webhook-processor.js.map +1 -1
  48. package/package.json +15 -8
  49. package/src/admin/routes/settings/paypal/connection/page.tsx +6 -4
  50. package/src/api/admin/paypal/onboarding-link/route.ts +30 -5
  51. package/src/api/store/paypal/capture-order/route.ts +4 -2
  52. package/src/api/store/paypal/webhook/route.ts +1 -1
  53. package/src/modules/paypal/migrations/20270301000000_add_webhook_transmission_id_index.ts +15 -0
  54. package/src/modules/paypal/payment-provider/card-service.ts +9 -40
  55. package/src/modules/paypal/payment-provider/service.ts +18 -68
  56. package/src/modules/paypal/service.ts +43 -23
  57. package/src/modules/paypal/utils/amounts.ts +17 -6
  58. package/src/modules/paypal/utils/credential-resolver.ts +257 -0
  59. package/src/modules/paypal/utils/payment-session.ts +11 -2
  60. package/src/modules/paypal/utils/paypal-fetch.ts +139 -17
  61. package/src/modules/paypal/utils/secret-crypto.ts +5 -0
  62. package/src/modules/paypal/webhook-processor.ts +15 -10
  63. package/.medusa/server/src/admin/index.d.ts +0 -2
  64. package/.medusa/server/src/admin/index.d.ts.map +0 -1
  65. package/.medusa/server/src/admin/index.js.map +0 -1
  66. package/.medusa/server/src/admin/routes/settings/paypal/_components/FieldRow.d.ts +0 -8
  67. package/.medusa/server/src/admin/routes/settings/paypal/_components/FieldRow.d.ts.map +0 -1
  68. package/.medusa/server/src/admin/routes/settings/paypal/_components/FieldRow.js +0 -8
  69. package/.medusa/server/src/admin/routes/settings/paypal/_components/FieldRow.js.map +0 -1
  70. package/.medusa/server/src/admin/routes/settings/paypal/_components/SectionCard.d.ts +0 -8
  71. package/.medusa/server/src/admin/routes/settings/paypal/_components/SectionCard.d.ts.map +0 -1
  72. package/.medusa/server/src/admin/routes/settings/paypal/_components/SectionCard.js +0 -8
  73. package/.medusa/server/src/admin/routes/settings/paypal/_components/SectionCard.js.map +0 -1
  74. package/.medusa/server/src/admin/routes/settings/paypal/_components/Tabs.d.ts +0 -2
  75. package/.medusa/server/src/admin/routes/settings/paypal/_components/Tabs.d.ts.map +0 -1
  76. package/.medusa/server/src/admin/routes/settings/paypal/_components/Tabs.js +0 -25
  77. package/.medusa/server/src/admin/routes/settings/paypal/_components/Tabs.js.map +0 -1
  78. package/.medusa/server/src/admin/routes/settings/paypal/_components/Toast.d.ts +0 -12
  79. package/.medusa/server/src/admin/routes/settings/paypal/_components/Toast.d.ts.map +0 -1
  80. package/.medusa/server/src/admin/routes/settings/paypal/_components/Toast.js +0 -22
  81. package/.medusa/server/src/admin/routes/settings/paypal/_components/Toast.js.map +0 -1
  82. package/.medusa/server/src/admin/routes/settings/paypal/_utils/adminFetch.d.ts +0 -7
  83. package/.medusa/server/src/admin/routes/settings/paypal/_utils/adminFetch.d.ts.map +0 -1
  84. package/.medusa/server/src/admin/routes/settings/paypal/_utils/adminFetch.js +0 -40
  85. package/.medusa/server/src/admin/routes/settings/paypal/_utils/adminFetch.js.map +0 -1
  86. package/.medusa/server/src/admin/routes/settings/paypal/additional-settings/page.d.ts +0 -2
  87. package/.medusa/server/src/admin/routes/settings/paypal/additional-settings/page.d.ts.map +0 -1
  88. package/.medusa/server/src/admin/routes/settings/paypal/additional-settings/page.js +0 -76
  89. package/.medusa/server/src/admin/routes/settings/paypal/additional-settings/page.js.map +0 -1
  90. package/.medusa/server/src/admin/routes/settings/paypal/advanced-card-payments/page.d.ts +0 -2
  91. package/.medusa/server/src/admin/routes/settings/paypal/advanced-card-payments/page.d.ts.map +0 -1
  92. package/.medusa/server/src/admin/routes/settings/paypal/advanced-card-payments/page.js +0 -81
  93. package/.medusa/server/src/admin/routes/settings/paypal/advanced-card-payments/page.js.map +0 -1
  94. package/.medusa/server/src/admin/routes/settings/paypal/apple-pay/page.d.ts +0 -2
  95. package/.medusa/server/src/admin/routes/settings/paypal/apple-pay/page.d.ts.map +0 -1
  96. package/.medusa/server/src/admin/routes/settings/paypal/apple-pay/page.js +0 -9
  97. package/.medusa/server/src/admin/routes/settings/paypal/apple-pay/page.js.map +0 -1
  98. package/.medusa/server/src/admin/routes/settings/paypal/connection/page.d.ts +0 -22
  99. package/.medusa/server/src/admin/routes/settings/paypal/connection/page.d.ts.map +0 -1
  100. package/.medusa/server/src/admin/routes/settings/paypal/connection/page.js +0 -595
  101. package/.medusa/server/src/admin/routes/settings/paypal/connection/page.js.map +0 -1
  102. package/.medusa/server/src/admin/routes/settings/paypal/google-pay/page.d.ts +0 -2
  103. package/.medusa/server/src/admin/routes/settings/paypal/google-pay/page.d.ts.map +0 -1
  104. package/.medusa/server/src/admin/routes/settings/paypal/google-pay/page.js +0 -9
  105. package/.medusa/server/src/admin/routes/settings/paypal/google-pay/page.js.map +0 -1
  106. package/.medusa/server/src/admin/routes/settings/paypal/page.d.ts +0 -4
  107. package/.medusa/server/src/admin/routes/settings/paypal/page.d.ts.map +0 -1
  108. package/.medusa/server/src/admin/routes/settings/paypal/page.js +0 -14
  109. package/.medusa/server/src/admin/routes/settings/paypal/page.js.map +0 -1
  110. package/.medusa/server/src/admin/routes/settings/paypal/pay-later-messaging/page.d.ts +0 -2
  111. package/.medusa/server/src/admin/routes/settings/paypal/pay-later-messaging/page.d.ts.map +0 -1
  112. package/.medusa/server/src/admin/routes/settings/paypal/pay-later-messaging/page.js +0 -9
  113. package/.medusa/server/src/admin/routes/settings/paypal/pay-later-messaging/page.js.map +0 -1
  114. package/.medusa/server/src/admin/routes/settings/paypal/paypal-settings/page.d.ts +0 -2
  115. package/.medusa/server/src/admin/routes/settings/paypal/paypal-settings/page.d.ts.map +0 -1
  116. package/.medusa/server/src/admin/routes/settings/paypal/paypal-settings/page.js +0 -109
  117. package/.medusa/server/src/admin/routes/settings/paypal/paypal-settings/page.js.map +0 -1
@@ -1,595 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.config = void 0;
7
- exports.default = PayPalConnectionPage;
8
- const jsx_runtime_1 = require("react/jsx-runtime");
9
- const react_1 = require("react");
10
- const admin_sdk_1 = require("@medusajs/admin-sdk");
11
- const Tabs_1 = __importDefault(require("../_components/Tabs"));
12
- exports.config = (0, admin_sdk_1.defineRouteConfig)({
13
- label: "PayPal Connection",
14
- });
15
- // Let partner.js own the entire onboarding flow: it opens PayPal's mini-browser
16
- // itself (synchronously inside the click, so no new tab / no popup block), it
17
- // receives PayPal's completion postMessage, and it invokes the callback named in
18
- // `data-paypal-onboard-complete` with (authCode, sharedId). This is PayPal's
19
- // documented integration and matches the official @easypayment WooCommerce
20
- // plugin. Opening the popup ourselves (a previous attempt at fixing the "opens a
21
- // new tab" issue) stopped partner.js from receiving completion, which left the
22
- // popup stranded on PayPal's "isuDone" page and never saved credentials.
23
- const PARTNER_JS_URL = "https://www.paypal.com/webapps/merchantboarding/js/lib/lightbox/partner.js";
24
- const SERVICE_URL = "/admin/paypal/onboarding-link";
25
- const CACHE_PREFIX = "pp_onboard_cache";
26
- const CACHE_EXPIRY = 6 * 60 * 60 * 1000; // 6 hours
27
- const ONBOARDING_COMPLETE_ENDPOINT = "/admin/paypal/onboard-complete";
28
- const STATUS_ENDPOINT = "/admin/paypal/status";
29
- const SAVE_CREDENTIALS_ENDPOINT = "/admin/paypal/save-credentials";
30
- const DISCONNECT_ENDPOINT = "/admin/paypal/disconnect";
31
- const ENVIRONMENT_ENDPOINT = "/admin/paypal/environment";
32
- const cacheKeyFor = (env) => `${CACHE_PREFIX}_${env}`;
33
- function readCachedUrl(env) {
34
- if (typeof window === "undefined")
35
- return null;
36
- try {
37
- const raw = localStorage.getItem(cacheKeyFor(env));
38
- if (!raw)
39
- return null;
40
- const data = JSON.parse(raw);
41
- if (data &&
42
- typeof data.url === "string" &&
43
- Date.now() - (Number(data.ts) || 0) < CACHE_EXPIRY) {
44
- return data.url;
45
- }
46
- }
47
- catch {
48
- /* ignore malformed cache */
49
- }
50
- return null;
51
- }
52
- function writeCachedUrl(env, url) {
53
- try {
54
- localStorage.setItem(cacheKeyFor(env), JSON.stringify({ url, ts: Date.now() }));
55
- }
56
- catch {
57
- /* ignore */
58
- }
59
- }
60
- function clearCachedUrl(env) {
61
- try {
62
- if (env) {
63
- localStorage.removeItem(cacheKeyFor(env));
64
- }
65
- else {
66
- localStorage.removeItem(cacheKeyFor("sandbox"));
67
- localStorage.removeItem(cacheKeyFor("live"));
68
- }
69
- }
70
- catch {
71
- /* ignore */
72
- }
73
- }
74
- function PayPalConnectionPage() {
75
- const [env, setEnv] = (0, react_1.useState)("live");
76
- const [envReady, setEnvReady] = (0, react_1.useState)(false);
77
- const [connState, setConnState] = (0, react_1.useState)("loading");
78
- const [error, setError] = (0, react_1.useState)(null);
79
- const [finalUrl, setFinalUrl] = (0, react_1.useState)("");
80
- const [showManual, setShowManual] = (0, react_1.useState)(false);
81
- const [clientId, setClientId] = (0, react_1.useState)("");
82
- const [secret, setSecret] = (0, react_1.useState)("");
83
- const [statusInfo, setStatusInfo] = (0, react_1.useState)(null);
84
- const [onboardingInProgress, setOnboardingInProgress] = (0, react_1.useState)(false);
85
- const initLoaderRef = (0, react_1.useRef)(null);
86
- const paypalButtonRef = (0, react_1.useRef)(null);
87
- const errorLogRef = (0, react_1.useRef)(null);
88
- const runIdRef = (0, react_1.useRef)(0);
89
- const currentRunId = (0, react_1.useRef)(0);
90
- const completedRef = (0, react_1.useRef)(false);
91
- // Long-lived listeners/timers read the current env through a ref so they never
92
- // capture a stale value from the render that registered them.
93
- const envRef = (0, react_1.useRef)(env);
94
- envRef.current = env;
95
- const pollTimerRef = (0, react_1.useRef)(null);
96
- const pollAttemptsRef = (0, react_1.useRef)(0);
97
- const ppBtnMeasureRef = (0, react_1.useRef)(null);
98
- const [ppBtnWidth, setPpBtnWidth] = (0, react_1.useState)(null);
99
- const canSaveManual = (0, react_1.useMemo)(() => {
100
- return clientId.trim().length > 0 && secret.trim().length > 0;
101
- }, [clientId, secret]);
102
- const showError = (0, react_1.useCallback)((msg) => {
103
- setConnState("error");
104
- setError(msg);
105
- }, []);
106
- // Close PayPal's mini-browser via partner.js's API (works under both the
107
- // `miniBrowser` and `MiniBrowser` casings PayPal has shipped over time).
108
- const closeMiniBrowser = (0, react_1.useCallback)(() => {
109
- try {
110
- const close1 = window.PAYPAL?.apps?.Signup?.MiniBrowser?.closeFlow;
111
- if (typeof close1 === "function")
112
- close1();
113
- }
114
- catch { }
115
- try {
116
- const close2 = window.PAYPAL?.apps?.Signup?.miniBrowser?.closeFlow;
117
- if (typeof close2 === "function")
118
- close2();
119
- }
120
- catch { }
121
- }, []);
122
- const stopStatusPolling = (0, react_1.useCallback)(() => {
123
- if (pollTimerRef.current) {
124
- clearTimeout(pollTimerRef.current);
125
- pollTimerRef.current = null;
126
- }
127
- pollAttemptsRef.current = 0;
128
- }, []);
129
- // Fetch status for an env and, if the seller credentials are present, flip the
130
- // UI to "connected" and close the PayPal popup. Returns true once connected.
131
- const refreshStatusAndMaybeConnect = (0, react_1.useCallback)(async (activeEnv) => {
132
- try {
133
- const res = await fetch(`${STATUS_ENDPOINT}?environment=${activeEnv}`, {
134
- method: "GET",
135
- credentials: "include",
136
- });
137
- const st = await res.json().catch(() => ({}));
138
- const connected = st?.status === "connected" && st?.seller_client_id_present === true;
139
- if (connected) {
140
- completedRef.current = true;
141
- setStatusInfo(st);
142
- setConnState("connected");
143
- setShowManual(false);
144
- setOnboardingInProgress(false);
145
- clearCachedUrl(activeEnv);
146
- closeMiniBrowser();
147
- stopStatusPolling();
148
- }
149
- return connected;
150
- }
151
- catch {
152
- return false;
153
- }
154
- }, [closeMiniBrowser, stopStatusPolling]);
155
- // While a connect attempt is in flight, the seller may complete onboarding via
156
- // a path that never reaches the opener (e.g. partner.js fails to fire its
157
- // callback, or the popup's completion message is blocked). The return_url
158
- // bridge still saves credentials server-side, so poll status as the reliable
159
- // fallback: the moment credentials land, this flips to "connected" and closes
160
- // the stranded popup.
161
- const startStatusPolling = (0, react_1.useCallback)(() => {
162
- stopStatusPolling();
163
- const MAX_ATTEMPTS = 100; // ~5 min at 3s intervals
164
- const tick = async () => {
165
- pollAttemptsRef.current += 1;
166
- const connected = await refreshStatusAndMaybeConnect(envRef.current);
167
- if (connected || completedRef.current)
168
- return;
169
- if (pollAttemptsRef.current >= MAX_ATTEMPTS) {
170
- stopStatusPolling();
171
- return;
172
- }
173
- pollTimerRef.current = setTimeout(tick, 3000);
174
- };
175
- pollTimerRef.current = setTimeout(tick, 3000);
176
- }, [refreshStatusAndMaybeConnect, stopStatusPolling]);
177
- // Shared completion: exchange authCode/sharedId for seller credentials, then
178
- // close the popup and refresh status. Invoked by partner.js's onboardingCallback
179
- // and by the return_url bridge's postMessage. Guarded + server-idempotent so
180
- // redundant invocations are harmless.
181
- const completeOnboarding = (0, react_1.useCallback)(async (authCode, sharedId) => {
182
- if (!authCode || !sharedId)
183
- return;
184
- if (completedRef.current)
185
- return;
186
- completedRef.current = true;
187
- try {
188
- window.onbeforeunload = null;
189
- }
190
- catch { }
191
- const activeEnv = envRef.current === "sandbox" ? "sandbox" : "live";
192
- setOnboardingInProgress(true);
193
- setConnState("loading");
194
- setError(null);
195
- try {
196
- const res = await fetch(ONBOARDING_COMPLETE_ENDPOINT, {
197
- method: "POST",
198
- headers: { "content-type": "application/json" },
199
- credentials: "include",
200
- body: JSON.stringify({ authCode, sharedId, env: activeEnv }),
201
- });
202
- if (!res.ok) {
203
- const txt = await res.text().catch(() => "");
204
- throw new Error(txt || `Onboarding exchange failed (${res.status})`);
205
- }
206
- closeMiniBrowser();
207
- clearCachedUrl(activeEnv);
208
- try {
209
- const statusRes = await fetch(`${STATUS_ENDPOINT}?environment=${activeEnv}`, { method: "GET", credentials: "include" });
210
- const refreshedStatus = await statusRes.json().catch(() => ({}));
211
- setStatusInfo(refreshedStatus || null);
212
- }
213
- catch { }
214
- setConnState("connected");
215
- setShowManual(false);
216
- stopStatusPolling();
217
- }
218
- catch (e) {
219
- completedRef.current = false;
220
- console.error(e);
221
- // The bridge may have already saved credentials server-side; if so the
222
- // poll will surface "connected". Don't strand the user on an error.
223
- setConnState("error");
224
- setError(e?.message || "Exchange failed while saving credentials.");
225
- }
226
- finally {
227
- setOnboardingInProgress(false);
228
- }
229
- }, [closeMiniBrowser, stopStatusPolling]);
230
- // Bind partner.js to the connect button once it has a real onboarding URL.
231
- const initPartner = (0, react_1.useCallback)(() => {
232
- const signup = window.PAYPAL?.apps?.Signup;
233
- const init = (signup?.miniBrowser && signup.miniBrowser.init) ||
234
- (signup?.MiniBrowser && signup.MiniBrowser.init);
235
- if (typeof init === "function") {
236
- try {
237
- init();
238
- }
239
- catch (e) {
240
- console.error("[paypal] partner.js init failed:", e);
241
- }
242
- }
243
- }, []);
244
- // Load partner.js once for the lifetime of the page.
245
- (0, react_1.useEffect)(() => {
246
- const existingScript = document.getElementById("paypal-partner-js");
247
- if (existingScript)
248
- return;
249
- const preloadHref = PARTNER_JS_URL;
250
- let preloadLink = null;
251
- if (!document.head.querySelector(`link[rel="preload"][href="${preloadHref}"]`)) {
252
- preloadLink = document.createElement("link");
253
- preloadLink.rel = "preload";
254
- preloadLink.href = preloadHref;
255
- preloadLink.as = "script";
256
- document.head.appendChild(preloadLink);
257
- }
258
- const ppScript = document.createElement("script");
259
- ppScript.id = "paypal-partner-js";
260
- ppScript.src = preloadHref;
261
- ppScript.async = true;
262
- document.head.appendChild(ppScript);
263
- return () => {
264
- if (preloadLink?.parentNode)
265
- preloadLink.parentNode.removeChild(preloadLink);
266
- if (ppScript.parentNode)
267
- ppScript.parentNode.removeChild(ppScript);
268
- };
269
- }, []);
270
- // Put the (cached or freshly generated) onboarding URL on the button, then wait
271
- // for partner.js to be present before showing the button + initializing it. The
272
- // button is only revealed once partner.js is ready, which is what guarantees
273
- // the first click opens the mini-browser popup (never a new tab).
274
- const activatePayPal = (0, react_1.useCallback)((url, runId) => {
275
- if (paypalButtonRef.current) {
276
- paypalButtonRef.current.href = url;
277
- }
278
- setFinalUrl(url);
279
- let attempts = 0;
280
- const MAX_ATTEMPTS = 200; // ~10s
281
- const tryInit = () => {
282
- if (runId !== currentRunId.current)
283
- return;
284
- if (window.PAYPAL?.apps?.Signup) {
285
- initPartner();
286
- setConnState("ready");
287
- return;
288
- }
289
- attempts++;
290
- if (attempts >= MAX_ATTEMPTS) {
291
- showError("PayPal partner script failed to load. Please refresh and try again.");
292
- return;
293
- }
294
- setTimeout(tryInit, 50);
295
- };
296
- tryInit();
297
- }, [initPartner, showError]);
298
- const fetchFreshLink = (0, react_1.useCallback)(async (targetEnv, runId) => {
299
- if (initLoaderRef.current) {
300
- const loaderText = initLoaderRef.current.querySelector("#loader-text");
301
- if (loaderText)
302
- loaderText.textContent = "Generating onboarding session...";
303
- }
304
- try {
305
- const res = await fetch(SERVICE_URL, {
306
- method: "POST",
307
- headers: { "content-type": "application/json" },
308
- credentials: "include",
309
- body: JSON.stringify({ products: ["PPCP"], environment: targetEnv }),
310
- });
311
- if (!res.ok)
312
- throw new Error(`Service returned ${res.status}`);
313
- const data = await res.json();
314
- if (runId !== currentRunId.current)
315
- return;
316
- const href = data?.onboarding_url;
317
- if (!href) {
318
- showError("Onboarding URL not returned.");
319
- return;
320
- }
321
- const url = href + (href.includes("?") ? "&" : "?") + "displayMode=minibrowser";
322
- writeCachedUrl(targetEnv, url);
323
- activatePayPal(url, runId);
324
- }
325
- catch {
326
- if (runId !== currentRunId.current)
327
- return;
328
- showError("Unable to connect to service.");
329
- }
330
- }, [activatePayPal, showError]);
331
- // Resolve the server environment first.
332
- (0, react_1.useEffect)(() => {
333
- let alive = true;
334
- fetch(ENVIRONMENT_ENDPOINT, { method: "GET", credentials: "include" })
335
- .then((r) => r.json())
336
- .then((d) => {
337
- if (!alive)
338
- return;
339
- setEnv(d?.environment === "sandbox" ? "sandbox" : "live");
340
- })
341
- .catch(() => { })
342
- .finally(() => {
343
- if (alive)
344
- setEnvReady(true);
345
- });
346
- return () => {
347
- alive = false;
348
- };
349
- }, []);
350
- // Page-load flow: connected? -> cached link? -> else generate a fresh link.
351
- (0, react_1.useEffect)(() => {
352
- if (!envReady)
353
- return;
354
- currentRunId.current = ++runIdRef.current;
355
- const runId = currentRunId.current;
356
- let cancelled = false;
357
- completedRef.current = false;
358
- const run = async () => {
359
- setConnState("loading");
360
- setError(null);
361
- setFinalUrl("");
362
- try {
363
- const r = await fetch(`${STATUS_ENDPOINT}?environment=${env}`, {
364
- method: "GET",
365
- credentials: "include",
366
- });
367
- const st = await r.json().catch(() => ({}));
368
- if (cancelled || runId !== currentRunId.current)
369
- return;
370
- setStatusInfo(st);
371
- const isConnected = st?.status === "connected" && st?.seller_client_id_present === true;
372
- if (isConnected) {
373
- setConnState("connected");
374
- setShowManual(false);
375
- return;
376
- }
377
- }
378
- catch (e) {
379
- console.error(e);
380
- }
381
- if (cancelled || runId !== currentRunId.current)
382
- return;
383
- const cached = readCachedUrl(env);
384
- if (cached) {
385
- activatePayPal(cached, runId);
386
- return;
387
- }
388
- await fetchFreshLink(env, runId);
389
- };
390
- run();
391
- return () => {
392
- cancelled = true;
393
- };
394
- }, [env, envReady, fetchFreshLink, activatePayPal]);
395
- // partner.js invokes this by name (data-paypal-onboard-complete) once PayPal
396
- // returns the seller's authCode + sharedId.
397
- (0, react_1.useLayoutEffect)(() => {
398
- window.onboardingCallback = (authCode, sharedId) => {
399
- void completeOnboarding(authCode, sharedId);
400
- };
401
- return () => {
402
- window.onboardingCallback = undefined;
403
- };
404
- }, [completeOnboarding]);
405
- // The return_url bridge (/store/paypal/onboard-return), which runs inside the
406
- // popup after PayPal redirects to it, posts its params back here. The bridge has
407
- // already exchanged credentials server-side, so we just refresh status to flip
408
- // to "connected" and close the popup. If for some reason credentials aren't yet
409
- // saved but PayPal forwarded an authCode/sharedId, complete it from here too.
410
- (0, react_1.useEffect)(() => {
411
- const onMessage = (event) => {
412
- const data = event?.data;
413
- if (!data || data.source !== "paypal-onboarding-return")
414
- return;
415
- const params = data.params || {};
416
- const authCode = params.authCode || params.auth_code;
417
- const sharedId = params.sharedId || params.shared_id;
418
- const activeEnv = envRef.current;
419
- void (async () => {
420
- const connected = await refreshStatusAndMaybeConnect(activeEnv);
421
- if (!connected && authCode && sharedId) {
422
- await completeOnboarding(authCode, sharedId);
423
- }
424
- })();
425
- };
426
- window.addEventListener("message", onMessage);
427
- return () => window.removeEventListener("message", onMessage);
428
- }, [completeOnboarding, refreshStatusAndMaybeConnect]);
429
- // Always stop polling when the component unmounts.
430
- (0, react_1.useEffect)(() => stopStatusPolling, [stopStatusPolling]);
431
- (0, react_1.useLayoutEffect)(() => {
432
- const el = ppBtnMeasureRef.current;
433
- if (!el)
434
- return;
435
- const update = () => {
436
- const w = Math.round(el.getBoundingClientRect().width || 0);
437
- if (w > 0)
438
- setPpBtnWidth(w);
439
- };
440
- update();
441
- let ro = null;
442
- if (typeof ResizeObserver !== "undefined") {
443
- ro = new ResizeObserver(() => update());
444
- ro.observe(el);
445
- }
446
- else {
447
- window.addEventListener("resize", update);
448
- }
449
- return () => {
450
- if (ro)
451
- ro.disconnect();
452
- else
453
- window.removeEventListener("resize", update);
454
- };
455
- }, [connState, env, finalUrl]);
456
- // Only block the click while we are not ready; when ready, let the native click
457
- // through so partner.js can open the mini-browser. Start polling status so we
458
- // detect completion (and close the popup) even if no completion message reaches
459
- // this page.
460
- const handleConnectClick = (e) => {
461
- if (connState !== "ready" || !finalUrl || onboardingInProgress) {
462
- e.preventDefault();
463
- return;
464
- }
465
- completedRef.current = false;
466
- startStatusPolling();
467
- };
468
- const handleSaveManual = async () => {
469
- if (!canSaveManual || onboardingInProgress)
470
- return;
471
- setOnboardingInProgress(true);
472
- setConnState("loading");
473
- setError(null);
474
- try {
475
- const res = await fetch(SAVE_CREDENTIALS_ENDPOINT, {
476
- method: "POST",
477
- headers: { "content-type": "application/json" },
478
- credentials: "include",
479
- body: JSON.stringify({
480
- clientId: clientId.trim(),
481
- clientSecret: secret.trim(),
482
- environment: env,
483
- }),
484
- });
485
- if (!res.ok) {
486
- const txt = await res.text().catch(() => "");
487
- throw new Error(txt || `Save credentials failed (${res.status})`);
488
- }
489
- const statusRes = await fetch(`${STATUS_ENDPOINT}?environment=${env}`, {
490
- method: "GET",
491
- credentials: "include",
492
- });
493
- const refreshedStatus = await statusRes.json().catch(() => ({}));
494
- setConnState("connected");
495
- setStatusInfo(refreshedStatus || null);
496
- setShowManual(false);
497
- clearCachedUrl(env);
498
- }
499
- catch (e) {
500
- console.error(e);
501
- setConnState("error");
502
- setError(e?.message || "Failed to save credentials.");
503
- }
504
- finally {
505
- setOnboardingInProgress(false);
506
- }
507
- };
508
- const handleDisconnect = async () => {
509
- if (onboardingInProgress)
510
- return;
511
- if (!window.confirm("Disconnect PayPal for this environment?"))
512
- return;
513
- stopStatusPolling();
514
- setOnboardingInProgress(true);
515
- setConnState("loading");
516
- setError(null);
517
- setFinalUrl("");
518
- setShowManual(false);
519
- setStatusInfo(null);
520
- try {
521
- const res = await fetch(DISCONNECT_ENDPOINT, {
522
- method: "POST",
523
- headers: { "content-type": "application/json" },
524
- credentials: "include",
525
- body: JSON.stringify({ environment: env }),
526
- });
527
- if (!res.ok) {
528
- const t = await res.text().catch(() => "");
529
- throw new Error(t || `Disconnect failed (${res.status})`);
530
- }
531
- clearCachedUrl(env);
532
- completedRef.current = false;
533
- currentRunId.current = ++runIdRef.current;
534
- await fetchFreshLink(env, currentRunId.current);
535
- }
536
- catch (e) {
537
- console.error(e);
538
- setConnState("error");
539
- setError(e?.message || "Failed to disconnect.");
540
- }
541
- finally {
542
- setOnboardingInProgress(false);
543
- }
544
- };
545
- const handleEnvChange = async (e) => {
546
- const next = e.target.value;
547
- if (next === env || onboardingInProgress)
548
- return;
549
- stopStatusPolling();
550
- completedRef.current = false;
551
- clearCachedUrl();
552
- setConnState("loading");
553
- try {
554
- await fetch(ENVIRONMENT_ENDPOINT, {
555
- method: "POST",
556
- headers: { "content-type": "application/json" },
557
- credentials: "include",
558
- body: JSON.stringify({ environment: next }),
559
- });
560
- }
561
- catch { }
562
- setEnv(next);
563
- };
564
- return ((0, jsx_runtime_1.jsxs)("div", { className: "p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-6", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex items-start justify-between gap-4", children: (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("h1", { className: "text-xl font-semibold text-ui-fg-base", children: "PayPal Gateway By Easy Payment" }) }) }), (0, jsx_runtime_1.jsx)(Tabs_1.default, {}), (0, jsx_runtime_1.jsx)("div", { className: "rounded-xl border border-ui-border-base bg-ui-bg-base shadow-sm", children: (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-1 gap-y-6 p-4 md:grid-cols-[260px_1fr] md:items-start", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-sm font-medium pt-2", children: "Environment" }), (0, jsx_runtime_1.jsx)("div", { className: "max-w-xl", children: (0, jsx_runtime_1.jsxs)("select", { value: env, onChange: handleEnvChange, disabled: onboardingInProgress, className: "w-full rounded-md border border-ui-border-base bg-transparent px-3 py-2 text-sm", children: [(0, jsx_runtime_1.jsx)("option", { value: "sandbox", children: "Sandbox (Test Mode)" }), (0, jsx_runtime_1.jsx)("option", { value: "live", children: "Live (Production)" })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "text-sm font-medium pt-2", children: env === "sandbox" ? "Connect to PayPal (Sandbox)" : "Connect to PayPal" }), (0, jsx_runtime_1.jsx)("div", { className: "max-w-xl", children: connState === "connected" ? ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: "text-sm text-green-600 bg-green-50 p-3 rounded border border-green-200", children: ["\u2705 Successfully connected to PayPal!", (0, jsx_runtime_1.jsx)("a", { "data-paypal-button": "true", "data-paypal-onboard-complete": "onboardingCallback", href: "#", style: { display: "none" }, children: "PayPal" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-3 rounded-md border border-ui-border-base bg-ui-bg-subtle p-3 text-xs text-ui-fg-subtle", children: [(0, jsx_runtime_1.jsx)("div", { className: "font-medium text-ui-fg-base", children: "Connected PayPal account" }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-1", children: ["Email:", " ", (0, jsx_runtime_1.jsx)("span", { className: "font-mono text-ui-fg-base", children: statusInfo?.seller_email || "Unavailable" })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "mt-3 flex items-center gap-2", children: (0, jsx_runtime_1.jsx)("button", { type: "button", onClick: handleDisconnect, disabled: onboardingInProgress, className: "transition-fg relative inline-flex w-fit items-center justify-center overflow-hidden rounded-md outline-none shadow-buttons-neutral text-ui-fg-base bg-ui-button-neutral after:transition-fg after:absolute after:inset-0 after:content-[''] after:button-neutral-gradient hover:bg-ui-button-neutral-hover hover:after:button-neutral-hover-gradient active:bg-ui-button-neutral-pressed active:after:button-neutral-pressed-gradient focus-visible:shadow-buttons-neutral-focus disabled:bg-ui-bg-disabled disabled:border-ui-border-base disabled:text-ui-fg-disabled disabled:shadow-buttons-neutral disabled:after:hidden txt-compact-small-plus px-3 py-1.5", children: "Disconnect" }) })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { ref: initLoaderRef, id: "init-loader", className: `status-msg mb-4 ${connState !== "loading" ? "hidden" : "block"}`, children: [(0, jsx_runtime_1.jsx)("div", { className: "loader inline-block align-middle mr-2" }), (0, jsx_runtime_1.jsx)("span", { id: "loader-text", className: "text-sm", children: onboardingInProgress
565
- ? "Configuring connection to PayPal…"
566
- : "Checking connection..." })] }), (0, jsx_runtime_1.jsxs)("div", { className: `${connState === "ready" ? "block" : "hidden"}`, children: [(0, jsx_runtime_1.jsx)("a", { ref: (node) => {
567
- paypalButtonRef.current = node;
568
- ppBtnMeasureRef.current = node;
569
- }, id: "paypal-button", "data-paypal-button": "true", href: finalUrl || "#", "data-paypal-onboard-complete": "onboardingCallback", onClick: handleConnectClick, className: "transition-fg relative inline-flex w-fit items-center justify-center overflow-hidden rounded-md outline-none no-underline shadow-buttons-neutral text-ui-fg-base bg-ui-button-neutral after:transition-fg after:absolute after:inset-0 after:content-[''] after:button-neutral-gradient hover:bg-ui-button-neutral-hover hover:after:button-neutral-hover-gradient active:bg-ui-button-neutral-pressed active:after:button-neutral-pressed-gradient focus-visible:shadow-buttons-neutral-focus disabled:bg-ui-bg-disabled disabled:border-ui-border-base disabled:text-ui-fg-disabled disabled:shadow-buttons-neutral disabled:after:hidden txt-compact-small-plus px-3 py-1.5", style: {
570
- cursor: onboardingInProgress ? "not-allowed" : "pointer",
571
- opacity: onboardingInProgress ? 0.6 : 1,
572
- pointerEvents: onboardingInProgress ? "none" : "auto",
573
- }, children: "Connect to PayPal" }), (0, jsx_runtime_1.jsx)("div", { className: "mt-2", style: {
574
- width: ppBtnWidth ? `${ppBtnWidth}px` : "auto",
575
- marginTop: "20px",
576
- marginBottom: "10px",
577
- }, children: (0, jsx_runtime_1.jsx)("div", { className: "flex justify-center", children: (0, jsx_runtime_1.jsx)("span", { className: "text-[11px] text-ui-fg-muted leading-none", children: "OR" }) }) }), (0, jsx_runtime_1.jsx)("div", { className: "mt-1", children: (0, jsx_runtime_1.jsx)("button", { type: "button", onClick: () => setShowManual(!showManual), disabled: onboardingInProgress, className: "text-sm text-ui-fg-interactive underline whitespace-nowrap disabled:opacity-50 disabled:cursor-not-allowed", children: "Click here to insert credentials manually" }) })] }), (0, jsx_runtime_1.jsx)("div", { className: `${connState === "ready" ? "hidden" : "block"} mt-3`, children: (0, jsx_runtime_1.jsx)("button", { type: "button", onClick: () => setShowManual(!showManual), disabled: onboardingInProgress, className: "text-sm text-ui-fg-interactive underline whitespace-nowrap disabled:opacity-50 disabled:cursor-not-allowed", children: "Click here to insert credentials manually" }) }), (0, jsx_runtime_1.jsx)("div", { ref: errorLogRef, id: "error-log", className: `mt-4 text-left text-xs bg-red-50 text-red-600 p-3 border border-red-200 rounded ${connState === "error" && error ? "block" : "hidden"}`, children: error })] })) }), showManual && ((0, jsx_runtime_1.jsx)("div", { className: "md:col-span-2", children: (0, jsx_runtime_1.jsxs)("div", { className: "ml-[260px] max-w-xl mt-4 grid grid-cols-1 gap-3 md:grid-cols-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-1", children: [(0, jsx_runtime_1.jsx)("label", { htmlFor: "pp-manual-client-id", className: "text-sm font-medium", children: "Client ID" }), (0, jsx_runtime_1.jsx)("input", { id: "pp-manual-client-id", type: "text", value: clientId, onChange: (e) => setClientId(e.target.value), disabled: onboardingInProgress, className: "rounded-md border border-ui-border-base bg-transparent px-3 py-2 text-sm disabled:opacity-50", placeholder: env === "sandbox" ? "Sandbox Client ID" : "Live Client ID" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-1", children: [(0, jsx_runtime_1.jsx)("label", { htmlFor: "pp-manual-secret", className: "text-sm font-medium", children: "Secret" }), (0, jsx_runtime_1.jsx)("input", { id: "pp-manual-secret", type: "password", value: secret, onChange: (e) => setSecret(e.target.value), disabled: onboardingInProgress, className: "rounded-md border border-ui-border-base bg-transparent px-3 py-2 text-sm disabled:opacity-50", placeholder: env === "sandbox" ? "Sandbox Secret" : "Live Secret" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "md:col-span-2 rounded-md border border-ui-border-base bg-ui-bg-subtle p-4 text-sm text-ui-fg-subtle", children: [(0, jsx_runtime_1.jsx)("p", { className: "font-medium text-ui-fg-base", children: "Get your Client ID and Secret in 3 steps:" }), (0, jsx_runtime_1.jsxs)("ol", { className: "mt-2 list-decimal space-y-2 pl-5", children: [(0, jsx_runtime_1.jsxs)("li", { children: ["Open", " ", (0, jsx_runtime_1.jsx)("a", { href: "https://developer.paypal.com/dashboard/", target: "_blank", rel: "noreferrer", className: "text-ui-fg-interactive underline", children: "Log in to Dashboard" }), " ", "and sign in or create an account."] }), (0, jsx_runtime_1.jsxs)("li", { children: ["Select ", (0, jsx_runtime_1.jsx)("span", { className: "font-medium text-ui-fg-base", children: "Apps & Credentials" }), ", then choose ", (0, jsx_runtime_1.jsx)("span", { className: "font-medium text-ui-fg-base", children: "Create App" }), " if you need a new project."] }), (0, jsx_runtime_1.jsxs)("li", { children: ["Copy your app's ", (0, jsx_runtime_1.jsx)("span", { className: "font-medium text-ui-fg-base", children: "Client ID" }), " and ", (0, jsx_runtime_1.jsx)("span", { className: "font-medium text-ui-fg-base", children: "Secret" }), ", paste them above, then click ", (0, jsx_runtime_1.jsx)("span", { className: "font-medium text-ui-fg-base", children: "Save credentials" }), "."] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "md:col-span-2 flex items-center gap-2 mt-2", children: [(0, jsx_runtime_1.jsx)("button", { type: "button", className: "transition-fg relative inline-flex w-fit items-center justify-center overflow-hidden rounded-md outline-none shadow-buttons-neutral text-ui-fg-base bg-ui-button-neutral after:transition-fg after:absolute after:inset-0 after:content-[''] after:button-neutral-gradient hover:bg-ui-button-neutral-hover hover:after:button-neutral-hover-gradient active:bg-ui-button-neutral-pressed active:after:button-neutral-pressed-gradient focus-visible:shadow-buttons-neutral-focus disabled:bg-ui-bg-disabled disabled:border-ui-border-base disabled:text-ui-fg-disabled disabled:shadow-buttons-neutral disabled:after:hidden txt-compact-small-plus px-3 py-1.5", onClick: () => setShowManual(false), disabled: onboardingInProgress, children: "Cancel" }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: "transition-fg relative inline-flex w-fit items-center justify-center overflow-hidden rounded-md outline-none shadow-buttons-neutral text-ui-fg-base bg-ui-button-neutral after:transition-fg after:absolute after:inset-0 after:content-[''] after:button-neutral-gradient hover:bg-ui-button-neutral-hover hover:after:button-neutral-hover-gradient active:bg-ui-button-neutral-pressed active:after:button-neutral-pressed-gradient focus-visible:shadow-buttons-neutral-focus disabled:bg-ui-bg-disabled disabled:border-ui-border-base disabled:text-ui-fg-disabled disabled:shadow-buttons-neutral disabled:after:hidden txt-compact-small-plus px-3 py-1.5", disabled: !canSaveManual || onboardingInProgress, onClick: handleSaveManual, children: "Save credentials" })] })] }) }))] }) })] }), (0, jsx_runtime_1.jsx)("style", { children: `
578
- .loader {
579
- border: 3px solid #f3f3f3;
580
- border-top: 3px solid #0070ba;
581
- border-radius: 50%;
582
- width: 18px;
583
- height: 18px;
584
- animation: spin 1s linear infinite;
585
- display: inline-block;
586
- vertical-align: middle;
587
- margin-right: 8px;
588
- }
589
- @keyframes spin {
590
- 0% { transform: rotate(0deg); }
591
- 100% { transform: rotate(360deg); }
592
- }
593
- ` })] }));
594
- }
595
- //# sourceMappingURL=page.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../../../../../src/admin/routes/settings/paypal/connection/page.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export default function PayPalGooglePayPage(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=page.d.ts.map