@rovela-ai/sdk 0.24.0 → 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.
Files changed (153) 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 +3 -0
  16. package/dist/admin/components/PaymentProviderPanels.d.ts.map +1 -0
  17. package/dist/admin/components/PaymentProviderPanels.js +202 -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 +2 -1
  21. package/dist/admin/components/PaymentSettings.js.map +1 -1
  22. package/dist/admin/components/index.d.ts +1 -0
  23. package/dist/admin/components/index.d.ts.map +1 -1
  24. package/dist/admin/components/index.js +1 -0
  25. package/dist/admin/components/index.js.map +1 -1
  26. package/dist/admin/integrations/registry.d.ts.map +1 -1
  27. package/dist/admin/integrations/registry.js +5 -73
  28. package/dist/admin/integrations/registry.js.map +1 -1
  29. package/dist/checkout/api/index.d.ts +6 -0
  30. package/dist/checkout/api/index.d.ts.map +1 -1
  31. package/dist/checkout/api/index.js +6 -0
  32. package/dist/checkout/api/index.js.map +1 -1
  33. package/dist/checkout/api/manual.d.ts.map +1 -1
  34. package/dist/checkout/api/manual.js +5 -0
  35. package/dist/checkout/api/manual.js.map +1 -1
  36. package/dist/checkout/api/payment-methods.d.ts +22 -6
  37. package/dist/checkout/api/payment-methods.d.ts.map +1 -1
  38. package/dist/checkout/api/payment-methods.js +46 -6
  39. package/dist/checkout/api/payment-methods.js.map +1 -1
  40. package/dist/checkout/api/paypal-capture.d.ts +38 -0
  41. package/dist/checkout/api/paypal-capture.d.ts.map +1 -0
  42. package/dist/checkout/api/paypal-capture.js +126 -0
  43. package/dist/checkout/api/paypal-capture.js.map +1 -0
  44. package/dist/checkout/api/paypal-webhook.d.ts +24 -0
  45. package/dist/checkout/api/paypal-webhook.d.ts.map +1 -0
  46. package/dist/checkout/api/paypal-webhook.js +122 -0
  47. package/dist/checkout/api/paypal-webhook.js.map +1 -0
  48. package/dist/checkout/api/paypal.d.ts +30 -0
  49. package/dist/checkout/api/paypal.d.ts.map +1 -0
  50. package/dist/checkout/api/paypal.js +70 -0
  51. package/dist/checkout/api/paypal.js.map +1 -0
  52. package/dist/checkout/api/up2pay-ipn.d.ts +28 -0
  53. package/dist/checkout/api/up2pay-ipn.d.ts.map +1 -0
  54. package/dist/checkout/api/up2pay-ipn.js +88 -0
  55. package/dist/checkout/api/up2pay-ipn.js.map +1 -0
  56. package/dist/checkout/api/up2pay.d.ts +34 -0
  57. package/dist/checkout/api/up2pay.d.ts.map +1 -0
  58. package/dist/checkout/api/up2pay.js +82 -0
  59. package/dist/checkout/api/up2pay.js.map +1 -0
  60. package/dist/checkout/components/CheckoutFlow.d.ts.map +1 -1
  61. package/dist/checkout/components/CheckoutFlow.js +38 -8
  62. package/dist/checkout/components/CheckoutFlow.js.map +1 -1
  63. package/dist/checkout/components/PayPalCheckoutButtons.d.ts +32 -0
  64. package/dist/checkout/components/PayPalCheckoutButtons.d.ts.map +1 -0
  65. package/dist/checkout/components/PayPalCheckoutButtons.js +116 -0
  66. package/dist/checkout/components/PayPalCheckoutButtons.js.map +1 -0
  67. package/dist/checkout/components/index.d.ts +2 -0
  68. package/dist/checkout/components/index.d.ts.map +1 -1
  69. package/dist/checkout/components/index.js +1 -0
  70. package/dist/checkout/components/index.js.map +1 -1
  71. package/dist/checkout/hooks/useCheckout.d.ts.map +1 -1
  72. package/dist/checkout/hooks/useCheckout.js +166 -0
  73. package/dist/checkout/hooks/useCheckout.js.map +1 -1
  74. package/dist/checkout/server/confirm-order.d.ts +54 -0
  75. package/dist/checkout/server/confirm-order.d.ts.map +1 -0
  76. package/dist/checkout/server/confirm-order.js +147 -0
  77. package/dist/checkout/server/confirm-order.js.map +1 -0
  78. package/dist/checkout/server/create-checkout-session.d.ts.map +1 -1
  79. package/dist/checkout/server/create-checkout-session.js +13 -0
  80. package/dist/checkout/server/create-checkout-session.js.map +1 -1
  81. package/dist/checkout/server/external-checkout.d.ts +68 -0
  82. package/dist/checkout/server/external-checkout.d.ts.map +1 -0
  83. package/dist/checkout/server/external-checkout.js +184 -0
  84. package/dist/checkout/server/external-checkout.js.map +1 -0
  85. package/dist/checkout/server/handle-webhook.js +6 -0
  86. package/dist/checkout/server/handle-webhook.js.map +1 -1
  87. package/dist/checkout/server/order-service.js +19 -0
  88. package/dist/checkout/server/order-service.js.map +1 -1
  89. package/dist/checkout/server/paypal.d.ts +127 -0
  90. package/dist/checkout/server/paypal.d.ts.map +1 -0
  91. package/dist/checkout/server/paypal.js +274 -0
  92. package/dist/checkout/server/paypal.js.map +1 -0
  93. package/dist/checkout/server/pricing.d.ts +2 -0
  94. package/dist/checkout/server/pricing.d.ts.map +1 -1
  95. package/dist/checkout/server/pricing.js +3 -0
  96. package/dist/checkout/server/pricing.js.map +1 -1
  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 +28 -1
  102. package/dist/checkout/types.d.ts.map +1 -1
  103. package/dist/core/db/queries.d.ts +61 -32
  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 +206 -1
  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 +5 -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 +5 -0
  116. package/dist/core/i18n/messages/fr.js.map +1 -1
  117. package/dist/core/types.d.ts +3 -0
  118. package/dist/core/types.d.ts.map +1 -1
  119. package/dist/emails/i18n.d.ts.map +1 -1
  120. package/dist/emails/i18n.js +4 -0
  121. package/dist/emails/i18n.js.map +1 -1
  122. package/dist/emails/send/orders.d.ts.map +1 -1
  123. package/dist/emails/send/orders.js +62 -0
  124. package/dist/emails/send/orders.js.map +1 -1
  125. package/dist/emails/sender.d.ts.map +1 -1
  126. package/dist/emails/sender.js +12 -0
  127. package/dist/emails/sender.js.map +1 -1
  128. package/dist/emails/templates/order-confirmation.d.ts.map +1 -1
  129. package/dist/emails/templates/order-confirmation.js +18 -0
  130. package/dist/emails/templates/order-confirmation.js.map +1 -1
  131. package/dist/emails/transport-smtp.d.ts +4 -0
  132. package/dist/emails/transport-smtp.d.ts.map +1 -1
  133. package/dist/emails/transport-smtp.js +9 -0
  134. package/dist/emails/transport-smtp.js.map +1 -1
  135. package/dist/emails/transport.d.ts +5 -0
  136. package/dist/emails/transport.d.ts.map +1 -1
  137. package/dist/emails/transport.js +3 -0
  138. package/dist/emails/transport.js.map +1 -1
  139. package/dist/emails/types.d.ts +21 -0
  140. package/dist/emails/types.d.ts.map +1 -1
  141. package/docs/changelog/epoch-11-order-extras.md +56 -0
  142. package/docs/changelog/epoch-12-payment-providers.md +105 -0
  143. package/package.json +25 -1
  144. package/templates/store-template/.claude/skills/build-feature/SKILL.md +2 -1
  145. package/templates/store-template/app/api/admin/payments/paypal/route.ts +10 -0
  146. package/templates/store-template/app/api/admin/payments/up2pay/route.ts +10 -0
  147. package/templates/store-template/app/api/checkout/paypal/capture/route.ts +8 -0
  148. package/templates/store-template/app/api/checkout/paypal/return/route.ts +9 -0
  149. package/templates/store-template/app/api/checkout/paypal/route.ts +9 -0
  150. package/templates/store-template/app/api/checkout/paypal/webhook/route.ts +9 -0
  151. package/templates/store-template/app/api/checkout/up2pay/ipn/route.ts +8 -0
  152. package/templates/store-template/app/api/checkout/up2pay/route.ts +9 -0
  153. package/templates/store-template/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/emails/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/emails/types.ts"],"names":[],"mappings":"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"}
