@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":"manual.js","sourceRoot":"","sources":["../../../src/checkout/api/manual.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manual.js","sourceRoot":"","sources":["../../../src/checkout/api/manual.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,14 @@
6
6
  * Instructions are included so the confirmation UI can show them (they are
7
7
  * merchant-authored customer-facing copy, not secrets).
8
8
  *
9
+ * External payment PROVIDERS (SDK 0.25.0 — PayPal, Up2pay e-Transactions)
10
+ * surface here as SYNTHETIC entries (kind='external'), the way native
11
+ * Stripe is implicit: presence = configured + enabled in Admin → Payments,
12
+ * no payment_methods row to keep in sync with the enable toggle. The only
13
+ * config that crosses this public surface is PayPal's client id +
14
+ * environment — public by design (they parameterize the buttons script);
15
+ * secrets never leave the server.
16
+ *
9
17
  * Usage:
10
18
  * ```typescript
11
19
  * // app/api/checkout/payment-methods/route.ts
@@ -13,13 +21,21 @@
13
21
  * ```
14
22
  */
15
23
  import { NextResponse } from 'next/server';
24
+ export interface PublicPaymentMethod {
25
+ id: string;
26
+ kind: string;
27
+ name: string;
28
+ instructions: string | null;
29
+ /** 'paypal' | 'up2pay' on synthetic provider entries; absent on registry rows. */
30
+ provider?: 'paypal' | 'up2pay';
31
+ /** PayPal buttons parameters (public by design). */
32
+ paypal?: {
33
+ clientId: string;
34
+ environment: 'sandbox' | 'production';
35
+ };
36
+ }
16
37
  export declare function GET(): Promise<NextResponse<{
17
38
  success: boolean;
18
- methods: {
19
- id: string;
20
- kind: string;
21
- name: string;
22
- instructions: string | null;
23
- }[];
39
+ methods: PublicPaymentMethod[];
24
40
  }>>;
25
41
  //# sourceMappingURL=payment-methods.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"payment-methods.d.ts","sourceRoot":"","sources":["../../../src/checkout/api/payment-methods.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI1C,wBAAsB,GAAG;;;;;;;;IAoBxB"}
