@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.
Files changed (128) hide show
  1. package/dist/admin/api/index.d.ts +1 -0
  2. package/dist/admin/api/index.d.ts.map +1 -1
  3. package/dist/admin/api/index.js +2 -0
  4. package/dist/admin/api/index.js.map +1 -1
  5. package/dist/admin/api/payment-providers.d.ts +69 -0
  6. package/dist/admin/api/payment-providers.d.ts.map +1 -0
  7. package/dist/admin/api/payment-providers.js +206 -0
  8. package/dist/admin/api/payment-providers.js.map +1 -0
  9. package/dist/admin/api/settings.d.ts.map +1 -1
  10. package/dist/admin/api/settings.js +4 -1
  11. package/dist/admin/api/settings.js.map +1 -1
  12. package/dist/admin/components/OrderDetails.d.ts.map +1 -1
  13. package/dist/admin/components/OrderDetails.js +11 -2
  14. package/dist/admin/components/OrderDetails.js.map +1 -1
  15. package/dist/admin/components/PaymentProviderPanels.d.ts +2 -0
  16. package/dist/admin/components/PaymentProviderPanels.d.ts.map +1 -0
  17. package/dist/admin/components/PaymentProviderPanels.js +265 -0
  18. package/dist/admin/components/PaymentProviderPanels.js.map +1 -0
  19. package/dist/admin/components/PaymentSettings.d.ts.map +1 -1
  20. package/dist/admin/components/PaymentSettings.js +7 -20
  21. package/dist/admin/components/PaymentSettings.js.map +1 -1
  22. package/dist/admin/components/emails/EmailSendingPanel.d.ts.map +1 -1
  23. package/dist/admin/components/emails/EmailSendingPanel.js +2 -2
  24. package/dist/admin/components/emails/EmailSendingPanel.js.map +1 -1
  25. package/dist/admin/components/index.d.ts +1 -0
  26. package/dist/admin/components/index.d.ts.map +1 -1
  27. package/dist/admin/components/index.js +1 -0
  28. package/dist/admin/components/index.js.map +1 -1
  29. package/dist/admin/integrations/registry.d.ts.map +1 -1
  30. package/dist/admin/integrations/registry.js +5 -73
  31. package/dist/admin/integrations/registry.js.map +1 -1
  32. package/dist/cart/store.d.ts +4 -1
  33. package/dist/cart/store.d.ts.map +1 -1
  34. package/dist/cart/store.js +189 -161
  35. package/dist/cart/store.js.map +1 -1
  36. package/dist/checkout/api/index.d.ts +6 -0
  37. package/dist/checkout/api/index.d.ts.map +1 -1
  38. package/dist/checkout/api/index.js +6 -0
  39. package/dist/checkout/api/index.js.map +1 -1
  40. package/dist/checkout/api/manual.d.ts.map +1 -1
  41. package/dist/checkout/api/manual.js +5 -1
  42. package/dist/checkout/api/manual.js.map +1 -1
  43. package/dist/checkout/api/payment-methods.d.ts +23 -6
  44. package/dist/checkout/api/payment-methods.d.ts.map +1 -1
  45. package/dist/checkout/api/payment-methods.js +67 -8
  46. package/dist/checkout/api/payment-methods.js.map +1 -1
  47. package/dist/checkout/api/paypal-capture.d.ts +38 -0
  48. package/dist/checkout/api/paypal-capture.d.ts.map +1 -0
  49. package/dist/checkout/api/paypal-capture.js +126 -0
  50. package/dist/checkout/api/paypal-capture.js.map +1 -0
  51. package/dist/checkout/api/paypal-webhook.d.ts +24 -0
  52. package/dist/checkout/api/paypal-webhook.d.ts.map +1 -0
  53. package/dist/checkout/api/paypal-webhook.js +122 -0
  54. package/dist/checkout/api/paypal-webhook.js.map +1 -0
  55. package/dist/checkout/api/paypal.d.ts +30 -0
  56. package/dist/checkout/api/paypal.d.ts.map +1 -0
  57. package/dist/checkout/api/paypal.js +70 -0
  58. package/dist/checkout/api/paypal.js.map +1 -0
  59. package/dist/checkout/api/up2pay-ipn.d.ts +28 -0
  60. package/dist/checkout/api/up2pay-ipn.d.ts.map +1 -0
  61. package/dist/checkout/api/up2pay-ipn.js +88 -0
  62. package/dist/checkout/api/up2pay-ipn.js.map +1 -0
  63. package/dist/checkout/api/up2pay.d.ts +34 -0
  64. package/dist/checkout/api/up2pay.d.ts.map +1 -0
  65. package/dist/checkout/api/up2pay.js +82 -0
  66. package/dist/checkout/api/up2pay.js.map +1 -0
  67. package/dist/checkout/components/CheckoutFlow.d.ts.map +1 -1
  68. package/dist/checkout/components/CheckoutFlow.js +64 -9
  69. package/dist/checkout/components/CheckoutFlow.js.map +1 -1
  70. package/dist/checkout/components/PayPalCheckoutButtons.d.ts +32 -0
  71. package/dist/checkout/components/PayPalCheckoutButtons.d.ts.map +1 -0
  72. package/dist/checkout/components/PayPalCheckoutButtons.js +116 -0
  73. package/dist/checkout/components/PayPalCheckoutButtons.js.map +1 -0
  74. package/dist/checkout/components/index.d.ts +2 -0
  75. package/dist/checkout/components/index.d.ts.map +1 -1
  76. package/dist/checkout/components/index.js +1 -0
  77. package/dist/checkout/components/index.js.map +1 -1
  78. package/dist/checkout/components/payment-logos.d.ts +21 -0
  79. package/dist/checkout/components/payment-logos.d.ts.map +1 -0
  80. package/dist/checkout/components/payment-logos.js +21 -0
  81. package/dist/checkout/components/payment-logos.js.map +1 -0
  82. package/dist/checkout/hooks/useCheckout.d.ts.map +1 -1
  83. package/dist/checkout/hooks/useCheckout.js +160 -0
  84. package/dist/checkout/hooks/useCheckout.js.map +1 -1
  85. package/dist/checkout/server/confirm-order.d.ts +54 -0
  86. package/dist/checkout/server/confirm-order.d.ts.map +1 -0
  87. package/dist/checkout/server/confirm-order.js +147 -0
  88. package/dist/checkout/server/confirm-order.js.map +1 -0
  89. package/dist/checkout/server/external-checkout.d.ts +68 -0
  90. package/dist/checkout/server/external-checkout.d.ts.map +1 -0
  91. package/dist/checkout/server/external-checkout.js +187 -0
  92. package/dist/checkout/server/external-checkout.js.map +1 -0
  93. package/dist/checkout/server/paypal.d.ts +127 -0
  94. package/dist/checkout/server/paypal.d.ts.map +1 -0
  95. package/dist/checkout/server/paypal.js +274 -0
  96. package/dist/checkout/server/paypal.js.map +1 -0
  97. package/dist/checkout/server/up2pay.d.ts +152 -0
  98. package/dist/checkout/server/up2pay.d.ts.map +1 -0
  99. package/dist/checkout/server/up2pay.js +287 -0
  100. package/dist/checkout/server/up2pay.js.map +1 -0
  101. package/dist/checkout/types.d.ts +26 -1
  102. package/dist/checkout/types.d.ts.map +1 -1
  103. package/dist/core/db/queries.d.ts +68 -39
  104. package/dist/core/db/queries.d.ts.map +1 -1
  105. package/dist/core/db/queries.js +96 -0
  106. package/dist/core/db/queries.js.map +1 -1
  107. package/dist/core/db/schema.d.ts +210 -5
  108. package/dist/core/db/schema.d.ts.map +1 -1
  109. package/dist/core/db/schema.js +33 -0
  110. package/dist/core/db/schema.js.map +1 -1
  111. package/dist/core/i18n/messages/en.d.ts.map +1 -1
  112. package/dist/core/i18n/messages/en.js +6 -0
  113. package/dist/core/i18n/messages/en.js.map +1 -1
  114. package/dist/core/i18n/messages/fr.d.ts.map +1 -1
  115. package/dist/core/i18n/messages/fr.js +6 -0
  116. package/dist/core/i18n/messages/fr.js.map +1 -1
  117. package/docs/changelog/epoch-12-payment-providers.md +152 -0
  118. package/package.json +26 -2
  119. package/templates/store-template/.claude/skills/build-feature/SKILL.md +2 -1
  120. package/templates/store-template/app/api/admin/payments/paypal/route.ts +10 -0
  121. package/templates/store-template/app/api/admin/payments/up2pay/route.ts +10 -0
  122. package/templates/store-template/app/api/checkout/paypal/capture/route.ts +8 -0
  123. package/templates/store-template/app/api/checkout/paypal/return/route.ts +9 -0
  124. package/templates/store-template/app/api/checkout/paypal/route.ts +9 -0
  125. package/templates/store-template/app/api/checkout/paypal/webhook/route.ts +9 -0
  126. package/templates/store-template/app/api/checkout/up2pay/ipn/route.ts +8 -0
  127. package/templates/store-template/app/api/checkout/up2pay/route.ts +9 -0
  128. 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"}