@rovela-ai/sdk 0.24.1 → 0.25.1
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 +2 -0
- package/dist/admin/components/PaymentProviderPanels.d.ts.map +1 -0
- package/dist/admin/components/PaymentProviderPanels.js +265 -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 +7 -20
- package/dist/admin/components/PaymentSettings.js.map +1 -1
- package/dist/admin/components/emails/EmailSendingPanel.d.ts.map +1 -1
- package/dist/admin/components/emails/EmailSendingPanel.js +2 -2
- package/dist/admin/components/emails/EmailSendingPanel.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/cart/store.d.ts +4 -1
- package/dist/cart/store.d.ts.map +1 -1
- package/dist/cart/store.js +189 -161
- package/dist/cart/store.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/manual.d.ts.map +1 -1
- package/dist/checkout/api/manual.js +5 -1
- package/dist/checkout/api/manual.js.map +1 -1
- package/dist/checkout/api/payment-methods.d.ts +23 -6
- package/dist/checkout/api/payment-methods.d.ts.map +1 -1
- package/dist/checkout/api/payment-methods.js +67 -8
- 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 +64 -9
- 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/components/payment-logos.d.ts +21 -0
- package/dist/checkout/components/payment-logos.d.ts.map +1 -0
- package/dist/checkout/components/payment-logos.js +21 -0
- package/dist/checkout/components/payment-logos.js.map +1 -0
- 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 +187 -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 +6 -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 +6 -0
- package/dist/core/i18n/messages/fr.js.map +1 -1
- package/docs/changelog/epoch-12-payment-providers.md +152 -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
|
@@ -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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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/checkout/server/external-checkout
|
|
3
|
+
*
|
|
4
|
+
* Shared "start an external-provider payment" leg (PayPal, Up2pay): the
|
|
5
|
+
* same gates → buildQuote → pending-order sequence as the manual path
|
|
6
|
+
* (checkout/api/manual.ts), minus the confirmation email — external orders
|
|
7
|
+
* email on CONFIRMED payment (confirm-order.ts), not at creation.
|
|
8
|
+
*
|
|
9
|
+
* §55 invariants preserved verbatim: session-resolved identity, the ONE
|
|
10
|
+
* pricing engine in the ONE mode, PricingError → 4xx, idempotent reference
|
|
11
|
+
* through the shared payment-intent column. Discount redemptions + purchase
|
|
12
|
+
* analytics record at CREATE time — deliberate parity with the manual path
|
|
13
|
+
* (a pending order that is never paid keeps its redemption, exactly like an
|
|
14
|
+
* unpaid COD order; consistency beats a second bookkeeping model).
|
|
15
|
+
*/
|
|
16
|
+
import { NextResponse } from 'next/server';
|
|
17
|
+
import { findSettings } from '../../core/db/queries';
|
|
18
|
+
import type { Quote } from './pricing';
|
|
19
|
+
import type { Address } from '../../core/types';
|
|
20
|
+
import type { CheckoutApiError, ShippingOption } from '../types';
|
|
21
|
+
export interface ExternalCheckoutRequestBody {
|
|
22
|
+
locale?: string;
|
|
23
|
+
items: Array<{
|
|
24
|
+
productId?: string;
|
|
25
|
+
variantId?: string;
|
|
26
|
+
name?: string;
|
|
27
|
+
price?: number;
|
|
28
|
+
quantity: number;
|
|
29
|
+
image?: string;
|
|
30
|
+
previewImages?: string[];
|
|
31
|
+
}>;
|
|
32
|
+
customerEmail?: string;
|
|
33
|
+
shippingAddress?: Address;
|
|
34
|
+
billingAddress?: Address;
|
|
35
|
+
selectedShipping?: ShippingOption;
|
|
36
|
+
discountCode?: string;
|
|
37
|
+
metadata?: Record<string, string>;
|
|
38
|
+
idempotencyKey?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface PreparedExternalOrder {
|
|
41
|
+
ok: true;
|
|
42
|
+
orderId: string;
|
|
43
|
+
isNew: boolean;
|
|
44
|
+
reference: string;
|
|
45
|
+
quote: Quote;
|
|
46
|
+
email: string;
|
|
47
|
+
orderLocale: string | null;
|
|
48
|
+
orderShippingAddress: Address;
|
|
49
|
+
orderBillingAddress: Address | undefined;
|
|
50
|
+
settings: Awaited<ReturnType<typeof findSettings>>;
|
|
51
|
+
}
|
|
52
|
+
export interface PreparedExternalOrderError {
|
|
53
|
+
ok: false;
|
|
54
|
+
response: NextResponse<CheckoutApiError>;
|
|
55
|
+
}
|
|
56
|
+
export declare function preparePendingExternalOrder(input: {
|
|
57
|
+
body: ExternalCheckoutRequestBody;
|
|
58
|
+
provider: 'paypal' | 'up2pay';
|
|
59
|
+
/** Snapshot for orders.payment_method_label (survives config changes). */
|
|
60
|
+
providerLabel: string;
|
|
61
|
+
}): Promise<PreparedExternalOrder | PreparedExternalOrderError>;
|
|
62
|
+
/**
|
|
63
|
+
* The absolute base URL for return/IPN links handed to a PSP. Prefers the
|
|
64
|
+
* deployed store's canonical env; falls back to the request origin (sandbox
|
|
65
|
+
* previews).
|
|
66
|
+
*/
|
|
67
|
+
export declare function resolveStoreBaseUrl(requestOrigin: string): string;
|
|
68
|
+
//# sourceMappingURL=external-checkout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-checkout.d.ts","sourceRoot":"","sources":["../../../src/checkout/server/external-checkout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,YAAY,EAA4B,MAAM,uBAAuB,CAAA;AAE9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAItC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAGhE,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,KAAK,CAAC;QACX,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KACzB,CAAC,CAAA;IACF,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gBAAgB,CAAC,EAAE,cAAc,CAAA;IACjC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,IAAI,CAAA;IACR,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,oBAAoB,EAAE,OAAO,CAAA;IAC7B,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAA;CACnD;AAED,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,KAAK,CAAA;IACT,QAAQ,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAA;CACzC;AAOD,wBAAsB,2BAA2B,CAAC,KAAK,EAAE;IACvD,IAAI,EAAE,2BAA2B,CAAA;IACjC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC7B,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,qBAAqB,GAAG,0BAA0B,CAAC,CAuK9D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAIjE"}
|