1
+ {"version":3,"file":"payment-methods.d.ts","sourceRoot":"","sources":["../../../src/checkout/api/payment-methods.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAM1C,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,oDAAoD;IACpD,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,SAAS,GAAG,YAAY,CAAA;KAAE,CAAA;CACrE;AAED,wBAAsB,GAAG;;;IAqDxB"}
@@ -6,6 +6,14 @@
6
6
  * Instructions are included so the confirmation UI can show them (they are
7
7
  * merchant-authored customer-facing copy, not secrets).
8
8
  *
9
+ * External payment PROVIDERS (SDK 0.25.0 — PayPal, Up2pay e-Transactions)
10
+ * surface here as SYNTHETIC entries (kind='external'), the way native
11
+ * Stripe is implicit: presence = configured + enabled in Admin → Payments,
12
+ * no payment_methods row to keep in sync with the enable toggle. The only
13
+ * config that crosses this public surface is PayPal's client id +
14
+ * environment — public by design (they parameterize the buttons script);
15
+ * secrets never leave the server.
16
+ *
9
17
  * Usage:
10
18
  * ```typescript
11
19
  * // app/api/checkout/payment-methods/route.ts
@@ -13,23 +21,55 @@
13
21
  * ```
14
22
  */
15
23
  import { NextResponse } from 'next/server';
16
- import { findEnabledPaymentMethods } from '../../core/db/queries';
24
+ import { findEnabledPaymentMethods, findSettings } from '../../core/db/queries';
17
25
  import { resolveCheckoutCustomer } from '../server/checkout-customer';
26
+ import { resolvePaypalCredentials } from '../server/paypal';
27
+ import { resolveUp2payCredentials } from '../server/up2pay';
18
28
  export async function GET() {
19
29
  try {
20
30
  // Group-gated methods are hidden from guests and non-members — the group
21
31
  // comes from the SESSION (resolveCheckoutCustomer), never from the client.
22
32
  const customer = await resolveCheckoutCustomer();
23
33
  const methods = await findEnabledPaymentMethods(customer?.groupId ?? null);
24
- return NextResponse.json({
25
- success: true,
26
- methods: methods.map((m) => ({
34
+ const out = [];
35
+ // External providers render FIRST (card-adjacent), then manual methods.
36
+ // Each is guarded so a provider hiccup can never hide the others.
37
+ try {
38
+ const settings = await findSettings();
39
+ const paypal = resolvePaypalCredentials(settings);
40
+ if (paypal) {
41
+ out.push({
42
+ id: 'paypal',
43
+ kind: 'external',
44
+ provider: 'paypal',
45
+ name: 'PayPal',
46
+ instructions: null,
47
+ paypal: { clientId: paypal.clientId, environment: paypal.environment },
48
+ });
49
+ }
50
+ const up2pay = resolveUp2payCredentials(settings);
51
+ if (up2pay) {
52
+ out.push({
53
+ id: 'up2pay',
54
+ kind: 'external',
55
+ provider: 'up2pay',
56
+ name: 'Carte bancaire (Crédit Agricole)',
57
+ instructions: null,
58
+ });
59
+ }
60
+ }
61
+ catch (err) {
62
+ console.error('[Checkout Payment Methods API] provider resolution failed:', err);
63
+ }
64
+ for (const m of methods) {
65
+ out.push({
27
66
  id: m.id,
28
67
  kind: m.kind,
29
68
  name: m.name,
30
69
  instructions: m.instructions ?? null,
31
- })),
32
- });
70
+ });
71
+ }
72
+ return NextResponse.json({ success: true, methods: out });
33
73
  }
34
74
  catch (error) {
35
75
  console.error('[Checkout Payment Methods API] list error:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"payment-methods.js","sourceRoot":"","sources":["../../../src/checkout/api/payment-methods.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAErE,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,IAAI,CAAC;QACH,yEAAyE;QACzE,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,MAAM,uBAAuB,EAAE,CAAA;QAChD,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI,CAAC,CAAA;QAC1E,OAAO,YAAY,CAAC,IAAI,CAAC;YACvB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;aACrC,CAAC,CAAC;SACJ,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAA;QAClE,wEAAwE;QACxE,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"payment-methods.js","sourceRoot":"","sources":["../../../src/checkout/api/payment-methods.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAa3D,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,IAAI,CAAC;QACH,yEAAyE;QACzE,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,MAAM,uBAAuB,EAAE,CAAA;QAChD,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI,CAAC,CAAA;QAE1E,MAAM,GAAG,GAA0B,EAAE,CAAA;QAErC,wEAAwE;QACxE,kEAAkE;QAClE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAA;YACrC,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAA;YACjD,IAAI,MAAM,EAAE,CAAC;gBACX,GAAG,CAAC,IAAI,CAAC;oBACP,EAAE,EAAE,QAAQ;oBACZ,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE,IAAI;oBAClB,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;iBACvE,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAA;YACjD,IAAI,MAAM,EAAE,CAAC;gBACX,GAAG,CAAC,IAAI,CAAC;oBACP,EAAE,EAAE,QAAQ;oBACZ,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,kCAAkC;oBACxC,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,4DAA4D,EAAE,GAAG,CAAC,CAAA;QAClF,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;aACrC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAA;IAC3D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAA;QAClE,wEAAwE;QACxE,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1D,CAAC;AACH,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @rovela/sdk/checkout/api/paypal-capture
3
+ *
4
+ * The PayPal proof-of-payment legs:
5
+ * - POST /api/checkout/paypal/capture — Smart Buttons onApprove leg.
6
+ * - GET /api/checkout/paypal/return — redirect-fallback return leg
7
+ * (PayPal appends ?token={paypalOrderId}), exported as ReturnGET.
8
+ *
9
+ * Both capture server-side then flip the pending order through the shared
10
+ * confirm helper (atomic claim — the two legs racing each other, or a
11
+ * webhook racing either, produce exactly one confirmation). The client
12
+ * never reports amounts; the capture's own amount is checked against the
13
+ * DB order.
14
+ *
15
+ * Usage:
16
+ * ```typescript
17
+ * // app/api/checkout/paypal/capture/route.ts
18
+ * export { POST } from '@rovela-ai/sdk/checkout/api/paypal-capture'
19
+ * // app/api/checkout/paypal/return/route.ts
20
+ * export { ReturnGET as GET } from '@rovela-ai/sdk/checkout/api/paypal-capture'
21
+ * ```
22
+ */
23
+ import { NextRequest, NextResponse } from 'next/server';
24
+ import type { CheckoutApiError } from '../types';
25
+ interface PaypalCaptureResponse {
26
+ success: true;
27
+ orderId: string;
28
+ }
29
+ /** Smart Buttons onApprove leg. */
30
+ export declare function POST(request: NextRequest): Promise<NextResponse<PaypalCaptureResponse | CheckoutApiError>>;
31
+ /**
32
+ * Redirect-fallback return leg. Always ends in a browser redirect: success →
33
+ * the success page (which clears the cart), anything else → back to checkout
34
+ * with the cart intact.
35
+ */
36
+ export declare function ReturnGET(request: NextRequest): Promise<NextResponse>;
37
+ export {};
38
+ //# sourceMappingURL=paypal-capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal-capture.d.ts","sourceRoot":"","sources":["../../../src/checkout/api/paypal-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAKvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,UAAU,qBAAqB;IAC7B,OAAO,EAAE,IAAI,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAuDD,mCAAmC;AACnC,wBAAsB,IAAI,CACxB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,qBAAqB,GAAG,gBAAgB,CAAC,CAAC,CAgDjE;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAsB3E"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * @rovela/sdk/checkout/api/paypal-capture
3
+ *
4
+ * The PayPal proof-of-payment legs:
5
+ * - POST /api/checkout/paypal/capture — Smart Buttons onApprove leg.
6
+ * - GET /api/checkout/paypal/return — redirect-fallback return leg
7
+ * (PayPal appends ?token={paypalOrderId}), exported as ReturnGET.
8
+ *
9
+ * Both capture server-side then flip the pending order through the shared
10
+ * confirm helper (atomic claim — the two legs racing each other, or a
11
+ * webhook racing either, produce exactly one confirmation). The client
12
+ * never reports amounts; the capture's own amount is checked against the
13
+ * DB order.
14
+ *
15
+ * Usage:
16
+ * ```typescript
17
+ * // app/api/checkout/paypal/capture/route.ts
18
+ * export { POST } from '@rovela-ai/sdk/checkout/api/paypal-capture'
19
+ * // app/api/checkout/paypal/return/route.ts
20
+ * export { ReturnGET as GET } from '@rovela-ai/sdk/checkout/api/paypal-capture'
21
+ * ```
22
+ */
23
+ import { NextResponse } from 'next/server';
24
+ import { findSettings } from '../../core/db/queries';
25
+ import { resolveStoreBaseUrl } from '../server/external-checkout';
26
+ import { resolvePaypalCredentials, capturePaypalOrder, PaypalApiError } from '../server/paypal';
27
+ import { confirmExternalOrderPaid } from '../server/confirm-order';
28
+ async function captureAndConfirm(paypalOrderId) {
29
+ const settings = await findSettings();
30
+ const credentials = resolvePaypalCredentials(settings);
31
+ if (!credentials)
32
+ return { kind: 'unavailable' };
33
+ const capture = await capturePaypalOrder(credentials, paypalOrderId);
34
+ if (capture.status !== 'COMPLETED') {
35
+ // Not captured (declined, or a pending review state). The order stays
36
+ // pending; PAYMENT.CAPTURE.COMPLETED via webhook confirms late captures.
37
+ console.warn(`[PayPal Capture] order ${paypalOrderId} status=${capture.status} — not confirming`);
38
+ return { kind: 'not_completed', status: capture.status };
39
+ }
40
+ if (!capture.invoiceId) {
41
+ console.error(`[PayPal Capture] COMPLETED capture without invoice_id for ${paypalOrderId}`);
42
+ return { kind: 'not_found' };
43
+ }
44
+ const result = await confirmExternalOrderPaid({
45
+ reference: capture.invoiceId,
46
+ expectedProvider: 'paypal',
47
+ providerLabel: 'PayPal',
48
+ paidAmountCents: capture.amountCents,
49
+ paidCurrency: capture.currency,
50
+ transaction: [
51
+ { key: 'paypal_order_id', label: 'PayPal order', value: paypalOrderId },
52
+ ...(capture.captureId
53
+ ? [{ key: 'paypal_capture_id', label: 'PayPal capture', value: capture.captureId }]
54
+ : []),
55
+ ...(capture.payerEmail
56
+ ? [{ key: 'paypal_payer', label: 'PayPal payer', value: capture.payerEmail }]
57
+ : []),
58
+ ],
59
+ });
60
+ switch (result.status) {
61
+ case 'confirmed':
62
+ case 'already_processed':
63
+ return { kind: 'paid', orderId: result.orderId };
64
+ case 'amount_mismatch':
65
+ return { kind: 'mismatch' };
66
+ default:
67
+ return { kind: 'not_found' };
68
+ }
69
+ }
70
+ /** Smart Buttons onApprove leg. */
71
+ export async function POST(request) {
72
+ try {
73
+ const body = (await request.json().catch(() => null));
74
+ const paypalOrderId = body?.paypalOrderId?.trim();
75
+ if (!paypalOrderId || paypalOrderId.length > 64) {
76
+ return NextResponse.json({ error: 'paypalOrderId is required', code: 'INVALID_REQUEST' }, { status: 400 });
77
+ }
78
+ const outcome = await captureAndConfirm(paypalOrderId);
79
+ switch (outcome.kind) {
80
+ case 'paid':
81
+ return NextResponse.json({ success: true, orderId: outcome.orderId });
82
+ case 'not_completed':
83
+ return NextResponse.json({
84
+ error: 'The payment was not completed. Please try again.',
85
+ code: 'PAYMENT_NOT_COMPLETED',
86
+ }, { status: 402 });
87
+ case 'unavailable':
88
+ return NextResponse.json({ error: 'This payment method is not available', code: 'INVALID_REQUEST' }, { status: 400 });
89
+ default:
90
+ return NextResponse.json({ error: 'This payment could not be confirmed.', code: 'CHECKOUT_ERROR' }, { status: 409 });
91
+ }
92
+ }
93
+ catch (error) {
94
+ if (error instanceof PaypalApiError) {
95
+ console.error('[PayPal Capture API] PayPal error:', error.status, error.issue, error.body);
96
+ return NextResponse.json({ error: 'PayPal could not complete this payment.', code: 'CHECKOUT_ERROR' }, { status: 502 });
97
+ }
98
+ console.error('[PayPal Capture API] error:', error);
99
+ return NextResponse.json({ error: 'Failed to confirm the payment.', code: 'CHECKOUT_ERROR' }, { status: 500 });
100
+ }
101
+ }
102
+ /**
103
+ * Redirect-fallback return leg. Always ends in a browser redirect: success →
104
+ * the success page (which clears the cart), anything else → back to checkout
105
+ * with the cart intact.
106
+ */
107
+ export async function ReturnGET(request) {
108
+ const base = resolveStoreBaseUrl(request.nextUrl.origin);
109
+ const paypalOrderId = request.nextUrl.searchParams.get('token')?.trim();
110
+ if (!paypalOrderId || paypalOrderId.length > 64) {
111
+ return NextResponse.redirect(`${base}/checkout?payment=failed`, 307);
112
+ }
113
+ try {
114
+ const outcome = await captureAndConfirm(paypalOrderId);
115
+ if (outcome.kind === 'paid') {
116
+ return NextResponse.redirect(`${base}/checkout/success?orderId=${encodeURIComponent(outcome.orderId)}`, 307);
117
+ }
118
+ console.warn(`[PayPal Return] capture outcome ${outcome.kind} for ${paypalOrderId}`);
119
+ return NextResponse.redirect(`${base}/checkout?payment=failed`, 307);
120
+ }
121
+ catch (error) {
122
+ console.error('[PayPal Return] error:', error);
123
+ return NextResponse.redirect(`${base}/checkout?payment=failed`, 307);
124
+ }
125
+ }
126
+ //# sourceMappingURL=paypal-capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal-capture.js","sourceRoot":"","sources":["../../../src/checkout/api/paypal-capture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @rovela/sdk/checkout/api/paypal-webhook
3
+ *
4
+ * POST /api/checkout/paypal/webhook — the async BACKSTOP, never the primary
5
+ * payment path (the capture legs are). Confirms captures the client never
6
+ * reported (buyer closed the tab between approval and capture) and records
7
+ * PayPal-side refunds. Every event is verified through PayPal's
8
+ * verify-webhook-signature endpoint — which requires the merchant's
9
+ * webhook id (Admin → Payments → PayPal); without it events are
10
+ * acknowledged but IGNORED.
11
+ *
12
+ * Idempotent by construction: confirmation goes through the same atomic
13
+ * claim as the capture legs, and PayPal retries non-2xx up to 25 times
14
+ * over 3 days — so processed events always 200.
15
+ *
16
+ * Usage:
17
+ * ```typescript
18
+ * // app/api/checkout/paypal/webhook/route.ts
19
+ * export { POST } from '@rovela-ai/sdk/checkout/api/paypal-webhook'
20
+ * ```
21
+ */
22
+ import { NextRequest, NextResponse } from 'next/server';
23
+ export declare function POST(request: NextRequest): Promise<NextResponse>;
24
+ //# sourceMappingURL=paypal-webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal-webhook.d.ts","sourceRoot":"","sources":["../../../src/checkout/api/paypal-webhook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAsBvD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CA4GtE"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * @rovela/sdk/checkout/api/paypal-webhook
3
+ *
4
+ * POST /api/checkout/paypal/webhook — the async BACKSTOP, never the primary
5
+ * payment path (the capture legs are). Confirms captures the client never
6
+ * reported (buyer closed the tab between approval and capture) and records
7
+ * PayPal-side refunds. Every event is verified through PayPal's
8
+ * verify-webhook-signature endpoint — which requires the merchant's
9
+ * webhook id (Admin → Payments → PayPal); without it events are
10
+ * acknowledged but IGNORED.
11
+ *
12
+ * Idempotent by construction: confirmation goes through the same atomic
13
+ * claim as the capture legs, and PayPal retries non-2xx up to 25 times
14
+ * over 3 days — so processed events always 200.
15
+ *
16
+ * Usage:
17
+ * ```typescript
18
+ * // app/api/checkout/paypal/webhook/route.ts
19
+ * export { POST } from '@rovela-ai/sdk/checkout/api/paypal-webhook'
20
+ * ```
21
+ */
22
+ import { NextResponse } from 'next/server';
23
+ import { findSettings, findOrderByPaymentIntent, updateOrderStatus, updateOrderRefundAmount } from '../../core/db/queries';
24
+ import { resolvePaypalCredentials, verifyPaypalWebhook, readPaypalWebhookHeaders, } from '../server/paypal';
25
+ import { confirmExternalOrderPaid } from '../server/confirm-order';
26
+ export async function POST(request) {
27
+ try {
28
+ const rawBody = await request.text();
29
+ let event;
30
+ try {
31
+ event = JSON.parse(rawBody);
32
+ }
33
+ catch {
34
+ return NextResponse.json({ error: 'Invalid JSON' }, { status: 400 });
35
+ }
36
+ const settings = await findSettings();
37
+ const credentials = resolvePaypalCredentials(settings);
38
+ if (!credentials) {
39
+ // Provider disabled/unconfigured but a webhook is still registered at
40
+ // PayPal — acknowledge so PayPal stops retrying, process nothing.
41
+ console.warn('[PayPal Webhook] event received while provider not configured — ignored');
42
+ return NextResponse.json({ received: true, ignored: true });
43
+ }
44
+ if (!credentials.webhookId) {
45
+ console.warn('[PayPal Webhook] no webhook id configured — event NOT verified, ignored. Set it in Admin → Payments → PayPal.');
46
+ return NextResponse.json({ received: true, ignored: true });
47
+ }
48
+ const verified = await verifyPaypalWebhook(credentials, credentials.webhookId, readPaypalWebhookHeaders(request.headers), event);
49
+ if (!verified) {
50
+ console.error('[PayPal Webhook] signature verification FAILED — nothing processed');
51
+ return NextResponse.json({ error: 'Verification failed' }, { status: 400 });
52
+ }
53
+ const resource = event.resource ?? {};
54
+ const reference = resource.invoice_id ?? resource.custom_id ?? null;
55
+ switch (event.event_type) {
56
+ case 'PAYMENT.CAPTURE.COMPLETED': {
57
+ if (!reference || !reference.startsWith('paypal_')) {
58
+ console.warn(`[PayPal Webhook] capture completed without a usable reference (${reference})`);
59
+ break;
60
+ }
61
+ const amountValue = resource.amount?.value;
62
+ const result = await confirmExternalOrderPaid({
63
+ reference,
64
+ expectedProvider: 'paypal',
65
+ providerLabel: 'PayPal',
66
+ paidAmountCents: amountValue != null ? Math.round(parseFloat(amountValue) * 100) : null,
67
+ paidCurrency: resource.amount?.currency_code ?? null,
68
+ transaction: [
69
+ ...(resource.id
70
+ ? [{ key: 'paypal_capture_id', label: 'PayPal capture', value: resource.id }]
71
+ : []),
72
+ ...(resource.supplementary_data?.related_ids?.order_id
73
+ ? [
74
+ {
75
+ key: 'paypal_order_id',
76
+ label: 'PayPal order',
77
+ value: resource.supplementary_data.related_ids.order_id,
78
+ },
79
+ ]
80
+ : []),
81
+ ],
82
+ });
83
+ console.log(`[PayPal Webhook] capture completed ref=${reference} → ${result.status}`);
84
+ break;
85
+ }
86
+ case 'PAYMENT.CAPTURE.REFUNDED':
87
+ case 'PAYMENT.CAPTURE.REVERSED': {
88
+ if (!reference || !reference.startsWith('paypal_'))
89
+ break;
90
+ const order = await findOrderByPaymentIntent(reference);
91
+ if (!order || order.paymentProvider !== 'paypal')
92
+ break;
93
+ const refundValue = resource.amount?.value;
94
+ const refundCents = refundValue != null ? Math.round(parseFloat(refundValue) * 100) : null;
95
+ if (refundCents != null && refundCents > 0) {
96
+ await updateOrderRefundAmount(order.id, refundCents);
97
+ const totalCents = Math.round(parseFloat(order.total) * 100);
98
+ const priorRefundCents = order.refundAmount
99
+ ? Math.round(parseFloat(order.refundAmount) * 100)
100
+ : 0;
101
+ if (priorRefundCents + refundCents >= totalCents && order.status !== 'refunded') {
102
+ await updateOrderStatus(order.id, 'refunded');
103
+ }
104
+ console.log(`[PayPal Webhook] refund recorded ref=${reference} amount=${refundCents} (prior ${priorRefundCents})`);
105
+ }
106
+ break;
107
+ }
108
+ case 'PAYMENT.CAPTURE.DENIED':
109
+ console.warn(`[PayPal Webhook] capture DENIED ref=${reference ?? 'unknown'} — order stays pending`);
110
+ break;
111
+ default:
112
+ // Unsubscribed/uninteresting event types are acknowledged silently.
113
+ break;
114
+ }
115
+ return NextResponse.json({ received: true, event: event.event_type ?? null });
116
+ }
117
+ catch (error) {
118
+ console.error('[PayPal Webhook] error:', error);
119
+ return NextResponse.json({ error: 'Webhook processing failed' }, { status: 500 });
120
+ }
121
+ }
122
+ //# sourceMappingURL=paypal-webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal-webhook.js","sourceRoot":"","sources":["../../../src/checkout/api/paypal-webhook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAe,YAAY,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAC1H,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAelE,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAoB;IAC7C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;QACpC,IAAI,KAAyB,CAAA;QAC7B,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAA;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QACtE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAA;QACrC,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAA;QACtD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,sEAAsE;YACtE,kEAAkE;YAClE,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAA;YACvF,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CACV,+GAA+G,CAChH,CAAA;YACD,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7D,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CACxC,WAAW,EACX,WAAW,CAAC,SAAS,EACrB,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,EACzC,KAAK,CACN,CAAA;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAA;YACnF,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC7E,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;QACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAA;QAEnE,QAAQ,KAAK,CAAC,UAAU,EAAE,CAAC;YACzB,KAAK,2BAA2B,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBACnD,OAAO,CAAC,IAAI,CAAC,kEAAkE,SAAS,GAAG,CAAC,CAAA;oBAC5F,MAAK;gBACP,CAAC;gBACD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAA;gBAC1C,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC;oBAC5C,SAAS;oBACT,gBAAgB,EAAE,QAAQ;oBAC1B,aAAa,EAAE,QAAQ;oBACvB,eAAe,EAAE,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;oBACvF,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI;oBACpD,WAAW,EAAE;wBACX,GAAG,CAAC,QAAQ,CAAC,EAAE;4BACb,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;4BAC7E,CAAC,CAAC,EAAE,CAAC;wBACP,GAAG,CAAC,QAAQ,CAAC,kBAAkB,EAAE,WAAW,EAAE,QAAQ;4BACpD,CAAC,CAAC;gCACE;oCACE,GAAG,EAAE,iBAAiB;oCACtB,KAAK,EAAE,cAAc;oCACrB,KAAK,EAAE,QAAQ,CAAC,kBAAkB,CAAC,WAAW,CAAC,QAAQ;iCACxD;6BACF;4BACH,CAAC,CAAC,EAAE,CAAC;qBACR;iBACF,CAAC,CAAA;gBACF,OAAO,CAAC,GAAG,CAAC,0CAA0C,SAAS,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;gBACrF,MAAK;YACP,CAAC;YAED,KAAK,0BAA0B,CAAC;YAChC,KAAK,0BAA0B,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;oBAAE,MAAK;gBACzD,MAAM,KAAK,GAAG,MAAM,wBAAwB,CAAC,SAAS,CAAC,CAAA;gBACvD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,eAAe,KAAK,QAAQ;oBAAE,MAAK;gBACvD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAA;gBAC1C,MAAM,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;gBAC1F,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBAC3C,MAAM,uBAAuB,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;oBACpD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;oBAC5D,MAAM,gBAAgB,GAAG,KAAK,CAAC,YAAY;wBACzC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;wBAClD,CAAC,CAAC,CAAC,CAAA;oBACL,IAAI,gBAAgB,GAAG,WAAW,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;wBAChF,MAAM,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;oBAC/C,CAAC;oBACD,OAAO,CAAC,GAAG,CACT,wCAAwC,SAAS,WAAW,WAAW,WAAW,gBAAgB,GAAG,CACtG,CAAA;gBACH,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,wBAAwB;gBAC3B,OAAO,CAAC,IAAI,CAAC,uCAAuC,SAAS,IAAI,SAAS,wBAAwB,CAAC,CAAA;gBACnG,MAAK;YAEP;gBACE,oEAAoE;gBACpE,MAAK;QACT,CAAC;QAED,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC,CAAA;IAC/E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAA;QAC/C,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IACnF,CAAC;AACH,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @rovela/sdk/checkout/api/paypal
3
+ *
4
+ * POST /api/checkout/paypal — start a PayPal payment. Creates the order
5
+ * 'pending' (server-priced, §55) and a matching PayPal order (Orders v2,
6
+ * invoice_id = our reference). The client either renders the Smart Buttons
7
+ * popup (paypalOrderId) or redirects to approveUrl (fallback). Payment
8
+ * truth arrives via the capture leg (checkout/api/paypal-capture) with the
9
+ * webhook as async backstop — never via this route.
10
+ *
11
+ * Usage:
12
+ * ```typescript
13
+ * // app/api/checkout/paypal/route.ts
14
+ * export { POST } from '@rovela-ai/sdk/checkout/api/paypal'
15
+ * ```
16
+ */
17
+ import { NextRequest, NextResponse } from 'next/server';
18
+ import type { CheckoutApiError } from '../types';
19
+ export declare const PAYPAL_METHOD_LABEL = "PayPal";
20
+ interface PaypalCheckoutResponse {
21
+ success: true;
22
+ orderId: string;
23
+ reference: string;
24
+ paypalOrderId: string;
25
+ /** Hosted approval link — the no-JS redirect fallback. */
26
+ approveUrl: string | null;
27
+ }
28
+ export declare function POST(request: NextRequest): Promise<NextResponse<PaypalCheckoutResponse | CheckoutApiError>>;
29
+ export {};
30
+ //# sourceMappingURL=paypal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal.d.ts","sourceRoot":"","sources":["../../../src/checkout/api/paypal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAOvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,eAAO,MAAM,mBAAmB,WAAW,CAAA;AAE3C,UAAU,sBAAsB;IAC9B,OAAO,EAAE,IAAI,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,wBAAsB,IAAI,CACxB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,sBAAsB,GAAG,gBAAgB,CAAC,CAAC,CA6DlE"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @rovela/sdk/checkout/api/paypal
3
+ *
4
+ * POST /api/checkout/paypal — start a PayPal payment. Creates the order
5
+ * 'pending' (server-priced, §55) and a matching PayPal order (Orders v2,
6
+ * invoice_id = our reference). The client either renders the Smart Buttons
7
+ * popup (paypalOrderId) or redirects to approveUrl (fallback). Payment
8
+ * truth arrives via the capture leg (checkout/api/paypal-capture) with the
9
+ * webhook as async backstop — never via this route.
10
+ *
11
+ * Usage:
12
+ * ```typescript
13
+ * // app/api/checkout/paypal/route.ts
14
+ * export { POST } from '@rovela-ai/sdk/checkout/api/paypal'
15
+ * ```
16
+ */
17
+ import { NextResponse } from 'next/server';
18
+ import { preparePendingExternalOrder, resolveStoreBaseUrl, } from '../server/external-checkout';
19
+ import { resolvePaypalCredentials, createPaypalOrder, PaypalApiError } from '../server/paypal';
20
+ export const PAYPAL_METHOD_LABEL = 'PayPal';
21
+ export async function POST(request) {
22
+ try {
23
+ const body = (await request.json());
24
+ const prepared = await preparePendingExternalOrder({
25
+ body,
26
+ provider: 'paypal',
27
+ providerLabel: PAYPAL_METHOD_LABEL,
28
+ });
29
+ if (!prepared.ok)
30
+ return prepared.response;
31
+ const credentials = resolvePaypalCredentials(prepared.settings);
32
+ if (!credentials) {
33
+ return NextResponse.json({ error: 'This payment method is not available', code: 'INVALID_REQUEST' }, { status: 400 });
34
+ }
35
+ const base = resolveStoreBaseUrl(request.nextUrl.origin);
36
+ // Pickup/relay orders snapshot a merchant/relay address — PayPal must not
37
+ // see it as the buyer's shipping address, so only DELIVERY addresses are
38
+ // forwarded (SET_PROVIDED_ADDRESS); everything else is NO_SHIPPING.
39
+ const deliveryAddress = !prepared.quote.pickupLocationId && !prepared.quote.relay
40
+ ? prepared.orderShippingAddress
41
+ : null;
42
+ const paypalOrder = await createPaypalOrder({
43
+ credentials,
44
+ reference: prepared.reference,
45
+ totalCents: prepared.quote.totalCents,
46
+ currency: prepared.quote.currency,
47
+ storeName: prepared.settings?.storeName || 'Store',
48
+ returnUrl: `${base}/api/checkout/paypal/return`,
49
+ cancelUrl: `${base}/checkout?payment=cancelled`,
50
+ shippingAddress: deliveryAddress,
51
+ locale: prepared.orderLocale,
52
+ });
53
+ return NextResponse.json({
54
+ success: true,
55
+ orderId: prepared.orderId,
56
+ reference: prepared.reference,
57
+ paypalOrderId: paypalOrder.paypalOrderId,
58
+ approveUrl: paypalOrder.approveUrl,
59
+ });
60
+ }
61
+ catch (error) {
62
+ if (error instanceof PaypalApiError) {
63
+ console.error('[PayPal Checkout API] PayPal error:', error.status, error.issue, error.body);
64
+ return NextResponse.json({ error: 'PayPal could not start this payment. Please try again.', code: 'CHECKOUT_ERROR' }, { status: 502 });
65
+ }
66
+ console.error('[PayPal Checkout API] error:', error);
67
+ return NextResponse.json({ error: 'Failed to start the payment. Please try again.', code: 'CHECKOUT_ERROR' }, { status: 500 });
68
+ }
69
+ }
70
+ //# sourceMappingURL=paypal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal.js","sourceRoot":"","sources":["../../../src/checkout/api/paypal.ts"],"names":[],"mappings":"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"}