@easypayment/medusa-payment-paypal 0.9.19 → 0.9.21
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.
- package/.medusa/server/src/admin/index.js +83 -92
- package/.medusa/server/src/admin/index.mjs +83 -92
- package/.medusa/server/src/admin/routes/settings/paypal/connection/page.d.ts.map +1 -1
- package/.medusa/server/src/admin/routes/settings/paypal/connection/page.js +55 -45
- package/.medusa/server/src/admin/routes/settings/paypal/connection/page.js.map +1 -1
- package/package.json +1 -1
- package/src/admin/routes/settings/paypal/connection/page.tsx +60 -49
|
@@ -134,20 +134,22 @@ async function adminFetch(path, opts = {}) {
|
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
const DEFAULT_FORM$1 = {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
requireInstantPayment: false,
|
|
141
|
-
sendItemDetails: true,
|
|
142
|
-
invoicePrefix: "PP-",
|
|
143
|
-
creditCardStatementName: "PayPal"
|
|
137
|
+
enabled: true,
|
|
138
|
+
title: "Credit or Debit Card",
|
|
139
|
+
threeDS: "when_required"
|
|
144
140
|
};
|
|
145
141
|
function mergeWithDefaults$1(saved) {
|
|
146
142
|
if (!saved) return { ...DEFAULT_FORM$1 };
|
|
147
143
|
const entries = Object.entries(saved).filter(([, value]) => value !== void 0);
|
|
148
144
|
return { ...DEFAULT_FORM$1, ...Object.fromEntries(entries) };
|
|
149
145
|
}
|
|
150
|
-
|
|
146
|
+
const THREE_DS_OPTIONS = [
|
|
147
|
+
{ value: "when_required", label: "3D Secure when required", hint: "Triggers 3DS only when the card / issuer requires it." },
|
|
148
|
+
{ value: "sli", label: "3D Secure (SCA) / liability shift (recommended)", hint: "Attempts to optimize for liability shift while remaining compliant." },
|
|
149
|
+
{ value: "always", label: "Always request 3D Secure", hint: "Forces 3DS challenge whenever possible (may reduce conversion)." }
|
|
150
|
+
];
|
|
151
|
+
function AdvancedCardPaymentsTab() {
|
|
152
|
+
var _a, _b;
|
|
151
153
|
const [form, setForm] = react.useState(() => ({ ...DEFAULT_FORM$1 }));
|
|
152
154
|
const [loading, setLoading] = react.useState(false);
|
|
153
155
|
const [saving, setSaving] = react.useState(false);
|
|
@@ -162,7 +164,7 @@ function AdditionalSettingsTab() {
|
|
|
162
164
|
setLoading(true);
|
|
163
165
|
const json = await adminFetch("/admin/paypal/settings");
|
|
164
166
|
const payload = (json == null ? void 0 : json.data) ?? json;
|
|
165
|
-
const saved = payload == null ? void 0 : payload.
|
|
167
|
+
const saved = payload == null ? void 0 : payload.advanced_card_payments;
|
|
166
168
|
if (saved && typeof saved === "object") setForm(mergeWithDefaults$1(saved));
|
|
167
169
|
} catch {
|
|
168
170
|
} finally {
|
|
@@ -173,14 +175,16 @@ function AdditionalSettingsTab() {
|
|
|
173
175
|
async function onSave() {
|
|
174
176
|
try {
|
|
175
177
|
setSaving(true);
|
|
176
|
-
|
|
177
|
-
|
|
178
|
+
const json = await adminFetch("/admin/paypal/settings", {
|
|
179
|
+
method: "POST",
|
|
180
|
+
body: { advanced_card_payments: form }
|
|
181
|
+
});
|
|
178
182
|
const payload = (json == null ? void 0 : json.data) ?? json;
|
|
179
|
-
const saved = payload == null ? void 0 : payload.
|
|
183
|
+
const saved = payload == null ? void 0 : payload.advanced_card_payments;
|
|
180
184
|
if (saved && typeof saved === "object") setForm(mergeWithDefaults$1(saved));
|
|
181
185
|
setToast({ kind: "success", message: "Settings saved" });
|
|
182
186
|
} catch (e) {
|
|
183
|
-
setToast({ kind: "error", message: e instanceof Error ? e.message : "Failed to save settings" });
|
|
187
|
+
setToast({ kind: "error", message: (e instanceof Error ? e.message : "") || "Failed to save settings." });
|
|
184
188
|
} finally {
|
|
185
189
|
setSaving(false);
|
|
186
190
|
}
|
|
@@ -192,55 +196,42 @@ function AdditionalSettingsTab() {
|
|
|
192
196
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
193
197
|
SectionCard,
|
|
194
198
|
{
|
|
195
|
-
title: "
|
|
196
|
-
description: "
|
|
199
|
+
title: "Advanced Card Payments",
|
|
200
|
+
description: "Control card checkout settings and 3D Secure behavior.",
|
|
197
201
|
right: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
198
202
|
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: onSave, disabled: saving || loading, 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: saving ? "Saving..." : "Save settings" }),
|
|
199
203
|
loading ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-subtle", children: "Loading…" }) : null
|
|
200
204
|
] }),
|
|
201
205
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "divide-y divide-ui-border-base", children: [
|
|
202
|
-
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "
|
|
203
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
204
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
205
|
-
] }) }),
|
|
206
|
-
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Brand Name", htmlFor: "as-brand-name", children: /* @__PURE__ */ jsxRuntime.jsx("input", { id: "as-brand-name", value: form.brandName, onChange: (e) => setForm((p) => ({ ...p, brandName: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "PayPal" }) }),
|
|
207
|
-
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Landing Page", htmlFor: "as-landing-page", children: /* @__PURE__ */ jsxRuntime.jsxs("select", { id: "as-landing-page", value: form.landingPage, onChange: (e) => setForm((p) => ({ ...p, landingPage: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", children: [
|
|
208
|
-
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "no_preference", children: "No Preference" }),
|
|
209
|
-
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "login", children: "Login" }),
|
|
210
|
-
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "billing", children: "Billing" })
|
|
211
|
-
] }) }),
|
|
212
|
-
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Instant Payments", children: /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2", children: [
|
|
213
|
-
/* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: form.requireInstantPayment, onChange: (e) => setForm((p) => ({ ...p, requireInstantPayment: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
|
|
214
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-base", children: "Require Instant Payment" })
|
|
215
|
-
] }) }),
|
|
216
|
-
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Send Item Details", hint: "Include all line item details in the payment request to PayPal so that they can be seen from the PayPal transaction details page.", children: /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2", children: [
|
|
217
|
-
/* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: form.sendItemDetails, onChange: (e) => setForm((p) => ({ ...p, sendItemDetails: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
|
|
218
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-base", children: "Send line item details to PayPal" })
|
|
206
|
+
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Enable/Disable", children: /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2", children: [
|
|
207
|
+
/* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: form.enabled, onChange: (e) => setForm((p) => ({ ...p, enabled: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
|
|
208
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-base", children: "Enable Advanced Credit/Debit Card" })
|
|
219
209
|
] }) }),
|
|
220
|
-
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "
|
|
221
|
-
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "
|
|
210
|
+
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Title", htmlFor: "acp-title", children: /* @__PURE__ */ jsxRuntime.jsx("input", { id: "acp-title", value: form.title, onChange: (e) => setForm((p) => ({ ...p, title: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "Credit or Debit Card" }) }),
|
|
211
|
+
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Contingency for 3D Secure", hint: "Choose when 3D Secure should be triggered during card payments.", htmlFor: "acp-threeds", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
212
|
+
/* @__PURE__ */ jsxRuntime.jsx("select", { id: "acp-threeds", value: form.threeDS, onChange: (e) => setForm((p) => ({ ...p, threeDS: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", children: THREE_DS_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: o.label }, o.value)) }),
|
|
213
|
+
((_a = THREE_DS_OPTIONS.find((o) => o.value === form.threeDS)) == null ? void 0 : _a.hint) ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-ui-fg-subtle", children: (_b = THREE_DS_OPTIONS.find((o) => o.value === form.threeDS)) == null ? void 0 : _b.hint }) : null
|
|
214
|
+
] }) })
|
|
222
215
|
] })
|
|
223
216
|
}
|
|
224
217
|
)
|
|
225
218
|
] }) });
|
|
226
219
|
}
|
|
227
220
|
const DEFAULT_FORM = {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
221
|
+
paymentAction: "capture",
|
|
222
|
+
brandName: "PayPal",
|
|
223
|
+
landingPage: "no_preference",
|
|
224
|
+
requireInstantPayment: false,
|
|
225
|
+
sendItemDetails: true,
|
|
226
|
+
invoicePrefix: "PP-",
|
|
227
|
+
creditCardStatementName: "PayPal"
|
|
231
228
|
};
|
|
232
229
|
function mergeWithDefaults(saved) {
|
|
233
230
|
if (!saved) return { ...DEFAULT_FORM };
|
|
234
231
|
const entries = Object.entries(saved).filter(([, value]) => value !== void 0);
|
|
235
232
|
return { ...DEFAULT_FORM, ...Object.fromEntries(entries) };
|
|
236
233
|
}
|
|
237
|
-
|
|
238
|
-
{ value: "when_required", label: "3D Secure when required", hint: "Triggers 3DS only when the card / issuer requires it." },
|
|
239
|
-
{ value: "sli", label: "3D Secure (SCA) / liability shift (recommended)", hint: "Attempts to optimize for liability shift while remaining compliant." },
|
|
240
|
-
{ value: "always", label: "Always request 3D Secure", hint: "Forces 3DS challenge whenever possible (may reduce conversion)." }
|
|
241
|
-
];
|
|
242
|
-
function AdvancedCardPaymentsTab() {
|
|
243
|
-
var _a, _b;
|
|
234
|
+
function AdditionalSettingsTab() {
|
|
244
235
|
const [form, setForm] = react.useState(() => ({ ...DEFAULT_FORM }));
|
|
245
236
|
const [loading, setLoading] = react.useState(false);
|
|
246
237
|
const [saving, setSaving] = react.useState(false);
|
|
@@ -255,7 +246,7 @@ function AdvancedCardPaymentsTab() {
|
|
|
255
246
|
setLoading(true);
|
|
256
247
|
const json = await adminFetch("/admin/paypal/settings");
|
|
257
248
|
const payload = (json == null ? void 0 : json.data) ?? json;
|
|
258
|
-
const saved = payload == null ? void 0 : payload.
|
|
249
|
+
const saved = payload == null ? void 0 : payload.additional_settings;
|
|
259
250
|
if (saved && typeof saved === "object") setForm(mergeWithDefaults(saved));
|
|
260
251
|
} catch {
|
|
261
252
|
} finally {
|
|
@@ -266,16 +257,14 @@ function AdvancedCardPaymentsTab() {
|
|
|
266
257
|
async function onSave() {
|
|
267
258
|
try {
|
|
268
259
|
setSaving(true);
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
body: { advanced_card_payments: form }
|
|
272
|
-
});
|
|
260
|
+
setToast(null);
|
|
261
|
+
const json = await adminFetch("/admin/paypal/settings", { method: "POST", body: { additional_settings: form } });
|
|
273
262
|
const payload = (json == null ? void 0 : json.data) ?? json;
|
|
274
|
-
const saved = payload == null ? void 0 : payload.
|
|
263
|
+
const saved = payload == null ? void 0 : payload.additional_settings;
|
|
275
264
|
if (saved && typeof saved === "object") setForm(mergeWithDefaults(saved));
|
|
276
265
|
setToast({ kind: "success", message: "Settings saved" });
|
|
277
266
|
} catch (e) {
|
|
278
|
-
setToast({ kind: "error", message:
|
|
267
|
+
setToast({ kind: "error", message: e instanceof Error ? e.message : "Failed to save settings" });
|
|
279
268
|
} finally {
|
|
280
269
|
setSaving(false);
|
|
281
270
|
}
|
|
@@ -287,22 +276,33 @@ function AdvancedCardPaymentsTab() {
|
|
|
287
276
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
288
277
|
SectionCard,
|
|
289
278
|
{
|
|
290
|
-
title: "
|
|
291
|
-
description: "
|
|
279
|
+
title: "Additional Settings",
|
|
280
|
+
description: "These settings control checkout behavior and PayPal experience.",
|
|
292
281
|
right: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
293
282
|
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: onSave, disabled: saving || loading, 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: saving ? "Saving..." : "Save settings" }),
|
|
294
283
|
loading ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-subtle", children: "Loading…" }) : null
|
|
295
284
|
] }),
|
|
296
285
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "divide-y divide-ui-border-base", children: [
|
|
297
|
-
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "
|
|
298
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
299
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
286
|
+
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Payment action", htmlFor: "as-payment-action", children: /* @__PURE__ */ jsxRuntime.jsxs("select", { id: "as-payment-action", value: form.paymentAction, onChange: (e) => setForm((p) => ({ ...p, paymentAction: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", children: [
|
|
287
|
+
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "capture", children: "Capture" }),
|
|
288
|
+
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "authorize", children: "Authorize" })
|
|
300
289
|
] }) }),
|
|
301
|
-
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "
|
|
302
|
-
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "
|
|
303
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
304
|
-
|
|
305
|
-
|
|
290
|
+
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Brand Name", htmlFor: "as-brand-name", children: /* @__PURE__ */ jsxRuntime.jsx("input", { id: "as-brand-name", value: form.brandName, onChange: (e) => setForm((p) => ({ ...p, brandName: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "PayPal" }) }),
|
|
291
|
+
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Landing Page", htmlFor: "as-landing-page", children: /* @__PURE__ */ jsxRuntime.jsxs("select", { id: "as-landing-page", value: form.landingPage, onChange: (e) => setForm((p) => ({ ...p, landingPage: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", children: [
|
|
292
|
+
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "no_preference", children: "No Preference" }),
|
|
293
|
+
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "login", children: "Login" }),
|
|
294
|
+
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "billing", children: "Billing" })
|
|
295
|
+
] }) }),
|
|
296
|
+
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Instant Payments", children: /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2", children: [
|
|
297
|
+
/* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: form.requireInstantPayment, onChange: (e) => setForm((p) => ({ ...p, requireInstantPayment: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
|
|
298
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-base", children: "Require Instant Payment" })
|
|
299
|
+
] }) }),
|
|
300
|
+
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Send Item Details", hint: "Include all line item details in the payment request to PayPal so that they can be seen from the PayPal transaction details page.", children: /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2", children: [
|
|
301
|
+
/* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: form.sendItemDetails, onChange: (e) => setForm((p) => ({ ...p, sendItemDetails: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
|
|
302
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-base", children: "Send line item details to PayPal" })
|
|
303
|
+
] }) }),
|
|
304
|
+
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Invoice prefix", htmlFor: "as-invoice-prefix", children: /* @__PURE__ */ jsxRuntime.jsx("input", { id: "as-invoice-prefix", value: form.invoicePrefix, onChange: (e) => setForm((p) => ({ ...p, invoicePrefix: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "PP-" }) }),
|
|
305
|
+
/* @__PURE__ */ jsxRuntime.jsx(FieldRow, { label: "Credit Card Statement Name", htmlFor: "as-cc-statement", children: /* @__PURE__ */ jsxRuntime.jsx("input", { id: "as-cc-statement", value: form.creditCardStatementName, onChange: (e) => setForm((p) => ({ ...p, creditCardStatementName: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "PayPal" }) })
|
|
306
306
|
] })
|
|
307
307
|
}
|
|
308
308
|
)
|
|
@@ -322,7 +322,7 @@ const PARTNER_JS_URLS = {
|
|
|
322
322
|
live: "https://www.paypal.com/webapps/merchantboarding/js/lib/lightbox/partner.js"
|
|
323
323
|
};
|
|
324
324
|
const SERVICE_URL = "/admin/paypal/onboarding-link";
|
|
325
|
-
const POPUP_NAME = "
|
|
325
|
+
const POPUP_NAME = "PPFrame";
|
|
326
326
|
const CACHE_PREFIX = "pp_onboard_cache";
|
|
327
327
|
const CACHE_EXPIRY = 10 * 60 * 1e3;
|
|
328
328
|
const ONBOARDING_COMPLETE_ENDPOINT = "/admin/paypal/onboard-complete";
|
|
@@ -484,18 +484,6 @@ function PayPalConnectionPage() {
|
|
|
484
484
|
},
|
|
485
485
|
[stopPopupPoll]
|
|
486
486
|
);
|
|
487
|
-
const openConnect = react.useCallback(() => {
|
|
488
|
-
if (connStateRef.current !== "ready" || !finalUrlRef.current || inProgressRef.current) {
|
|
489
|
-
return;
|
|
490
|
-
}
|
|
491
|
-
completedRef.current = false;
|
|
492
|
-
const popup = openOnboardingPopup(finalUrlRef.current);
|
|
493
|
-
if (!popup) {
|
|
494
|
-
setPopupBlocked(true);
|
|
495
|
-
return;
|
|
496
|
-
}
|
|
497
|
-
setPopupBlocked(false);
|
|
498
|
-
}, [openOnboardingPopup]);
|
|
499
487
|
const completeOnboarding = react.useCallback(
|
|
500
488
|
async (authCode, sharedId) => {
|
|
501
489
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
@@ -739,19 +727,6 @@ function PayPalConnectionPage() {
|
|
|
739
727
|
stopPopupPoll();
|
|
740
728
|
};
|
|
741
729
|
}, [stopPopupPoll]);
|
|
742
|
-
react.useEffect(() => {
|
|
743
|
-
const onCaptureClick = (e) => {
|
|
744
|
-
const btn = paypalButtonRef.current;
|
|
745
|
-
if (!btn) return;
|
|
746
|
-
const target = e.target;
|
|
747
|
-
if (!target || !btn.contains(target)) return;
|
|
748
|
-
e.preventDefault();
|
|
749
|
-
e.stopImmediatePropagation();
|
|
750
|
-
openConnect();
|
|
751
|
-
};
|
|
752
|
-
document.addEventListener("click", onCaptureClick, true);
|
|
753
|
-
return () => document.removeEventListener("click", onCaptureClick, true);
|
|
754
|
-
}, [openConnect]);
|
|
755
730
|
react.useLayoutEffect(() => {
|
|
756
731
|
const el = ppBtnMeasureRef.current;
|
|
757
732
|
if (!el) return;
|
|
@@ -772,9 +747,25 @@ function PayPalConnectionPage() {
|
|
|
772
747
|
else window.removeEventListener("resize", update);
|
|
773
748
|
};
|
|
774
749
|
}, [connState, env, finalUrl]);
|
|
750
|
+
react.useEffect(() => {
|
|
751
|
+
const onCaptureClick = (e) => {
|
|
752
|
+
const btn = paypalButtonRef.current;
|
|
753
|
+
if (!btn) return;
|
|
754
|
+
const target = e.target;
|
|
755
|
+
if (!target || !btn.contains(target)) return;
|
|
756
|
+
e.preventDefault();
|
|
757
|
+
if (connStateRef.current !== "ready" || !finalUrlRef.current || inProgressRef.current) {
|
|
758
|
+
return;
|
|
759
|
+
}
|
|
760
|
+
completedRef.current = false;
|
|
761
|
+
const popup = openOnboardingPopup(finalUrlRef.current);
|
|
762
|
+
setPopupBlocked(!popup);
|
|
763
|
+
};
|
|
764
|
+
document.addEventListener("click", onCaptureClick, true);
|
|
765
|
+
return () => document.removeEventListener("click", onCaptureClick, true);
|
|
766
|
+
}, [openOnboardingPopup]);
|
|
775
767
|
const handleConnectClick = (e) => {
|
|
776
768
|
e.preventDefault();
|
|
777
|
-
openConnect();
|
|
778
769
|
};
|
|
779
770
|
const handleSaveManual = async () => {
|
|
780
771
|
if (!canSaveManual || onboardingInProgress) return;
|
|
@@ -1311,14 +1302,14 @@ const routeModule = {
|
|
|
1311
1302
|
Component: PayPalSettingsIndexRoute,
|
|
1312
1303
|
path: "/settings/paypal"
|
|
1313
1304
|
},
|
|
1314
|
-
{
|
|
1315
|
-
Component: AdditionalSettingsTab,
|
|
1316
|
-
path: "/settings/paypal/additional-settings"
|
|
1317
|
-
},
|
|
1318
1305
|
{
|
|
1319
1306
|
Component: AdvancedCardPaymentsTab,
|
|
1320
1307
|
path: "/settings/paypal/advanced-card-payments"
|
|
1321
1308
|
},
|
|
1309
|
+
{
|
|
1310
|
+
Component: AdditionalSettingsTab,
|
|
1311
|
+
path: "/settings/paypal/additional-settings"
|
|
1312
|
+
},
|
|
1322
1313
|
{
|
|
1323
1314
|
Component: PayPalApplePayPage,
|
|
1324
1315
|
path: "/settings/paypal/apple-pay"
|
|
@@ -133,20 +133,22 @@ async function adminFetch(path, opts = {}) {
|
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
const DEFAULT_FORM$1 = {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
requireInstantPayment: false,
|
|
140
|
-
sendItemDetails: true,
|
|
141
|
-
invoicePrefix: "PP-",
|
|
142
|
-
creditCardStatementName: "PayPal"
|
|
136
|
+
enabled: true,
|
|
137
|
+
title: "Credit or Debit Card",
|
|
138
|
+
threeDS: "when_required"
|
|
143
139
|
};
|
|
144
140
|
function mergeWithDefaults$1(saved) {
|
|
145
141
|
if (!saved) return { ...DEFAULT_FORM$1 };
|
|
146
142
|
const entries = Object.entries(saved).filter(([, value]) => value !== void 0);
|
|
147
143
|
return { ...DEFAULT_FORM$1, ...Object.fromEntries(entries) };
|
|
148
144
|
}
|
|
149
|
-
|
|
145
|
+
const THREE_DS_OPTIONS = [
|
|
146
|
+
{ value: "when_required", label: "3D Secure when required", hint: "Triggers 3DS only when the card / issuer requires it." },
|
|
147
|
+
{ value: "sli", label: "3D Secure (SCA) / liability shift (recommended)", hint: "Attempts to optimize for liability shift while remaining compliant." },
|
|
148
|
+
{ value: "always", label: "Always request 3D Secure", hint: "Forces 3DS challenge whenever possible (may reduce conversion)." }
|
|
149
|
+
];
|
|
150
|
+
function AdvancedCardPaymentsTab() {
|
|
151
|
+
var _a, _b;
|
|
150
152
|
const [form, setForm] = useState(() => ({ ...DEFAULT_FORM$1 }));
|
|
151
153
|
const [loading, setLoading] = useState(false);
|
|
152
154
|
const [saving, setSaving] = useState(false);
|
|
@@ -161,7 +163,7 @@ function AdditionalSettingsTab() {
|
|
|
161
163
|
setLoading(true);
|
|
162
164
|
const json = await adminFetch("/admin/paypal/settings");
|
|
163
165
|
const payload = (json == null ? void 0 : json.data) ?? json;
|
|
164
|
-
const saved = payload == null ? void 0 : payload.
|
|
166
|
+
const saved = payload == null ? void 0 : payload.advanced_card_payments;
|
|
165
167
|
if (saved && typeof saved === "object") setForm(mergeWithDefaults$1(saved));
|
|
166
168
|
} catch {
|
|
167
169
|
} finally {
|
|
@@ -172,14 +174,16 @@ function AdditionalSettingsTab() {
|
|
|
172
174
|
async function onSave() {
|
|
173
175
|
try {
|
|
174
176
|
setSaving(true);
|
|
175
|
-
|
|
176
|
-
|
|
177
|
+
const json = await adminFetch("/admin/paypal/settings", {
|
|
178
|
+
method: "POST",
|
|
179
|
+
body: { advanced_card_payments: form }
|
|
180
|
+
});
|
|
177
181
|
const payload = (json == null ? void 0 : json.data) ?? json;
|
|
178
|
-
const saved = payload == null ? void 0 : payload.
|
|
182
|
+
const saved = payload == null ? void 0 : payload.advanced_card_payments;
|
|
179
183
|
if (saved && typeof saved === "object") setForm(mergeWithDefaults$1(saved));
|
|
180
184
|
setToast({ kind: "success", message: "Settings saved" });
|
|
181
185
|
} catch (e) {
|
|
182
|
-
setToast({ kind: "error", message: e instanceof Error ? e.message : "Failed to save settings" });
|
|
186
|
+
setToast({ kind: "error", message: (e instanceof Error ? e.message : "") || "Failed to save settings." });
|
|
183
187
|
} finally {
|
|
184
188
|
setSaving(false);
|
|
185
189
|
}
|
|
@@ -191,55 +195,42 @@ function AdditionalSettingsTab() {
|
|
|
191
195
|
/* @__PURE__ */ jsx(
|
|
192
196
|
SectionCard,
|
|
193
197
|
{
|
|
194
|
-
title: "
|
|
195
|
-
description: "
|
|
198
|
+
title: "Advanced Card Payments",
|
|
199
|
+
description: "Control card checkout settings and 3D Secure behavior.",
|
|
196
200
|
right: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
197
201
|
/* @__PURE__ */ jsx("button", { type: "button", onClick: onSave, disabled: saving || loading, 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: saving ? "Saving..." : "Save settings" }),
|
|
198
202
|
loading ? /* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-subtle", children: "Loading…" }) : null
|
|
199
203
|
] }),
|
|
200
204
|
children: /* @__PURE__ */ jsxs("div", { className: "divide-y divide-ui-border-base", children: [
|
|
201
|
-
/* @__PURE__ */ jsx(FieldRow, { label: "
|
|
202
|
-
/* @__PURE__ */ jsx("
|
|
203
|
-
/* @__PURE__ */ jsx("
|
|
204
|
-
] }) }),
|
|
205
|
-
/* @__PURE__ */ jsx(FieldRow, { label: "Brand Name", htmlFor: "as-brand-name", children: /* @__PURE__ */ jsx("input", { id: "as-brand-name", value: form.brandName, onChange: (e) => setForm((p) => ({ ...p, brandName: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "PayPal" }) }),
|
|
206
|
-
/* @__PURE__ */ jsx(FieldRow, { label: "Landing Page", htmlFor: "as-landing-page", children: /* @__PURE__ */ jsxs("select", { id: "as-landing-page", value: form.landingPage, onChange: (e) => setForm((p) => ({ ...p, landingPage: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", children: [
|
|
207
|
-
/* @__PURE__ */ jsx("option", { value: "no_preference", children: "No Preference" }),
|
|
208
|
-
/* @__PURE__ */ jsx("option", { value: "login", children: "Login" }),
|
|
209
|
-
/* @__PURE__ */ jsx("option", { value: "billing", children: "Billing" })
|
|
210
|
-
] }) }),
|
|
211
|
-
/* @__PURE__ */ jsx(FieldRow, { label: "Instant Payments", children: /* @__PURE__ */ jsxs("label", { className: "inline-flex items-center gap-2", children: [
|
|
212
|
-
/* @__PURE__ */ jsx("input", { type: "checkbox", checked: form.requireInstantPayment, onChange: (e) => setForm((p) => ({ ...p, requireInstantPayment: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
|
|
213
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-base", children: "Require Instant Payment" })
|
|
214
|
-
] }) }),
|
|
215
|
-
/* @__PURE__ */ jsx(FieldRow, { label: "Send Item Details", hint: "Include all line item details in the payment request to PayPal so that they can be seen from the PayPal transaction details page.", children: /* @__PURE__ */ jsxs("label", { className: "inline-flex items-center gap-2", children: [
|
|
216
|
-
/* @__PURE__ */ jsx("input", { type: "checkbox", checked: form.sendItemDetails, onChange: (e) => setForm((p) => ({ ...p, sendItemDetails: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
|
|
217
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-base", children: "Send line item details to PayPal" })
|
|
205
|
+
/* @__PURE__ */ jsx(FieldRow, { label: "Enable/Disable", children: /* @__PURE__ */ jsxs("label", { className: "inline-flex items-center gap-2", children: [
|
|
206
|
+
/* @__PURE__ */ jsx("input", { type: "checkbox", checked: form.enabled, onChange: (e) => setForm((p) => ({ ...p, enabled: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
|
|
207
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-base", children: "Enable Advanced Credit/Debit Card" })
|
|
218
208
|
] }) }),
|
|
219
|
-
/* @__PURE__ */ jsx(FieldRow, { label: "
|
|
220
|
-
/* @__PURE__ */ jsx(FieldRow, { label: "
|
|
209
|
+
/* @__PURE__ */ jsx(FieldRow, { label: "Title", htmlFor: "acp-title", children: /* @__PURE__ */ jsx("input", { id: "acp-title", value: form.title, onChange: (e) => setForm((p) => ({ ...p, title: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "Credit or Debit Card" }) }),
|
|
210
|
+
/* @__PURE__ */ jsx(FieldRow, { label: "Contingency for 3D Secure", hint: "Choose when 3D Secure should be triggered during card payments.", htmlFor: "acp-threeds", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
211
|
+
/* @__PURE__ */ jsx("select", { id: "acp-threeds", value: form.threeDS, onChange: (e) => setForm((p) => ({ ...p, threeDS: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", children: THREE_DS_OPTIONS.map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: o.label }, o.value)) }),
|
|
212
|
+
((_a = THREE_DS_OPTIONS.find((o) => o.value === form.threeDS)) == null ? void 0 : _a.hint) ? /* @__PURE__ */ jsx("div", { className: "text-xs text-ui-fg-subtle", children: (_b = THREE_DS_OPTIONS.find((o) => o.value === form.threeDS)) == null ? void 0 : _b.hint }) : null
|
|
213
|
+
] }) })
|
|
221
214
|
] })
|
|
222
215
|
}
|
|
223
216
|
)
|
|
224
217
|
] }) });
|
|
225
218
|
}
|
|
226
219
|
const DEFAULT_FORM = {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
220
|
+
paymentAction: "capture",
|
|
221
|
+
brandName: "PayPal",
|
|
222
|
+
landingPage: "no_preference",
|
|
223
|
+
requireInstantPayment: false,
|
|
224
|
+
sendItemDetails: true,
|
|
225
|
+
invoicePrefix: "PP-",
|
|
226
|
+
creditCardStatementName: "PayPal"
|
|
230
227
|
};
|
|
231
228
|
function mergeWithDefaults(saved) {
|
|
232
229
|
if (!saved) return { ...DEFAULT_FORM };
|
|
233
230
|
const entries = Object.entries(saved).filter(([, value]) => value !== void 0);
|
|
234
231
|
return { ...DEFAULT_FORM, ...Object.fromEntries(entries) };
|
|
235
232
|
}
|
|
236
|
-
|
|
237
|
-
{ value: "when_required", label: "3D Secure when required", hint: "Triggers 3DS only when the card / issuer requires it." },
|
|
238
|
-
{ value: "sli", label: "3D Secure (SCA) / liability shift (recommended)", hint: "Attempts to optimize for liability shift while remaining compliant." },
|
|
239
|
-
{ value: "always", label: "Always request 3D Secure", hint: "Forces 3DS challenge whenever possible (may reduce conversion)." }
|
|
240
|
-
];
|
|
241
|
-
function AdvancedCardPaymentsTab() {
|
|
242
|
-
var _a, _b;
|
|
233
|
+
function AdditionalSettingsTab() {
|
|
243
234
|
const [form, setForm] = useState(() => ({ ...DEFAULT_FORM }));
|
|
244
235
|
const [loading, setLoading] = useState(false);
|
|
245
236
|
const [saving, setSaving] = useState(false);
|
|
@@ -254,7 +245,7 @@ function AdvancedCardPaymentsTab() {
|
|
|
254
245
|
setLoading(true);
|
|
255
246
|
const json = await adminFetch("/admin/paypal/settings");
|
|
256
247
|
const payload = (json == null ? void 0 : json.data) ?? json;
|
|
257
|
-
const saved = payload == null ? void 0 : payload.
|
|
248
|
+
const saved = payload == null ? void 0 : payload.additional_settings;
|
|
258
249
|
if (saved && typeof saved === "object") setForm(mergeWithDefaults(saved));
|
|
259
250
|
} catch {
|
|
260
251
|
} finally {
|
|
@@ -265,16 +256,14 @@ function AdvancedCardPaymentsTab() {
|
|
|
265
256
|
async function onSave() {
|
|
266
257
|
try {
|
|
267
258
|
setSaving(true);
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
body: { advanced_card_payments: form }
|
|
271
|
-
});
|
|
259
|
+
setToast(null);
|
|
260
|
+
const json = await adminFetch("/admin/paypal/settings", { method: "POST", body: { additional_settings: form } });
|
|
272
261
|
const payload = (json == null ? void 0 : json.data) ?? json;
|
|
273
|
-
const saved = payload == null ? void 0 : payload.
|
|
262
|
+
const saved = payload == null ? void 0 : payload.additional_settings;
|
|
274
263
|
if (saved && typeof saved === "object") setForm(mergeWithDefaults(saved));
|
|
275
264
|
setToast({ kind: "success", message: "Settings saved" });
|
|
276
265
|
} catch (e) {
|
|
277
|
-
setToast({ kind: "error", message:
|
|
266
|
+
setToast({ kind: "error", message: e instanceof Error ? e.message : "Failed to save settings" });
|
|
278
267
|
} finally {
|
|
279
268
|
setSaving(false);
|
|
280
269
|
}
|
|
@@ -286,22 +275,33 @@ function AdvancedCardPaymentsTab() {
|
|
|
286
275
|
/* @__PURE__ */ jsx(
|
|
287
276
|
SectionCard,
|
|
288
277
|
{
|
|
289
|
-
title: "
|
|
290
|
-
description: "
|
|
278
|
+
title: "Additional Settings",
|
|
279
|
+
description: "These settings control checkout behavior and PayPal experience.",
|
|
291
280
|
right: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
292
281
|
/* @__PURE__ */ jsx("button", { type: "button", onClick: onSave, disabled: saving || loading, 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: saving ? "Saving..." : "Save settings" }),
|
|
293
282
|
loading ? /* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-subtle", children: "Loading…" }) : null
|
|
294
283
|
] }),
|
|
295
284
|
children: /* @__PURE__ */ jsxs("div", { className: "divide-y divide-ui-border-base", children: [
|
|
296
|
-
/* @__PURE__ */ jsx(FieldRow, { label: "
|
|
297
|
-
/* @__PURE__ */ jsx("
|
|
298
|
-
/* @__PURE__ */ jsx("
|
|
285
|
+
/* @__PURE__ */ jsx(FieldRow, { label: "Payment action", htmlFor: "as-payment-action", children: /* @__PURE__ */ jsxs("select", { id: "as-payment-action", value: form.paymentAction, onChange: (e) => setForm((p) => ({ ...p, paymentAction: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", children: [
|
|
286
|
+
/* @__PURE__ */ jsx("option", { value: "capture", children: "Capture" }),
|
|
287
|
+
/* @__PURE__ */ jsx("option", { value: "authorize", children: "Authorize" })
|
|
299
288
|
] }) }),
|
|
300
|
-
/* @__PURE__ */ jsx(FieldRow, { label: "
|
|
301
|
-
/* @__PURE__ */ jsx(FieldRow, { label: "
|
|
302
|
-
/* @__PURE__ */ jsx("
|
|
303
|
-
|
|
304
|
-
|
|
289
|
+
/* @__PURE__ */ jsx(FieldRow, { label: "Brand Name", htmlFor: "as-brand-name", children: /* @__PURE__ */ jsx("input", { id: "as-brand-name", value: form.brandName, onChange: (e) => setForm((p) => ({ ...p, brandName: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "PayPal" }) }),
|
|
290
|
+
/* @__PURE__ */ jsx(FieldRow, { label: "Landing Page", htmlFor: "as-landing-page", children: /* @__PURE__ */ jsxs("select", { id: "as-landing-page", value: form.landingPage, onChange: (e) => setForm((p) => ({ ...p, landingPage: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", children: [
|
|
291
|
+
/* @__PURE__ */ jsx("option", { value: "no_preference", children: "No Preference" }),
|
|
292
|
+
/* @__PURE__ */ jsx("option", { value: "login", children: "Login" }),
|
|
293
|
+
/* @__PURE__ */ jsx("option", { value: "billing", children: "Billing" })
|
|
294
|
+
] }) }),
|
|
295
|
+
/* @__PURE__ */ jsx(FieldRow, { label: "Instant Payments", children: /* @__PURE__ */ jsxs("label", { className: "inline-flex items-center gap-2", children: [
|
|
296
|
+
/* @__PURE__ */ jsx("input", { type: "checkbox", checked: form.requireInstantPayment, onChange: (e) => setForm((p) => ({ ...p, requireInstantPayment: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
|
|
297
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-base", children: "Require Instant Payment" })
|
|
298
|
+
] }) }),
|
|
299
|
+
/* @__PURE__ */ jsx(FieldRow, { label: "Send Item Details", hint: "Include all line item details in the payment request to PayPal so that they can be seen from the PayPal transaction details page.", children: /* @__PURE__ */ jsxs("label", { className: "inline-flex items-center gap-2", children: [
|
|
300
|
+
/* @__PURE__ */ jsx("input", { type: "checkbox", checked: form.sendItemDetails, onChange: (e) => setForm((p) => ({ ...p, sendItemDetails: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
|
|
301
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-base", children: "Send line item details to PayPal" })
|
|
302
|
+
] }) }),
|
|
303
|
+
/* @__PURE__ */ jsx(FieldRow, { label: "Invoice prefix", htmlFor: "as-invoice-prefix", children: /* @__PURE__ */ jsx("input", { id: "as-invoice-prefix", value: form.invoicePrefix, onChange: (e) => setForm((p) => ({ ...p, invoicePrefix: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "PP-" }) }),
|
|
304
|
+
/* @__PURE__ */ jsx(FieldRow, { label: "Credit Card Statement Name", htmlFor: "as-cc-statement", children: /* @__PURE__ */ jsx("input", { id: "as-cc-statement", value: form.creditCardStatementName, onChange: (e) => setForm((p) => ({ ...p, creditCardStatementName: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "PayPal" }) })
|
|
305
305
|
] })
|
|
306
306
|
}
|
|
307
307
|
)
|
|
@@ -321,7 +321,7 @@ const PARTNER_JS_URLS = {
|
|
|
321
321
|
live: "https://www.paypal.com/webapps/merchantboarding/js/lib/lightbox/partner.js"
|
|
322
322
|
};
|
|
323
323
|
const SERVICE_URL = "/admin/paypal/onboarding-link";
|
|
324
|
-
const POPUP_NAME = "
|
|
324
|
+
const POPUP_NAME = "PPFrame";
|
|
325
325
|
const CACHE_PREFIX = "pp_onboard_cache";
|
|
326
326
|
const CACHE_EXPIRY = 10 * 60 * 1e3;
|
|
327
327
|
const ONBOARDING_COMPLETE_ENDPOINT = "/admin/paypal/onboard-complete";
|
|
@@ -483,18 +483,6 @@ function PayPalConnectionPage() {
|
|
|
483
483
|
},
|
|
484
484
|
[stopPopupPoll]
|
|
485
485
|
);
|
|
486
|
-
const openConnect = useCallback(() => {
|
|
487
|
-
if (connStateRef.current !== "ready" || !finalUrlRef.current || inProgressRef.current) {
|
|
488
|
-
return;
|
|
489
|
-
}
|
|
490
|
-
completedRef.current = false;
|
|
491
|
-
const popup = openOnboardingPopup(finalUrlRef.current);
|
|
492
|
-
if (!popup) {
|
|
493
|
-
setPopupBlocked(true);
|
|
494
|
-
return;
|
|
495
|
-
}
|
|
496
|
-
setPopupBlocked(false);
|
|
497
|
-
}, [openOnboardingPopup]);
|
|
498
486
|
const completeOnboarding = useCallback(
|
|
499
487
|
async (authCode, sharedId) => {
|
|
500
488
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
@@ -738,19 +726,6 @@ function PayPalConnectionPage() {
|
|
|
738
726
|
stopPopupPoll();
|
|
739
727
|
};
|
|
740
728
|
}, [stopPopupPoll]);
|
|
741
|
-
useEffect(() => {
|
|
742
|
-
const onCaptureClick = (e) => {
|
|
743
|
-
const btn = paypalButtonRef.current;
|
|
744
|
-
if (!btn) return;
|
|
745
|
-
const target = e.target;
|
|
746
|
-
if (!target || !btn.contains(target)) return;
|
|
747
|
-
e.preventDefault();
|
|
748
|
-
e.stopImmediatePropagation();
|
|
749
|
-
openConnect();
|
|
750
|
-
};
|
|
751
|
-
document.addEventListener("click", onCaptureClick, true);
|
|
752
|
-
return () => document.removeEventListener("click", onCaptureClick, true);
|
|
753
|
-
}, [openConnect]);
|
|
754
729
|
useLayoutEffect(() => {
|
|
755
730
|
const el = ppBtnMeasureRef.current;
|
|
756
731
|
if (!el) return;
|
|
@@ -771,9 +746,25 @@ function PayPalConnectionPage() {
|
|
|
771
746
|
else window.removeEventListener("resize", update);
|
|
772
747
|
};
|
|
773
748
|
}, [connState, env, finalUrl]);
|
|
749
|
+
useEffect(() => {
|
|
750
|
+
const onCaptureClick = (e) => {
|
|
751
|
+
const btn = paypalButtonRef.current;
|
|
752
|
+
if (!btn) return;
|
|
753
|
+
const target = e.target;
|
|
754
|
+
if (!target || !btn.contains(target)) return;
|
|
755
|
+
e.preventDefault();
|
|
756
|
+
if (connStateRef.current !== "ready" || !finalUrlRef.current || inProgressRef.current) {
|
|
757
|
+
return;
|
|
758
|
+
}
|
|
759
|
+
completedRef.current = false;
|
|
760
|
+
const popup = openOnboardingPopup(finalUrlRef.current);
|
|
761
|
+
setPopupBlocked(!popup);
|
|
762
|
+
};
|
|
763
|
+
document.addEventListener("click", onCaptureClick, true);
|
|
764
|
+
return () => document.removeEventListener("click", onCaptureClick, true);
|
|
765
|
+
}, [openOnboardingPopup]);
|
|
774
766
|
const handleConnectClick = (e) => {
|
|
775
767
|
e.preventDefault();
|
|
776
|
-
openConnect();
|
|
777
768
|
};
|
|
778
769
|
const handleSaveManual = async () => {
|
|
779
770
|
if (!canSaveManual || onboardingInProgress) return;
|
|
@@ -1310,14 +1301,14 @@ const routeModule = {
|
|
|
1310
1301
|
Component: PayPalSettingsIndexRoute,
|
|
1311
1302
|
path: "/settings/paypal"
|
|
1312
1303
|
},
|
|
1313
|
-
{
|
|
1314
|
-
Component: AdditionalSettingsTab,
|
|
1315
|
-
path: "/settings/paypal/additional-settings"
|
|
1316
|
-
},
|
|
1317
1304
|
{
|
|
1318
1305
|
Component: AdvancedCardPaymentsTab,
|
|
1319
1306
|
path: "/settings/paypal/advanced-card-payments"
|
|
1320
1307
|
},
|
|
1308
|
+
{
|
|
1309
|
+
Component: AdditionalSettingsTab,
|
|
1310
|
+
path: "/settings/paypal/additional-settings"
|
|
1311
|
+
},
|
|
1321
1312
|
{
|
|
1322
1313
|
Component: PayPalApplePayPage,
|
|
1323
1314
|
path: "/settings/paypal/apple-pay"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../../../src/admin/routes/settings/paypal/connection/page.tsx"],"names":[],"mappings":"AAWA,eAAO,MAAM,MAAM,2CAEjB,CAAA;AAQF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,CAAC,EAAE;YACP,IAAI,CAAC,EAAE;gBACL,MAAM,CAAC,EAAE;oBACP,WAAW,CAAC,EAAE;wBAAE,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;wBAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;qBAAE,CAAA;oBAC3D,WAAW,CAAC,EAAE;wBAAE,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;wBAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;qBAAE,CAAA;oBAC3D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;iBACpB,CAAA;aACF,CAAA;SACF,CAAA;QACD,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;KAClE;CACF;
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../../../src/admin/routes/settings/paypal/connection/page.tsx"],"names":[],"mappings":"AAWA,eAAO,MAAM,MAAM,2CAEjB,CAAA;AAQF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,CAAC,EAAE;YACP,IAAI,CAAC,EAAE;gBACL,MAAM,CAAC,EAAE;oBACP,WAAW,CAAC,EAAE;wBAAE,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;wBAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;qBAAE,CAAA;oBAC3D,WAAW,CAAC,EAAE;wBAAE,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;wBAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;qBAAE,CAAA;oBAC3D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;iBACpB,CAAA;aACF,CAAA;SACF,CAAA;QACD,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;KAClE;CACF;AAwID,MAAM,CAAC,OAAO,UAAU,oBAAoB,4CA+2B3C"}
|
|
@@ -17,11 +17,16 @@ const PARTNER_JS_URLS = {
|
|
|
17
17
|
live: "https://www.paypal.com/webapps/merchantboarding/js/lib/lightbox/partner.js",
|
|
18
18
|
};
|
|
19
19
|
const SERVICE_URL = "/admin/paypal/onboarding-link";
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
|
|
20
|
+
// We open the mini-browser popup ourselves, synchronously inside the click
|
|
21
|
+
// gesture (see openOnboardingPopup) — the only reliable way to get a popup
|
|
22
|
+
// rather than a blocked window or a new tab. The window name matches the
|
|
23
|
+
// anchor's `target` and PayPal's conventional "PPFrame": partner.js opens the
|
|
24
|
+
// flow with `window.open(url, target, ...)`, so when it runs right after us it
|
|
25
|
+
// *reuses this already-open window* (a named-window navigation needs no user
|
|
26
|
+
// activation) instead of trying — and failing, asynchronously — to spawn its
|
|
27
|
+
// own. That lets partner.js still wire its completion bridge without ever
|
|
28
|
+
// opening a second/late window.
|
|
29
|
+
const POPUP_NAME = "PPFrame";
|
|
25
30
|
const CACHE_PREFIX = "pp_onboard_cache";
|
|
26
31
|
const CACHE_EXPIRY = 10 * 60 * 1000;
|
|
27
32
|
const ONBOARDING_COMPLETE_ENDPOINT = "/admin/paypal/onboard-complete";
|
|
@@ -229,22 +234,6 @@ function PayPalConnectionPage() {
|
|
|
229
234
|
}
|
|
230
235
|
return popup;
|
|
231
236
|
}, [stopPopupPoll]);
|
|
232
|
-
// Single entry point for "Connect to PayPal". Hard-guards on a real, ready
|
|
233
|
-
// URL so a half-loaded button can never open anything.
|
|
234
|
-
const openConnect = (0, react_1.useCallback)(() => {
|
|
235
|
-
if (connStateRef.current !== "ready" ||
|
|
236
|
-
!finalUrlRef.current ||
|
|
237
|
-
inProgressRef.current) {
|
|
238
|
-
return;
|
|
239
|
-
}
|
|
240
|
-
completedRef.current = false;
|
|
241
|
-
const popup = openOnboardingPopup(finalUrlRef.current);
|
|
242
|
-
if (!popup) {
|
|
243
|
-
setPopupBlocked(true);
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
|
-
setPopupBlocked(false);
|
|
247
|
-
}, [openOnboardingPopup]);
|
|
248
237
|
// Exchange the seller authCode/sharedId for credentials. Reached from BOTH
|
|
249
238
|
// PayPal's partner.js bridge (window.onboardingCallback) and our own postMessage
|
|
250
239
|
// listener; completedRef makes it idempotent so we only POST once.
|
|
@@ -409,6 +398,9 @@ function PayPalConnectionPage() {
|
|
|
409
398
|
: null;
|
|
410
399
|
if (target?.init) {
|
|
411
400
|
try {
|
|
401
|
+
// Wires partner.js's click interceptor + its postMessage->callback
|
|
402
|
+
// bridge. It will adopt the window we pre-open (same name) rather than
|
|
403
|
+
// open its own.
|
|
412
404
|
target.init();
|
|
413
405
|
}
|
|
414
406
|
catch (e) {
|
|
@@ -542,26 +534,6 @@ function PayPalConnectionPage() {
|
|
|
542
534
|
stopPopupPoll();
|
|
543
535
|
};
|
|
544
536
|
}, [stopPopupPoll]);
|
|
545
|
-
// Capture-phase click interceptor: guarantees WE own the popup. Running in the
|
|
546
|
-
// capture phase on the document means we execute before partner.js's own click
|
|
547
|
-
// handler, so we can suppress it (no duplicate window) and open the popup
|
|
548
|
-
// ourselves within the same user gesture. This is what makes the first click
|
|
549
|
-
// after a cold load reliably open a popup instead of a new tab.
|
|
550
|
-
(0, react_1.useEffect)(() => {
|
|
551
|
-
const onCaptureClick = (e) => {
|
|
552
|
-
const btn = paypalButtonRef.current;
|
|
553
|
-
if (!btn)
|
|
554
|
-
return;
|
|
555
|
-
const target = e.target;
|
|
556
|
-
if (!target || !btn.contains(target))
|
|
557
|
-
return;
|
|
558
|
-
e.preventDefault();
|
|
559
|
-
e.stopImmediatePropagation();
|
|
560
|
-
openConnect();
|
|
561
|
-
};
|
|
562
|
-
document.addEventListener("click", onCaptureClick, true);
|
|
563
|
-
return () => document.removeEventListener("click", onCaptureClick, true);
|
|
564
|
-
}, [openConnect]);
|
|
565
537
|
(0, react_1.useLayoutEffect)(() => {
|
|
566
538
|
const el = ppBtnMeasureRef.current;
|
|
567
539
|
if (!el)
|
|
@@ -587,12 +559,50 @@ function PayPalConnectionPage() {
|
|
|
587
559
|
window.removeEventListener("resize", update);
|
|
588
560
|
};
|
|
589
561
|
}, [connState, env, finalUrl]);
|
|
590
|
-
//
|
|
591
|
-
//
|
|
592
|
-
//
|
|
562
|
+
// Capture-phase click handler — the single, reliable opener.
|
|
563
|
+
//
|
|
564
|
+
// It runs on `document` in the CAPTURE phase, i.e. BEFORE the event reaches
|
|
565
|
+
// the anchor where partner.js binds its own (target-phase) handler. That
|
|
566
|
+
// ordering is the whole point:
|
|
567
|
+
// 1. We synchronously open the mini-browser popup here, inside the user
|
|
568
|
+
// gesture, so the browser always renders a real popup (never a blocked
|
|
569
|
+
// window, never a new tab).
|
|
570
|
+
// 2. We do NOT stop propagation, so partner.js's handler still runs a beat
|
|
571
|
+
// later. Since it opens with the same window name (POPUP_NAME), it adopts
|
|
572
|
+
// the window we just opened instead of asynchronously spawning its own
|
|
573
|
+
// (which the browser was blocking — "multiple popups ... lack of user
|
|
574
|
+
// activation") — and it still wires its postMessage->onboardingCallback
|
|
575
|
+
// bridge that auto-closes the popup and saves credentials.
|
|
576
|
+
// 3. We always preventDefault so the anchor's href can never open a tab.
|
|
577
|
+
//
|
|
578
|
+
// Completion is handled by partner.js's bridge AND by our own postMessage
|
|
579
|
+
// listener (see below), funnelling through one idempotent completeOnboarding.
|
|
580
|
+
(0, react_1.useEffect)(() => {
|
|
581
|
+
const onCaptureClick = (e) => {
|
|
582
|
+
const btn = paypalButtonRef.current;
|
|
583
|
+
if (!btn)
|
|
584
|
+
return;
|
|
585
|
+
const target = e.target;
|
|
586
|
+
if (!target || !btn.contains(target))
|
|
587
|
+
return;
|
|
588
|
+
e.preventDefault();
|
|
589
|
+
if (connStateRef.current !== "ready" ||
|
|
590
|
+
!finalUrlRef.current ||
|
|
591
|
+
inProgressRef.current) {
|
|
592
|
+
return;
|
|
593
|
+
}
|
|
594
|
+
completedRef.current = false;
|
|
595
|
+
const popup = openOnboardingPopup(finalUrlRef.current);
|
|
596
|
+
setPopupBlocked(!popup);
|
|
597
|
+
};
|
|
598
|
+
document.addEventListener("click", onCaptureClick, true);
|
|
599
|
+
return () => document.removeEventListener("click", onCaptureClick, true);
|
|
600
|
+
}, [openOnboardingPopup]);
|
|
601
|
+
// Defensive only: the capture-phase listener above already opened the popup
|
|
602
|
+
// and prevented the default. If for some reason it didn't run, make sure the
|
|
603
|
+
// native target still can't open a tab.
|
|
593
604
|
const handleConnectClick = (e) => {
|
|
594
605
|
e.preventDefault();
|
|
595
|
-
openConnect();
|
|
596
606
|
};
|
|
597
607
|
const handleSaveManual = async () => {
|
|
598
608
|
if (!canSaveManual || onboardingInProgress)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../../../../../src/admin/routes/settings/paypal/connection/page.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../../../../../src/admin/routes/settings/paypal/connection/page.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -36,11 +36,16 @@ declare global {
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
const SERVICE_URL = "/admin/paypal/onboarding-link"
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
|
|
39
|
+
// We open the mini-browser popup ourselves, synchronously inside the click
|
|
40
|
+
// gesture (see openOnboardingPopup) — the only reliable way to get a popup
|
|
41
|
+
// rather than a blocked window or a new tab. The window name matches the
|
|
42
|
+
// anchor's `target` and PayPal's conventional "PPFrame": partner.js opens the
|
|
43
|
+
// flow with `window.open(url, target, ...)`, so when it runs right after us it
|
|
44
|
+
// *reuses this already-open window* (a named-window navigation needs no user
|
|
45
|
+
// activation) instead of trying — and failing, asynchronously — to spawn its
|
|
46
|
+
// own. That lets partner.js still wire its completion bridge without ever
|
|
47
|
+
// opening a second/late window.
|
|
48
|
+
const POPUP_NAME = "PPFrame"
|
|
44
49
|
const CACHE_PREFIX = "pp_onboard_cache"
|
|
45
50
|
const CACHE_EXPIRY = 10 * 60 * 1000
|
|
46
51
|
|
|
@@ -278,25 +283,6 @@ export default function PayPalConnectionPage() {
|
|
|
278
283
|
[stopPopupPoll]
|
|
279
284
|
)
|
|
280
285
|
|
|
281
|
-
// Single entry point for "Connect to PayPal". Hard-guards on a real, ready
|
|
282
|
-
// URL so a half-loaded button can never open anything.
|
|
283
|
-
const openConnect = useCallback(() => {
|
|
284
|
-
if (
|
|
285
|
-
connStateRef.current !== "ready" ||
|
|
286
|
-
!finalUrlRef.current ||
|
|
287
|
-
inProgressRef.current
|
|
288
|
-
) {
|
|
289
|
-
return
|
|
290
|
-
}
|
|
291
|
-
completedRef.current = false
|
|
292
|
-
const popup = openOnboardingPopup(finalUrlRef.current)
|
|
293
|
-
if (!popup) {
|
|
294
|
-
setPopupBlocked(true)
|
|
295
|
-
return
|
|
296
|
-
}
|
|
297
|
-
setPopupBlocked(false)
|
|
298
|
-
}, [openOnboardingPopup])
|
|
299
|
-
|
|
300
286
|
// Exchange the seller authCode/sharedId for credentials. Reached from BOTH
|
|
301
287
|
// PayPal's partner.js bridge (window.onboardingCallback) and our own postMessage
|
|
302
288
|
// listener; completedRef makes it idempotent so we only POST once.
|
|
@@ -476,6 +462,9 @@ export default function PayPalConnectionPage() {
|
|
|
476
462
|
|
|
477
463
|
if (target?.init) {
|
|
478
464
|
try {
|
|
465
|
+
// Wires partner.js's click interceptor + its postMessage->callback
|
|
466
|
+
// bridge. It will adopt the window we pre-open (same name) rather than
|
|
467
|
+
// open its own.
|
|
479
468
|
target.init()
|
|
480
469
|
} catch (e) {
|
|
481
470
|
console.error("[paypal] partner.js init failed:", e)
|
|
@@ -623,27 +612,6 @@ export default function PayPalConnectionPage() {
|
|
|
623
612
|
}
|
|
624
613
|
}, [stopPopupPoll])
|
|
625
614
|
|
|
626
|
-
// Capture-phase click interceptor: guarantees WE own the popup. Running in the
|
|
627
|
-
// capture phase on the document means we execute before partner.js's own click
|
|
628
|
-
// handler, so we can suppress it (no duplicate window) and open the popup
|
|
629
|
-
// ourselves within the same user gesture. This is what makes the first click
|
|
630
|
-
// after a cold load reliably open a popup instead of a new tab.
|
|
631
|
-
useEffect(() => {
|
|
632
|
-
const onCaptureClick = (e: MouseEvent) => {
|
|
633
|
-
const btn = paypalButtonRef.current
|
|
634
|
-
if (!btn) return
|
|
635
|
-
const target = e.target as Node | null
|
|
636
|
-
if (!target || !btn.contains(target)) return
|
|
637
|
-
|
|
638
|
-
e.preventDefault()
|
|
639
|
-
e.stopImmediatePropagation()
|
|
640
|
-
openConnect()
|
|
641
|
-
}
|
|
642
|
-
|
|
643
|
-
document.addEventListener("click", onCaptureClick, true)
|
|
644
|
-
return () => document.removeEventListener("click", onCaptureClick, true)
|
|
645
|
-
}, [openConnect])
|
|
646
|
-
|
|
647
615
|
useLayoutEffect(() => {
|
|
648
616
|
const el = ppBtnMeasureRef.current
|
|
649
617
|
if (!el) return
|
|
@@ -669,12 +637,55 @@ export default function PayPalConnectionPage() {
|
|
|
669
637
|
}
|
|
670
638
|
}, [connState, env, finalUrl])
|
|
671
639
|
|
|
672
|
-
//
|
|
673
|
-
//
|
|
674
|
-
//
|
|
640
|
+
// Capture-phase click handler — the single, reliable opener.
|
|
641
|
+
//
|
|
642
|
+
// It runs on `document` in the CAPTURE phase, i.e. BEFORE the event reaches
|
|
643
|
+
// the anchor where partner.js binds its own (target-phase) handler. That
|
|
644
|
+
// ordering is the whole point:
|
|
645
|
+
// 1. We synchronously open the mini-browser popup here, inside the user
|
|
646
|
+
// gesture, so the browser always renders a real popup (never a blocked
|
|
647
|
+
// window, never a new tab).
|
|
648
|
+
// 2. We do NOT stop propagation, so partner.js's handler still runs a beat
|
|
649
|
+
// later. Since it opens with the same window name (POPUP_NAME), it adopts
|
|
650
|
+
// the window we just opened instead of asynchronously spawning its own
|
|
651
|
+
// (which the browser was blocking — "multiple popups ... lack of user
|
|
652
|
+
// activation") — and it still wires its postMessage->onboardingCallback
|
|
653
|
+
// bridge that auto-closes the popup and saves credentials.
|
|
654
|
+
// 3. We always preventDefault so the anchor's href can never open a tab.
|
|
655
|
+
//
|
|
656
|
+
// Completion is handled by partner.js's bridge AND by our own postMessage
|
|
657
|
+
// listener (see below), funnelling through one idempotent completeOnboarding.
|
|
658
|
+
useEffect(() => {
|
|
659
|
+
const onCaptureClick = (e: MouseEvent) => {
|
|
660
|
+
const btn = paypalButtonRef.current
|
|
661
|
+
if (!btn) return
|
|
662
|
+
const target = e.target as Node | null
|
|
663
|
+
if (!target || !btn.contains(target)) return
|
|
664
|
+
|
|
665
|
+
e.preventDefault()
|
|
666
|
+
|
|
667
|
+
if (
|
|
668
|
+
connStateRef.current !== "ready" ||
|
|
669
|
+
!finalUrlRef.current ||
|
|
670
|
+
inProgressRef.current
|
|
671
|
+
) {
|
|
672
|
+
return
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
completedRef.current = false
|
|
676
|
+
const popup = openOnboardingPopup(finalUrlRef.current)
|
|
677
|
+
setPopupBlocked(!popup)
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
document.addEventListener("click", onCaptureClick, true)
|
|
681
|
+
return () => document.removeEventListener("click", onCaptureClick, true)
|
|
682
|
+
}, [openOnboardingPopup])
|
|
683
|
+
|
|
684
|
+
// Defensive only: the capture-phase listener above already opened the popup
|
|
685
|
+
// and prevented the default. If for some reason it didn't run, make sure the
|
|
686
|
+
// native target still can't open a tab.
|
|
675
687
|
const handleConnectClick = (e: React.MouseEvent<HTMLAnchorElement>) => {
|
|
676
688
|
e.preventDefault()
|
|
677
|
-
openConnect()
|
|
678
689
|
}
|
|
679
690
|
|
|
680
691
|
const handleSaveManual = async () => {
|