@rovela-ai/sdk 0.24.1 → 0.25.0
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/dist/admin/api/index.d.ts +1 -0
- package/dist/admin/api/index.d.ts.map +1 -1
- package/dist/admin/api/index.js +2 -0
- package/dist/admin/api/index.js.map +1 -1
- package/dist/admin/api/payment-providers.d.ts +69 -0
- package/dist/admin/api/payment-providers.d.ts.map +1 -0
- package/dist/admin/api/payment-providers.js +206 -0
- package/dist/admin/api/payment-providers.js.map +1 -0
- package/dist/admin/api/settings.d.ts.map +1 -1
- package/dist/admin/api/settings.js +4 -1
- package/dist/admin/api/settings.js.map +1 -1
- package/dist/admin/components/OrderDetails.d.ts.map +1 -1
- package/dist/admin/components/OrderDetails.js +11 -2
- package/dist/admin/components/OrderDetails.js.map +1 -1
- package/dist/admin/components/PaymentProviderPanels.d.ts +3 -0
- package/dist/admin/components/PaymentProviderPanels.d.ts.map +1 -0
- package/dist/admin/components/PaymentProviderPanels.js +202 -0
- package/dist/admin/components/PaymentProviderPanels.js.map +1 -0
- package/dist/admin/components/PaymentSettings.d.ts.map +1 -1
- package/dist/admin/components/PaymentSettings.js +2 -1
- package/dist/admin/components/PaymentSettings.js.map +1 -1
- package/dist/admin/components/index.d.ts +1 -0
- package/dist/admin/components/index.d.ts.map +1 -1
- package/dist/admin/components/index.js +1 -0
- package/dist/admin/components/index.js.map +1 -1
- package/dist/admin/integrations/registry.d.ts.map +1 -1
- package/dist/admin/integrations/registry.js +5 -73
- package/dist/admin/integrations/registry.js.map +1 -1
- package/dist/checkout/api/index.d.ts +6 -0
- package/dist/checkout/api/index.d.ts.map +1 -1
- package/dist/checkout/api/index.js +6 -0
- package/dist/checkout/api/index.js.map +1 -1
- package/dist/checkout/api/payment-methods.d.ts +22 -6
- package/dist/checkout/api/payment-methods.d.ts.map +1 -1
- package/dist/checkout/api/payment-methods.js +46 -6
- package/dist/checkout/api/payment-methods.js.map +1 -1
- package/dist/checkout/api/paypal-capture.d.ts +38 -0
- package/dist/checkout/api/paypal-capture.d.ts.map +1 -0
- package/dist/checkout/api/paypal-capture.js +126 -0
- package/dist/checkout/api/paypal-capture.js.map +1 -0
- package/dist/checkout/api/paypal-webhook.d.ts +24 -0
- package/dist/checkout/api/paypal-webhook.d.ts.map +1 -0
- package/dist/checkout/api/paypal-webhook.js +122 -0
- package/dist/checkout/api/paypal-webhook.js.map +1 -0
- package/dist/checkout/api/paypal.d.ts +30 -0
- package/dist/checkout/api/paypal.d.ts.map +1 -0
- package/dist/checkout/api/paypal.js +70 -0
- package/dist/checkout/api/paypal.js.map +1 -0
- package/dist/checkout/api/up2pay-ipn.d.ts +28 -0
- package/dist/checkout/api/up2pay-ipn.d.ts.map +1 -0
- package/dist/checkout/api/up2pay-ipn.js +88 -0
- package/dist/checkout/api/up2pay-ipn.js.map +1 -0
- package/dist/checkout/api/up2pay.d.ts +34 -0
- package/dist/checkout/api/up2pay.d.ts.map +1 -0
- package/dist/checkout/api/up2pay.js +82 -0
- package/dist/checkout/api/up2pay.js.map +1 -0
- package/dist/checkout/components/CheckoutFlow.d.ts.map +1 -1
- package/dist/checkout/components/CheckoutFlow.js +38 -8
- package/dist/checkout/components/CheckoutFlow.js.map +1 -1
- package/dist/checkout/components/PayPalCheckoutButtons.d.ts +32 -0
- package/dist/checkout/components/PayPalCheckoutButtons.d.ts.map +1 -0
- package/dist/checkout/components/PayPalCheckoutButtons.js +116 -0
- package/dist/checkout/components/PayPalCheckoutButtons.js.map +1 -0
- package/dist/checkout/components/index.d.ts +2 -0
- package/dist/checkout/components/index.d.ts.map +1 -1
- package/dist/checkout/components/index.js +1 -0
- package/dist/checkout/components/index.js.map +1 -1
- package/dist/checkout/hooks/useCheckout.d.ts.map +1 -1
- package/dist/checkout/hooks/useCheckout.js +160 -0
- package/dist/checkout/hooks/useCheckout.js.map +1 -1
- package/dist/checkout/server/confirm-order.d.ts +54 -0
- package/dist/checkout/server/confirm-order.d.ts.map +1 -0
- package/dist/checkout/server/confirm-order.js +147 -0
- package/dist/checkout/server/confirm-order.js.map +1 -0
- package/dist/checkout/server/external-checkout.d.ts +68 -0
- package/dist/checkout/server/external-checkout.d.ts.map +1 -0
- package/dist/checkout/server/external-checkout.js +184 -0
- package/dist/checkout/server/external-checkout.js.map +1 -0
- package/dist/checkout/server/paypal.d.ts +127 -0
- package/dist/checkout/server/paypal.d.ts.map +1 -0
- package/dist/checkout/server/paypal.js +274 -0
- package/dist/checkout/server/paypal.js.map +1 -0
- package/dist/checkout/server/up2pay.d.ts +152 -0
- package/dist/checkout/server/up2pay.d.ts.map +1 -0
- package/dist/checkout/server/up2pay.js +287 -0
- package/dist/checkout/server/up2pay.js.map +1 -0
- package/dist/checkout/types.d.ts +26 -1
- package/dist/checkout/types.d.ts.map +1 -1
- package/dist/core/db/queries.d.ts +68 -39
- package/dist/core/db/queries.d.ts.map +1 -1
- package/dist/core/db/queries.js +96 -0
- package/dist/core/db/queries.js.map +1 -1
- package/dist/core/db/schema.d.ts +210 -5
- package/dist/core/db/schema.d.ts.map +1 -1
- package/dist/core/db/schema.js +33 -0
- package/dist/core/db/schema.js.map +1 -1
- package/dist/core/i18n/messages/en.d.ts.map +1 -1
- package/dist/core/i18n/messages/en.js +5 -0
- package/dist/core/i18n/messages/en.js.map +1 -1
- package/dist/core/i18n/messages/fr.d.ts.map +1 -1
- package/dist/core/i18n/messages/fr.js +5 -0
- package/dist/core/i18n/messages/fr.js.map +1 -1
- package/docs/changelog/epoch-12-payment-providers.md +105 -0
- package/package.json +26 -2
- package/templates/store-template/.claude/skills/build-feature/SKILL.md +2 -1
- package/templates/store-template/app/api/admin/payments/paypal/route.ts +10 -0
- package/templates/store-template/app/api/admin/payments/up2pay/route.ts +10 -0
- package/templates/store-template/app/api/checkout/paypal/capture/route.ts +8 -0
- package/templates/store-template/app/api/checkout/paypal/return/route.ts +9 -0
- package/templates/store-template/app/api/checkout/paypal/route.ts +9 -0
- package/templates/store-template/app/api/checkout/paypal/webhook/route.ts +9 -0
- package/templates/store-template/app/api/checkout/up2pay/ipn/route.ts +8 -0
- package/templates/store-template/app/api/checkout/up2pay/route.ts +9 -0
- package/templates/store-template/package.json +2 -2
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/checkout/components/PayPalCheckoutButtons
|
|
3
|
+
*
|
|
4
|
+
* PayPal Smart Buttons for the checkout review step (SDK 0.25.0). Loads
|
|
5
|
+
* PayPal's official JS directly from paypal.com (no npm wrapper — the
|
|
6
|
+
* client id parameterizes the script URL and is public by design) and
|
|
7
|
+
* wires createOrder/onApprove to the server routes, where all money logic
|
|
8
|
+
* lives.
|
|
9
|
+
*
|
|
10
|
+
* Graceful degradation is built in: if the script fails to load (ad
|
|
11
|
+
* blocker, CSP, network), a plain "Continue to PayPal" button renders
|
|
12
|
+
* instead, driving the SAME two server legs through the hosted approval
|
|
13
|
+
* link — zero extra server code.
|
|
14
|
+
*/
|
|
15
|
+
'use client';
|
|
16
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
18
|
+
import { Loader2 } from 'lucide-react';
|
|
19
|
+
import { useT } from '../../core';
|
|
20
|
+
/** One script load per (clientId, currency) — shared across re-mounts. */
|
|
21
|
+
const scriptPromises = new Map();
|
|
22
|
+
function loadPaypalScript(clientId, currency) {
|
|
23
|
+
const key = `${clientId}:${currency}`;
|
|
24
|
+
const existing = scriptPromises.get(key);
|
|
25
|
+
if (existing)
|
|
26
|
+
return existing;
|
|
27
|
+
const promise = new Promise((resolve, reject) => {
|
|
28
|
+
const w = window;
|
|
29
|
+
const src = `https://www.paypal.com/sdk/js?client-id=${encodeURIComponent(clientId)}¤cy=${encodeURIComponent(currency)}&intent=capture&components=buttons`;
|
|
30
|
+
const el = document.createElement('script');
|
|
31
|
+
el.src = src;
|
|
32
|
+
el.async = true;
|
|
33
|
+
el.onload = () => {
|
|
34
|
+
if (w.paypal)
|
|
35
|
+
resolve(w.paypal);
|
|
36
|
+
else
|
|
37
|
+
reject(new Error('PayPal SDK loaded without a namespace'));
|
|
38
|
+
};
|
|
39
|
+
el.onerror = () => reject(new Error('PayPal SDK failed to load'));
|
|
40
|
+
document.head.appendChild(el);
|
|
41
|
+
});
|
|
42
|
+
// A failed load must not poison later retries (e.g. ad-blocker toggled off).
|
|
43
|
+
promise.catch(() => scriptPromises.delete(key));
|
|
44
|
+
scriptPromises.set(key, promise);
|
|
45
|
+
return promise;
|
|
46
|
+
}
|
|
47
|
+
export function PayPalCheckoutButtons({ clientId, currency, disabled, createOrder, onApprove, }) {
|
|
48
|
+
const t = useT();
|
|
49
|
+
const containerRef = useRef(null);
|
|
50
|
+
const [scriptState, setScriptState] = useState('loading');
|
|
51
|
+
const [isRedirecting, setIsRedirecting] = useState(false);
|
|
52
|
+
// Latest-callback refs: the Buttons instance is created once; callbacks
|
|
53
|
+
// must see current cart/address state, not the mount-time closure.
|
|
54
|
+
const createOrderRef = useRef(createOrder);
|
|
55
|
+
createOrderRef.current = createOrder;
|
|
56
|
+
const onApproveRef = useRef(onApprove);
|
|
57
|
+
onApproveRef.current = onApprove;
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
let cancelled = false;
|
|
60
|
+
let buttons = null;
|
|
61
|
+
loadPaypalScript(clientId, currency)
|
|
62
|
+
.then((paypal) => {
|
|
63
|
+
if (cancelled || !containerRef.current)
|
|
64
|
+
return;
|
|
65
|
+
buttons = paypal.Buttons({
|
|
66
|
+
style: { layout: 'vertical', label: 'paypal', height: 48 },
|
|
67
|
+
createOrder: async () => {
|
|
68
|
+
const result = await createOrderRef.current();
|
|
69
|
+
if (!result)
|
|
70
|
+
throw new Error('Order creation failed');
|
|
71
|
+
return result.paypalOrderId;
|
|
72
|
+
},
|
|
73
|
+
onApprove: async (data) => {
|
|
74
|
+
await onApproveRef.current(data.orderID);
|
|
75
|
+
},
|
|
76
|
+
onError: (err) => {
|
|
77
|
+
console.error('[PayPal Buttons] error:', err);
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
containerRef.current.innerHTML = '';
|
|
81
|
+
return buttons.render(containerRef.current).then(() => {
|
|
82
|
+
if (!cancelled) {
|
|
83
|
+
// Pattern C — populate state from async-loaded data.
|
|
84
|
+
setScriptState('ready');
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
})
|
|
88
|
+
.catch(() => {
|
|
89
|
+
if (!cancelled)
|
|
90
|
+
setScriptState('failed');
|
|
91
|
+
});
|
|
92
|
+
return () => {
|
|
93
|
+
cancelled = true;
|
|
94
|
+
buttons?.close?.().catch(() => { });
|
|
95
|
+
};
|
|
96
|
+
}, [clientId, currency]);
|
|
97
|
+
/** Redirect fallback: same server legs, hosted approval page. */
|
|
98
|
+
const handleFallbackClick = useCallback(async () => {
|
|
99
|
+
setIsRedirecting(true);
|
|
100
|
+
try {
|
|
101
|
+
const result = await createOrder();
|
|
102
|
+
if (result?.approveUrl) {
|
|
103
|
+
window.location.href = result.approveUrl;
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
setIsRedirecting(false);
|
|
109
|
+
}
|
|
110
|
+
}, [createOrder]);
|
|
111
|
+
if (scriptState === 'failed') {
|
|
112
|
+
return (_jsxs("div", { className: "space-y-2", children: [_jsx("button", { type: "button", onClick: handleFallbackClick, disabled: disabled || isRedirecting, className: "w-full px-4 py-4 rounded-md font-medium text-lg bg-[#ffc439] text-[#003087] hover:brightness-95 transition-all disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2", children: isRedirecting ? (_jsxs(_Fragment, { children: [_jsx(Loader2, { className: "h-5 w-5 animate-spin" }), t('common.processing')] })) : (t('checkout.continueToPaypal')) }), _jsx("p", { className: "text-xs text-center text-muted-foreground", children: t('checkout.pspRedirectNote') })] }));
|
|
113
|
+
}
|
|
114
|
+
return (_jsxs("div", { className: disabled ? 'pointer-events-none opacity-50' : undefined, children: [scriptState === 'loading' && (_jsx("div", { className: "flex items-center justify-center py-4 text-muted-foreground", children: _jsx(Loader2, { className: "h-5 w-5 animate-spin" }) })), _jsx("div", { ref: containerRef })] }));
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=PayPalCheckoutButtons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalCheckoutButtons.js","sourceRoot":"","sources":["../../../src/checkout/components/PayPalCheckoutButtons.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ export { CheckoutSuccess } from './CheckoutSuccess';
|
|
|
9
9
|
export { OrderSummary } from './OrderSummary';
|
|
10
10
|
export { OrderTimeline } from './OrderTimeline';
|
|
11
11
|
export type { OrderTimelineProps } from './OrderTimeline';
|
|
12
|
+
export { PayPalCheckoutButtons } from './PayPalCheckoutButtons';
|
|
13
|
+
export type { PayPalCheckoutButtonsProps } from './PayPalCheckoutButtons';
|
|
12
14
|
export { ShippingForm } from './ShippingForm';
|
|
13
15
|
export { ShippingOptions } from './ShippingOptions';
|
|
14
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/checkout/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/checkout/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
|
|
@@ -8,6 +8,7 @@ export { CheckoutFlow } from './CheckoutFlow';
|
|
|
8
8
|
export { CheckoutSuccess } from './CheckoutSuccess';
|
|
9
9
|
export { OrderSummary } from './OrderSummary';
|
|
10
10
|
export { OrderTimeline } from './OrderTimeline';
|
|
11
|
+
export { PayPalCheckoutButtons } from './PayPalCheckoutButtons';
|
|
11
12
|
export { ShippingForm } from './ShippingForm';
|
|
12
13
|
export { ShippingOptions } from './ShippingOptions';
|
|
13
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checkout/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checkout/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCheckout.d.ts","sourceRoot":"","sources":["../../../src/checkout/hooks/useCheckout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAGV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,UAAU,CAAA;AAMjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"useCheckout.d.ts","sourceRoot":"","sources":["../../../src/checkout/hooks/useCheckout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAGV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,UAAU,CAAA;AAMjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,iBAAiB,CA4X3E"}
|
|
@@ -223,9 +223,169 @@ export function useCheckout(options) {
|
|
|
223
223
|
setIsLoading(false);
|
|
224
224
|
}
|
|
225
225
|
}, [options, activeLocale]);
|
|
226
|
+
/**
|
|
227
|
+
* Shared request body for the external-provider start routes (PayPal,
|
|
228
|
+
* Up2pay) — identical to the manual body minus paymentMethodId.
|
|
229
|
+
*/
|
|
230
|
+
const buildExternalBody = useCallback(() => {
|
|
231
|
+
const items = getCartItemsWithFallback();
|
|
232
|
+
if (items.length === 0) {
|
|
233
|
+
const emptyError = { error: 'Your cart is empty', code: 'EMPTY_CART' };
|
|
234
|
+
setError(emptyError);
|
|
235
|
+
options?.onError?.(emptyError);
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
const visitorId = getVisitorId();
|
|
239
|
+
const { id: sessionId } = getSessionId();
|
|
240
|
+
return {
|
|
241
|
+
locale: activeLocale,
|
|
242
|
+
items: items.map((item) => ({
|
|
243
|
+
productId: item.productId,
|
|
244
|
+
variantId: item.variantId,
|
|
245
|
+
name: item.name,
|
|
246
|
+
price: Math.round(item.price * 100),
|
|
247
|
+
quantity: item.quantity,
|
|
248
|
+
image: item.image,
|
|
249
|
+
previewImages: item.previewImages,
|
|
250
|
+
})),
|
|
251
|
+
customerEmail: options?.customerEmail,
|
|
252
|
+
customerId: options?.customerId,
|
|
253
|
+
shippingAddress: options?.shippingAddress,
|
|
254
|
+
billingAddress: options?.billingAddress,
|
|
255
|
+
selectedShipping: options?.selectedShipping,
|
|
256
|
+
discountCode: options?.discountCode,
|
|
257
|
+
metadata: {
|
|
258
|
+
...(visitorId ? { rovela_visitor_id: visitorId } : {}),
|
|
259
|
+
...(sessionId ? { rovela_session_id: sessionId } : {}),
|
|
260
|
+
...options?.metadata,
|
|
261
|
+
},
|
|
262
|
+
idempotencyKey: typeof crypto !== 'undefined' && 'randomUUID' in crypto ? crypto.randomUUID() : undefined,
|
|
263
|
+
};
|
|
264
|
+
}, [options, activeLocale]);
|
|
265
|
+
/**
|
|
266
|
+
* Up2pay e-Transactions: start the payment, then auto-submit the signed
|
|
267
|
+
* form to the hosted payment page. Field ORDER is part of the signature —
|
|
268
|
+
* the form is built exactly as returned. Cart clears on the success page
|
|
269
|
+
* only (the customer may cancel at the hosted page and come back).
|
|
270
|
+
*/
|
|
271
|
+
const checkoutUp2pay = useCallback(async () => {
|
|
272
|
+
setError(null);
|
|
273
|
+
const body = buildExternalBody();
|
|
274
|
+
if (!body)
|
|
275
|
+
return;
|
|
276
|
+
setIsLoading(true);
|
|
277
|
+
try {
|
|
278
|
+
const response = await fetch('/api/checkout/up2pay', {
|
|
279
|
+
method: 'POST',
|
|
280
|
+
headers: { 'Content-Type': 'application/json' },
|
|
281
|
+
body: JSON.stringify(body),
|
|
282
|
+
});
|
|
283
|
+
const data = await response.json();
|
|
284
|
+
if (!response.ok) {
|
|
285
|
+
const apiError = data;
|
|
286
|
+
setError(apiError);
|
|
287
|
+
options?.onError?.(apiError);
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
const result = data;
|
|
291
|
+
const form = document.createElement('form');
|
|
292
|
+
form.method = 'POST';
|
|
293
|
+
form.action = result.url;
|
|
294
|
+
form.style.display = 'none';
|
|
295
|
+
for (const field of result.fields) {
|
|
296
|
+
const input = document.createElement('input');
|
|
297
|
+
input.type = 'hidden';
|
|
298
|
+
input.name = field.name;
|
|
299
|
+
input.value = field.value;
|
|
300
|
+
form.appendChild(input);
|
|
301
|
+
}
|
|
302
|
+
document.body.appendChild(form);
|
|
303
|
+
form.submit();
|
|
304
|
+
// isLoading stays true through the navigation — deliberate.
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
const networkError = {
|
|
308
|
+
error: 'Network error. Please try again.',
|
|
309
|
+
code: 'CHECKOUT_ERROR',
|
|
310
|
+
};
|
|
311
|
+
setError(networkError);
|
|
312
|
+
options?.onError?.(networkError);
|
|
313
|
+
setIsLoading(false);
|
|
314
|
+
}
|
|
315
|
+
}, [options, buildExternalBody]);
|
|
316
|
+
/** PayPal leg 1: pending order + PayPal order (Smart Buttons createOrder). */
|
|
317
|
+
const createPaypalOrder = useCallback(async () => {
|
|
318
|
+
setError(null);
|
|
319
|
+
const body = buildExternalBody();
|
|
320
|
+
if (!body)
|
|
321
|
+
return null;
|
|
322
|
+
try {
|
|
323
|
+
const response = await fetch('/api/checkout/paypal', {
|
|
324
|
+
method: 'POST',
|
|
325
|
+
headers: { 'Content-Type': 'application/json' },
|
|
326
|
+
body: JSON.stringify(body),
|
|
327
|
+
});
|
|
328
|
+
const data = await response.json();
|
|
329
|
+
if (!response.ok) {
|
|
330
|
+
const apiError = data;
|
|
331
|
+
setError(apiError);
|
|
332
|
+
options?.onError?.(apiError);
|
|
333
|
+
return null;
|
|
334
|
+
}
|
|
335
|
+
const result = data;
|
|
336
|
+
return { paypalOrderId: result.paypalOrderId, approveUrl: result.approveUrl };
|
|
337
|
+
}
|
|
338
|
+
catch {
|
|
339
|
+
const networkError = {
|
|
340
|
+
error: 'Network error. Please try again.',
|
|
341
|
+
code: 'CHECKOUT_ERROR',
|
|
342
|
+
};
|
|
343
|
+
setError(networkError);
|
|
344
|
+
options?.onError?.(networkError);
|
|
345
|
+
return null;
|
|
346
|
+
}
|
|
347
|
+
}, [options, buildExternalBody]);
|
|
348
|
+
/** PayPal leg 2: server-side capture (Smart Buttons onApprove). */
|
|
349
|
+
const capturePaypalOrder = useCallback(async (paypalOrderId) => {
|
|
350
|
+
setError(null);
|
|
351
|
+
setIsLoading(true);
|
|
352
|
+
try {
|
|
353
|
+
const response = await fetch('/api/checkout/paypal/capture', {
|
|
354
|
+
method: 'POST',
|
|
355
|
+
headers: { 'Content-Type': 'application/json' },
|
|
356
|
+
body: JSON.stringify({ paypalOrderId }),
|
|
357
|
+
});
|
|
358
|
+
const data = await response.json();
|
|
359
|
+
if (!response.ok) {
|
|
360
|
+
const apiError = data;
|
|
361
|
+
setError(apiError);
|
|
362
|
+
options?.onError?.(apiError);
|
|
363
|
+
return null;
|
|
364
|
+
}
|
|
365
|
+
const result = data;
|
|
366
|
+
// Cart is cleared on the success page (same contract as Stripe).
|
|
367
|
+
window.location.href = `/checkout/success?orderId=${encodeURIComponent(result.orderId)}`;
|
|
368
|
+
return { orderId: result.orderId };
|
|
369
|
+
}
|
|
370
|
+
catch {
|
|
371
|
+
const networkError = {
|
|
372
|
+
error: 'Network error. Please try again.',
|
|
373
|
+
code: 'CHECKOUT_ERROR',
|
|
374
|
+
};
|
|
375
|
+
setError(networkError);
|
|
376
|
+
options?.onError?.(networkError);
|
|
377
|
+
return null;
|
|
378
|
+
}
|
|
379
|
+
finally {
|
|
380
|
+
setIsLoading(false);
|
|
381
|
+
}
|
|
382
|
+
}, [options]);
|
|
226
383
|
return {
|
|
227
384
|
checkout,
|
|
228
385
|
checkoutManual,
|
|
386
|
+
checkoutUp2pay,
|
|
387
|
+
createPaypalOrder,
|
|
388
|
+
capturePaypalOrder,
|
|
229
389
|
isLoading,
|
|
230
390
|
error,
|
|
231
391
|
clearError: useCallback(() => setError(null), []),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCheckout.js","sourceRoot":"","sources":["../../../src/checkout/hooks/useCheckout.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useCheckout.js","sourceRoot":"","sources":["../../../src/checkout/hooks/useCheckout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/checkout/server/confirm-order
|
|
3
|
+
*
|
|
4
|
+
* The shared "external payment confirmed" helper — the ONE place a pending
|
|
5
|
+
* external-provider order (PayPal, Up2pay) flips to paid. Both providers'
|
|
6
|
+
* proof-of-payment paths call it: the PayPal capture route + webhook
|
|
7
|
+
* backstop, and the Up2pay IPN.
|
|
8
|
+
*
|
|
9
|
+
* MONEY INVARIANTS (do not weaken):
|
|
10
|
+
* - The flip is an ATOMIC conditional UPDATE (claimPendingOrderPaid) —
|
|
11
|
+
* duplicate IPNs / capture-vs-webhook races produce exactly ONE email.
|
|
12
|
+
* - The paid amount is verified against the DB ORDER (never the callback's
|
|
13
|
+
* own claims about what was owed). A mismatch NEVER flips the order.
|
|
14
|
+
* - Every side effect (metafields stamp, email) is guarded — a failure
|
|
15
|
+
* after the claim can never un-pay the order or throw to the caller.
|
|
16
|
+
*/
|
|
17
|
+
export type ConfirmExternalOrderResult = {
|
|
18
|
+
status: 'confirmed';
|
|
19
|
+
orderId: string;
|
|
20
|
+
} | {
|
|
21
|
+
status: 'already_processed';
|
|
22
|
+
orderId: string;
|
|
23
|
+
} | {
|
|
24
|
+
status: 'not_found';
|
|
25
|
+
} | {
|
|
26
|
+
status: 'amount_mismatch';
|
|
27
|
+
orderId: string;
|
|
28
|
+
expectedCents: number;
|
|
29
|
+
paidCents: number;
|
|
30
|
+
};
|
|
31
|
+
export interface ConfirmExternalOrderInput {
|
|
32
|
+
/** The payment reference (paypal_… / up2pay_…) stored on the order. */
|
|
33
|
+
reference: string;
|
|
34
|
+
/** The provider this proof came from — a cross-provider reference is rejected. */
|
|
35
|
+
expectedProvider: 'paypal' | 'up2pay';
|
|
36
|
+
/** Human label for the email's payment status line (e.g. 'PayPal'). */
|
|
37
|
+
providerLabel: string;
|
|
38
|
+
/**
|
|
39
|
+
* The amount the provider says was paid, in cents. When provided it MUST
|
|
40
|
+
* equal the DB order total or the confirmation is refused. Pass null only
|
|
41
|
+
* when the channel already guarantees the amount (never for Up2pay IPNs).
|
|
42
|
+
*/
|
|
43
|
+
paidAmountCents?: number | null;
|
|
44
|
+
/** The paid currency (uppercase ISO) — checked against the order when both known. */
|
|
45
|
+
paidCurrency?: string | null;
|
|
46
|
+
/** Provider transaction identifiers, stamped into orders.metafields. */
|
|
47
|
+
transaction?: Array<{
|
|
48
|
+
key: string;
|
|
49
|
+
label: string;
|
|
50
|
+
value: string;
|
|
51
|
+
}>;
|
|
52
|
+
}
|
|
53
|
+
export declare function confirmExternalOrderPaid(input: ConfirmExternalOrderInput): Promise<ConfirmExternalOrderResult>;
|
|
54
|
+
//# sourceMappingURL=confirm-order.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm-order.d.ts","sourceRoot":"","sources":["../../../src/checkout/server/confirm-order.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAgBH,MAAM,MAAM,0BAA0B,GAClC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5F,MAAM,WAAW,yBAAyB;IACxC,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAA;IACjB,kFAAkF;IAClF,gBAAgB,EAAE,QAAQ,GAAG,QAAQ,CAAA;IACrC,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,wEAAwE;IACxE,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACnE;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,0BAA0B,CAAC,CAgErC"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/checkout/server/confirm-order
|
|
3
|
+
*
|
|
4
|
+
* The shared "external payment confirmed" helper — the ONE place a pending
|
|
5
|
+
* external-provider order (PayPal, Up2pay) flips to paid. Both providers'
|
|
6
|
+
* proof-of-payment paths call it: the PayPal capture route + webhook
|
|
7
|
+
* backstop, and the Up2pay IPN.
|
|
8
|
+
*
|
|
9
|
+
* MONEY INVARIANTS (do not weaken):
|
|
10
|
+
* - The flip is an ATOMIC conditional UPDATE (claimPendingOrderPaid) —
|
|
11
|
+
* duplicate IPNs / capture-vs-webhook races produce exactly ONE email.
|
|
12
|
+
* - The paid amount is verified against the DB ORDER (never the callback's
|
|
13
|
+
* own claims about what was owed). A mismatch NEVER flips the order.
|
|
14
|
+
* - Every side effect (metafields stamp, email) is guarded — a failure
|
|
15
|
+
* after the claim can never un-pay the order or throw to the caller.
|
|
16
|
+
*/
|
|
17
|
+
import { findOrderByPaymentIntent, findOrderById, claimPendingOrderPaid, appendOrderMetafields, } from '../../core/db/queries';
|
|
18
|
+
import { sendOrderConfirmation, formatPrice, formatDate, formatOrderNumber, } from '../../emails';
|
|
19
|
+
export async function confirmExternalOrderPaid(input) {
|
|
20
|
+
const order = await findOrderByPaymentIntent(input.reference);
|
|
21
|
+
if (!order) {
|
|
22
|
+
console.warn(`[Checkout Confirm] no order for reference ${input.reference}`);
|
|
23
|
+
return { status: 'not_found' };
|
|
24
|
+
}
|
|
25
|
+
if (order.paymentProvider !== input.expectedProvider) {
|
|
26
|
+
console.error(`[Checkout Confirm] provider mismatch for ${input.reference}: order=${order.paymentProvider} proof=${input.expectedProvider}`);
|
|
27
|
+
return { status: 'not_found' };
|
|
28
|
+
}
|
|
29
|
+
// ── Amount check against the DB (the order priced by buildQuote) ──────────
|
|
30
|
+
const expectedCents = Math.round(parseFloat(order.total) * 100);
|
|
31
|
+
if (input.paidAmountCents != null && input.paidAmountCents !== expectedCents) {
|
|
32
|
+
console.error(`[Checkout Confirm] AMOUNT MISMATCH for ${input.reference}: expected ${expectedCents}, provider reported ${input.paidAmountCents} — order left pending`);
|
|
33
|
+
return {
|
|
34
|
+
status: 'amount_mismatch',
|
|
35
|
+
orderId: order.id,
|
|
36
|
+
expectedCents,
|
|
37
|
+
paidCents: input.paidAmountCents,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (input.paidCurrency &&
|
|
41
|
+
order.currency &&
|
|
42
|
+
input.paidCurrency.toUpperCase() !== order.currency.toUpperCase()) {
|
|
43
|
+
console.error(`[Checkout Confirm] CURRENCY MISMATCH for ${input.reference}: order ${order.currency}, provider ${input.paidCurrency} — order left pending`);
|
|
44
|
+
return {
|
|
45
|
+
status: 'amount_mismatch',
|
|
46
|
+
orderId: order.id,
|
|
47
|
+
expectedCents,
|
|
48
|
+
paidCents: input.paidAmountCents ?? expectedCents,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
// ── Atomic pending → paid claim (exactly one winner) ─────────────────────
|
|
52
|
+
const claimed = await claimPendingOrderPaid(order.id);
|
|
53
|
+
if (!claimed) {
|
|
54
|
+
return { status: 'already_processed', orderId: order.id };
|
|
55
|
+
}
|
|
56
|
+
// ── Side effects: all guarded, never fail the confirmation ───────────────
|
|
57
|
+
if (input.transaction && input.transaction.length > 0) {
|
|
58
|
+
try {
|
|
59
|
+
await appendOrderMetafields(order.id, input.transaction);
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
console.error('[Checkout Confirm] metafields stamp failed:', err);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
await sendPaidConfirmationEmail(order.id, input.providerLabel);
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
console.error('[Checkout Confirm] confirmation email failed:', err);
|
|
70
|
+
}
|
|
71
|
+
return { status: 'confirmed', orderId: order.id };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Build + send the order confirmation from DB state (the order row + its
|
|
75
|
+
* items) — external providers confirm asynchronously, so unlike the manual
|
|
76
|
+
* path there is no in-memory Quote to read from. AWAITED by callers (the
|
|
77
|
+
* serverless-freeze rule): the caller's response must not return before the
|
|
78
|
+
* send resolves.
|
|
79
|
+
*/
|
|
80
|
+
async function sendPaidConfirmationEmail(orderId, providerLabel) {
|
|
81
|
+
const order = await findOrderById(orderId);
|
|
82
|
+
if (!order || !order.email)
|
|
83
|
+
return;
|
|
84
|
+
const currency = order.currency ?? 'USD';
|
|
85
|
+
const storeUrl = process.env.NEXT_PUBLIC_APP_URL || '';
|
|
86
|
+
const addr = order.shippingAddress;
|
|
87
|
+
const pickup = !!order.pickupLocationId;
|
|
88
|
+
const emailItems = order.items.map((item) => {
|
|
89
|
+
const attrs = (item.attributes ?? {});
|
|
90
|
+
const variantRef = typeof attrs.variantRef === 'string' ? attrs.variantRef : null;
|
|
91
|
+
return {
|
|
92
|
+
name: item.name,
|
|
93
|
+
quantity: item.quantity,
|
|
94
|
+
// order_items.price is a decimal STRING — exactly what formatPrice wants.
|
|
95
|
+
price: formatPrice(item.price, currency),
|
|
96
|
+
imageUrl: item.image ?? undefined,
|
|
97
|
+
// Configurator lines (non-UUID variant refs) attach their design preview,
|
|
98
|
+
// mirroring the manual + webhook paths (0.24.1).
|
|
99
|
+
attachImage: !!(item.image && variantRef),
|
|
100
|
+
};
|
|
101
|
+
});
|
|
102
|
+
// Every order on this path snapshots a shipping address at create time
|
|
103
|
+
// (delivery = entered address, pickup = the location's, relay = the
|
|
104
|
+
// point's); the empty-string fallback only guards hand-edited rows.
|
|
105
|
+
const emailAddress = {
|
|
106
|
+
name: pickup
|
|
107
|
+
? `Pickup — ${(order.shippingMethod ?? '').replace(/^Pickup — /, '')}`.trim()
|
|
108
|
+
: order.relay
|
|
109
|
+
? `Point relais — ${order.relay.name}`
|
|
110
|
+
: `${addr?.firstName ?? ''} ${addr?.lastName ?? ''}`.trim() ||
|
|
111
|
+
order.email.split('@')[0] ||
|
|
112
|
+
'Customer',
|
|
113
|
+
line1: addr?.line1 ?? '',
|
|
114
|
+
line2: addr?.line2,
|
|
115
|
+
city: addr?.city ?? '',
|
|
116
|
+
state: addr?.state ?? '',
|
|
117
|
+
postalCode: addr?.postalCode ?? '',
|
|
118
|
+
country: addr?.country ?? '',
|
|
119
|
+
};
|
|
120
|
+
const discountCents = order.discountAmount ? Math.round(parseFloat(order.discountAmount) * 100) : 0;
|
|
121
|
+
const shippingCents = Math.round(parseFloat(order.shipping) * 100);
|
|
122
|
+
await sendOrderConfirmation({
|
|
123
|
+
locale: order.locale ?? null,
|
|
124
|
+
to: order.email,
|
|
125
|
+
customerName: addr?.firstName || order.email.split('@')[0] || 'Customer',
|
|
126
|
+
orderNumber: formatOrderNumber(order.id),
|
|
127
|
+
pickup,
|
|
128
|
+
orderDate: formatDate(new Date(order.createdAt)),
|
|
129
|
+
paymentStatus: `Paid — ${providerLabel}`,
|
|
130
|
+
items: emailItems,
|
|
131
|
+
subtotal: formatPrice(order.subtotal, currency),
|
|
132
|
+
discount: discountCents > 0 ? `-${formatPrice(order.discountAmount, currency)}` : undefined,
|
|
133
|
+
discountCode: order.discountCode ?? undefined,
|
|
134
|
+
shippingCost: shippingCents > 0 ? formatPrice(order.shipping, currency) : 'Free',
|
|
135
|
+
tax: formatPrice(order.tax, currency),
|
|
136
|
+
taxBreakdown: order.taxBreakdown && order.taxBreakdown.length > 1
|
|
137
|
+
? order.taxBreakdown.map((e) => ({
|
|
138
|
+
rate: e.rate,
|
|
139
|
+
amount: formatPrice((e.taxCents / 100).toFixed(2), currency),
|
|
140
|
+
}))
|
|
141
|
+
: undefined,
|
|
142
|
+
total: formatPrice(order.total, currency),
|
|
143
|
+
shippingAddress: emailAddress,
|
|
144
|
+
orderTrackingUrl: `${storeUrl}/account/orders/${order.id}`,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=confirm-order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm-order.js","sourceRoot":"","sources":["../../../src/checkout/server/confirm-order.ts"],"names":[],"mappings":"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"}
|