@@ -40,3 +40,59 @@ None — purely additive; no existing data changes meaning.
40
40
  - Open any order in /admin — no "Additional details" card (empty metafields).
41
41
  - After a PrestaShop import with order fields mapped, imported orders show
42
42
  the card with the mapped values (e.g. "Recyclable packaging: Yes").
43
+
44
+ ---
45
+
46
+ # 0.24.1 — email attachments + design-preview confirmations
47
+
48
+ ## What changed
49
+ - `sendEmail()` accepts optional `attachments` (`{ filename, contentBase64 }[]`),
50
+ mapped natively on ALL THREE transports (Resend, Brevo HTTP, SMTP/nodemailer).
51
+ Absent = byte-identical behavior to 0.24.0.
52
+ - Order-confirmation emails: items flagged `attachImage` (EmailOrderItem) get
53
+ their `imageUrl` fetched and ATTACHED (cap 4 files / 4MB each, best-effort —
54
+ an attachment failure can never block the confirmation), plus one localized
55
+ note paragraph ("Attached to this email — the preview of your custom
56
+ piece…", EN/FR via the render-boundary localizer).
57
+ - Both confirmation call sites flag `attachImage` automatically for
58
+ NON-UUID variant refs with an image — the SDK's own configurator-line
59
+ discriminator (see order-service `isUuid`). Stock lines never attach.
60
+ - Stripe path: `extractItemsFromLineItems` now reads the line's expanded
61
+ product `images[0]` back into `item.image` — the session builder has always
62
+ SET it (`product_data.images`); the webhook simply dropped it. This also
63
+ means STOCK product thumbnails now render in card-payment confirmations
64
+ (they already did on the manual path via the quote's image passthrough).
65
+
66
+ ## Template contract
67
+ No new mounts, no new routes, no new dependencies. Plain pin bump.
68
+
69
+ ## Behavior contracts
70
+ - Stores with no configurator lines: only visible change is item thumbnails
71
+ appearing in Stripe-path confirmation emails (parity with the manual path).
72
+ - `attachments` on SendEmailOptions is additive; custom store code sending
73
+ emails is unaffected.
74
+
75
+ ## Custom-code hazards (audit greps for CC)
76
+ - Custom code that forked `extractItemsFromLineItems` behavior won't gain the
77
+ image readback — grep for `rovela_item` in store-owned webhook code.
78
+
79
+ ## MERCHANT-DATA HAZARD
80
+ None — additive.
81
+
82
+ ## Security
83
+ - Confirmation attachments only fetch URLs on the store's own
84
+ `R2_PUBLIC_URL` base — item image URLs are client-suppliable checkout
85
+ data and must never drive arbitrary server-side fetches.
86
+
87
+ ## Verify
88
+ - Place a card-paid order with a stock product: the confirmation email shows
89
+ the product thumbnail (previously text-only on the Stripe path).
90
+ - A configurator line (non-UUID variant ref + image): confirmation carries
91
+ the preview attachment + the note paragraph.
92
+ - A manual/COD order with a configurator line attaches the DESIGN preview,
93
+ not the stock product photo (the useCheckout manual body now carries
94
+ item.image — parity with the Stripe path).
95
+ - Multi-view designs attach EVERY view: `CartItem.previewImages` →
96
+ checkout passthrough (`previewUrls` line metadata on Stripe, ≤480-char
97
+ guard keeps the first URL when over) → `EmailOrderItem.attachImageUrls`.
98
+ Attachment caps: 8 files / 4MB each / 10MB total.
@@ -0,0 +1,105 @@
1
+ # E12 Payment providers — 0.25.0..0.25.0
2
+
3
+ ## What landed
4
+ Two native payment providers, peers of Stripe: **PayPal** (Orders v2, Smart
5
+ Buttons popup with a redirect fallback, server-side capture, webhook
6
+ backstop) and **Up2pay e-Transactions** (Crédit Agricole's hosted payment
7
+ page — HMAC-signed form redirect, RSA-verified IPN as the only payment
8
+ truth). Merchants configure both in **Admin → Payments** (Colissimo-style
9
+ panels: masked credentials, validate-before-persist, disconnect). Once
10
+ connected they appear automatically in the checkout payment selector; no
11
+ store code changes, no cards, no per-store payment logic.
12
+
13
+ ## SDK-internal (free via pin bump)
14
+ - `checkout/server/{up2pay,paypal,confirm-order,external-checkout}.ts` — all
15
+ money logic. External orders create as `pending` (priced by `buildQuote`,
16
+ reference `up2pay_…`/`paypal_…` in the shared payment-intent column) and
17
+ flip to paid through ONE atomic claim (`claimPendingOrderPaid`) after
18
+ signature + amount verification against the DB order. Confirmation email
19
+ sends on PAID (from DB state), not at creation.
20
+ - `checkout/api/payment-methods.ts` — the public GET now appends synthetic
21
+ `kind='external'` entries (id `paypal`/`up2pay`) when a provider is
22
+ configured + enabled. Fail-open contract unchanged.
23
+ - `admin/components/{PaymentProviderPanels,PaymentSettings}.tsx` +
24
+ `admin/api/payment-providers.ts` — the Payments-tab panels.
25
+ - `admin/components/OrderDetails.tsx` — provider-aware: PayPal/Up2pay orders
26
+ show a provider Payment card + status-only "Mark as refunded" (never the
27
+ Stripe refund flow); pending external orders read as awaiting provider
28
+ confirmation. Transaction ids land in the order's "Additional details"
29
+ (metafields).
30
+ - `admin/integrations/registry.ts` — the `paypal` entry is REMOVED: payment
31
+ providers are not integrations; the hub keeps cross-domain services
32
+ (Brevo, pixels…). Credentials stored via the old entry keep working — the
33
+ columns are unchanged and now surface in Admin → Payments.
34
+
35
+ ## Template contract
36
+ Eight new route mounts (plain re-exports — copy from the stock template):
37
+ - `app/api/checkout/up2pay/route.ts` (`POST` from
38
+ `@rovela-ai/sdk/checkout/api/up2pay`)
39
+ - `app/api/checkout/up2pay/ipn/route.ts` (`GET, POST` from
40
+ `@rovela-ai/sdk/checkout/api/up2pay-ipn`)
41
+ - `app/api/checkout/paypal/route.ts` (`POST` from
42
+ `@rovela-ai/sdk/checkout/api/paypal`)
43
+ - `app/api/checkout/paypal/capture/route.ts` (`POST` from
44
+ `@rovela-ai/sdk/checkout/api/paypal-capture`)
45
+ - `app/api/checkout/paypal/return/route.ts` (`ReturnGET as GET` from
46
+ `@rovela-ai/sdk/checkout/api/paypal-capture`)
47
+ - `app/api/checkout/paypal/webhook/route.ts` (`POST` from
48
+ `@rovela-ai/sdk/checkout/api/paypal-webhook`)
49
+ - `app/api/admin/payments/paypal/route.ts` +
50
+ `app/api/admin/payments/up2pay/route.ts` (GET/POST/DELETE trios from
51
+ `@rovela-ai/sdk/admin/api`)
52
+
53
+ ## Behavior contracts
54
+ - `CheckoutFlow` renders external providers in the existing payment
55
+ selector; selecting PayPal swaps the Place-order button for the Smart
56
+ Buttons (script from paypal.com parameterized by the PUBLIC client id).
57
+ Stores with a custom checkout page that still mounts the SDK
58
+ `CheckoutFlow` get everything free; fully custom checkouts must call the
59
+ new hook legs (`checkoutUp2pay` / `createPaypalOrder` /
60
+ `capturePaypalOrder` on `useCheckout`) to offer the providers.
61
+ - The admin settings GET no longer returns `paypal_client_secret` /
62
+ `up2pay_hmac_key` (server-only strip, like `colissimo_password`).
63
+
64
+ ## Custom-code hazards
65
+ - **A store built by the RETIRED `connect-paypal` feature card** carries a
66
+ per-store PayPal fork. Grep: `ls app/api/checkout/paypal/` — if
67
+ `create-order/` exists or `route.ts` files contain implementation (not
68
+ bare re-exports), DELETE the fork: replace `app/api/checkout/paypal/*`
69
+ with the stock re-export mounts above, delete
70
+ `components/checkout/PayPal*`, remove the PayPal provider mount from
71
+ `app/layout.tsx` and the button from `app/checkout/page.tsx`, and
72
+ `npm uninstall @paypal/react-paypal-js @paypal/paypal-server-sdk`.
73
+ Credentials in `store_settings.paypal_*` are UNTOUCHED and keep working
74
+ (`paypal_environment` value `'production'` is accepted alongside
75
+ `'live'`).
76
+ - Grep `fetch('/api/checkout/payment-methods')` consumers in custom code:
77
+ the response may now include `kind='external'` entries — code that
78
+ assumed every method is manual must not POST them to
79
+ `/api/checkout/manual` (it rejects `kind !== 'manual'` anyway).
80
+
81
+ ## DB
82
+ `store_settings` gains 11 columns (`paypal_client_id/client_secret/
83
+ environment/webhook_id/enabled`, `up2pay_site/rang/identifiant/hmac_key/
84
+ environment/enabled`) — self-healed by `ensureStoreSettingsSchema` at the
85
+ settings chokepoints; parent-branch ALTER run at ship time. Card-installed
86
+ stores already carrying `paypal_*` columns converge idempotently
87
+ (`ADD COLUMN IF NOT EXISTS`). No new tables.
88
+
89
+ ## New surfaces
90
+ - Admin → Payments: PayPal + Up2pay panels between the Stripe card and the
91
+ manual payment-methods list (part of the SDK `PaymentSettings` component
92
+ — stores mounting it get them free; stores with a custom payments page
93
+ add `<PaypalProviderPanel />` + `<Up2payProviderPanel />` from
94
+ `@rovela-ai/sdk/admin`).
95
+
96
+ ## Verify
97
+ - `npm run build` green after the pin bump.
98
+ - `GET /api/checkout/payment-methods` returns 200 (fail-open even
99
+ unconfigured).
100
+ - Admin → Payments renders the two provider panels.
101
+ - If the store had the card-built PayPal fork: `app/api/checkout/paypal/`
102
+ contains ONLY re-export mounts, `@paypal/*` packages are gone from
103
+ package.json, and the checkout page has no leftover PayPal component
104
+ imports.
105
+ - An order list/detail read works (settings + orders self-heals ran).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rovela-ai/sdk",
3
- "version": "0.24.0",
3
+ "version": "0.25.0",
4
4
  "description": "Rovela SDK - Pre-built e-commerce components for AI-powered store generation",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -94,6 +94,30 @@
94
94
  "types": "./dist/checkout/api/colissimo-relays.d.ts",
95
95
  "import": "./dist/checkout/api/colissimo-relays.js"
96
96
  },
97
+ "./checkout/api/up2pay": {
98
+ "types": "./dist/checkout/api/up2pay.d.ts",
99
+ "import": "./dist/checkout/api/up2pay.js"
100
+ },
101
+ "./checkout/api/up2pay-ipn": {
102
+ "types": "./dist/checkout/api/up2pay-ipn.d.ts",
103
+ "import": "./dist/checkout/api/up2pay-ipn.js"
104
+ },
105
+ "./checkout/api/paypal": {
106
+ "types": "./dist/checkout/api/paypal.d.ts",
107
+ "import": "./dist/checkout/api/paypal.js"
108
+ },
109
+ "./checkout/api/paypal-capture": {
110
+ "types": "./dist/checkout/api/paypal-capture.d.ts",
111
+ "import": "./dist/checkout/api/paypal-capture.js"
112
+ },
113
+ "./checkout/api/paypal-webhook": {
114
+ "types": "./dist/checkout/api/paypal-webhook.d.ts",
115
+ "import": "./dist/checkout/api/paypal-webhook.js"
116
+ },
117
+ "./admin/api/payment-providers": {
118
+ "types": "./dist/admin/api/payment-providers.d.ts",
119
+ "import": "./dist/admin/api/payment-providers.js"
120
+ },
97
121
  "./checkout/server": {
98
122
  "types": "./dist/checkout/server/index.d.ts",
99
123
  "import": "./dist/checkout/server/index.js"
@@ -197,7 +197,8 @@ If the feature connects to an external service (API key, secret, tracking ID):
197
197
 
198
198
  - Persist credentials to `store_settings` — dedicated columns for secrets (`ALTER TABLE store_settings ADD COLUMN IF NOT EXISTS …`, read server-side at request time; NEVER `.env.local`, NEVER `NEXT_PUBLIC_`), or the `analytics` JSONB for public tracking IDs.
199
199
  - The merchant manages them at `/admin/integrations` (SDK page, already mounted). **Do NOT build a settings page, credentials form, or nav entry for keys.**
200
- - Known keys are auto-rendered (brevo, paypal, turnstile, ga4, google_ads, meta, tiktok, klaviyo, intercom, trustpilot). A NOVEL integration registers a descriptor (dedup by key, then append):
200
+ - Known keys are auto-rendered (brevo, turnstile, ga4, google_ads, meta, tiktok, klaviyo, intercom, trustpilot). A NOVEL integration registers a descriptor (dedup by key, then append):
201
+ - **Payment providers are NOT integrations**: PayPal and Up2pay e-Transactions (Crédit Agricole) are NATIVE SDK payment providers (SDK 0.25+) configured at `/admin/payments`, peers of Stripe — checkout picks them up automatically once connected. NEVER build payment-provider routes, checkout components, or credential forms for them; point the merchant to Admin → Payments.
201
202
 
202
203
  ```sql
203
204
  ALTER TABLE store_settings ADD COLUMN IF NOT EXISTS custom_integrations jsonb NOT NULL DEFAULT '[]'::jsonb;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * PayPal provider configuration (Admin → Payments)
3
+ */
4
+ import {
5
+ getPaypalProviderConfig,
6
+ savePaypalProviderConfig,
7
+ deletePaypalProviderConfig,
8
+ } from '@rovela-ai/sdk/admin/api'
9
+
10
+ export { getPaypalProviderConfig as GET, savePaypalProviderConfig as POST, deletePaypalProviderConfig as DELETE }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Up2pay e-Transactions provider configuration (Admin → Payments)
3
+ */
4
+ import {
5
+ getUp2payProviderConfig,
6
+ saveUp2payProviderConfig,
7
+ deleteUp2payProviderConfig,
8
+ } from '@rovela-ai/sdk/admin/api'
9
+
10
+ export { getUp2payProviderConfig as GET, saveUp2payProviderConfig as POST, deleteUp2payProviderConfig as DELETE }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * PayPal Capture API Route
3
+ *
4
+ * POST /api/checkout/paypal/capture - Server-side capture after the buyer
5
+ * approves in the PayPal popup (Smart Buttons onApprove leg).
6
+ */
7
+
8
+ export { POST } from '@rovela-ai/sdk/checkout/api/paypal-capture'
@@ -0,0 +1,9 @@
1
+ /**
2
+ * PayPal Return Route (redirect fallback)
3
+ *
4
+ * GET /api/checkout/paypal/return - Captures server-side when the buyer
5
+ * comes back from the hosted approval page, then redirects to the
6
+ * success page (or back to checkout with the cart intact).
7
+ */
8
+
9
+ export { ReturnGET as GET } from '@rovela-ai/sdk/checkout/api/paypal-capture'
@@ -0,0 +1,9 @@
1
+ /**
2
+ * PayPal Checkout API Route
3
+ *
4
+ * POST /api/checkout/paypal - Start a PayPal payment. The order is created
5
+ * as 'pending' (server-priced) with a matching PayPal order; capture
6
+ * happens server-side after approval.
7
+ */
8
+
9
+ export { POST } from '@rovela-ai/sdk/checkout/api/paypal'
@@ -0,0 +1,9 @@
1
+ /**
2
+ * PayPal Webhook Route
3
+ *
4
+ * POST /api/checkout/paypal/webhook - Async backstop: verified events
5
+ * confirm captures the client never reported and record PayPal-side
6
+ * refunds. Requires the webhook id configured in Admin → Payments.
7
+ */
8
+
9
+ export { POST } from '@rovela-ai/sdk/checkout/api/paypal-webhook'
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Up2pay e-Transactions IPN Route
3
+ *
4
+ * The server-to-server payment notification — the ONLY thing that flips an
5
+ * Up2pay order to paid (signature + amount verified against the order).
6
+ */
7
+
8
+ export { GET, POST } from '@rovela-ai/sdk/checkout/api/up2pay-ipn'
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Up2pay e-Transactions Checkout API Route
3
+ *
4
+ * POST /api/checkout/up2pay - Start an Up2pay (Crédit Agricole) hosted-page
5
+ * payment. The order is created as 'pending' (server-priced); the IPN
6
+ * confirms payment server-to-server.
7
+ */
8
+
9
+ export { POST } from '@rovela-ai/sdk/checkout/api/up2pay'
@@ -9,7 +9,7 @@
9
9
  "lint": "eslint ."
10
10
  },
11
11
  "dependencies": {
12
- "@rovela-ai/sdk": "0.24.0",
12
+ "@rovela-ai/sdk": "0.25.0",
13
13
  "@tailwindcss/forms": "0.5.11",
14
14
  "@tailwindcss/typography": "0.5.19",
15
15
  "autoprefixer": "10.4.24",