@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
@@ -48,7 +48,11 @@ export async function POST(request) {
48
48
  code: 'GUEST_CHECKOUT_DISABLED',
49
49
  }, { status: 403 });
50
50
  }
51
- const email = body.customerEmail?.trim().toLowerCase();
51
+ // Same session-email fallback as the external providers (0.25.1): a
52
+ // signed-in customer's checkout body may carry no email — the trusted
53
+ // identity already holds it. Fixes manual/COD orders 400-ing on stores
54
+ // with guest checkout disabled.
55
+ const email = body.customerEmail?.trim().toLowerCase() || trustedCustomer?.email?.trim().toLowerCase();
52
56
  if (!email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
53
57
  return bad('A valid email is required');
54
58
  }
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAe,YAAY,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,iBAAiB,GAClB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAsCzD,SAAS,GAAG,CAAC,KAAa,EAAE,MAAM,GAAG,GAAG;IACtC,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,iBAA0B,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;AACnF,CAAC;AAED,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,OAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAA8B,CAAA;QAEhE,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAA;QAErC,qEAAqE;QACrE,uEAAuE;QACvE,4DAA4D;QAC5D,MAAM,eAAe,GAAG,MAAM,uBAAuB,EAAE,CAAA;QAEvD,MAAM,kBAAkB,GAAG,QAAQ,EAAE,aAAa,IAAI,IAAI,CAAA;QAC1D,IAAI,CAAC,kBAAkB,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,OAAO,YAAY,CAAC,IAAI,CACtB;gBACE,KAAK,EAAE,yDAAyD;gBAChE,IAAI,EAAE,yBAAkC;aACzC,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,oEAAoE;QACpE,sEAAsE;QACtE,uEAAuE;QACvE,gCAAgC;QAChC,MAAM,KAAK,GACT,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC1F,IAAI,CAAC,KAAK,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO,GAAG,CAAC,2BAA2B,CAAC,CAAA;QACzC,CAAC;QAED,2EAA2E;QAC3E,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YACtE,OAAO,GAAG,CAAC,6BAA6B,CAAC,CAAA;QAC3C,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAChE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3D,OAAO,GAAG,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAA;QACzD,CAAC;QACD,yEAAyE;QACzE,sEAAsE;QACtE,wCAAwC;QACxC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,eAAe,EAAE,eAAe,EAAE,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC;YAChF,OAAO,GAAG,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAA;QACzD,CAAC;QAED,2EAA2E;QAC3E,0EAA0E;QAC1E,4EAA4E;QAC5E,4EAA4E;QAC5E,2EAA2E;QAC3E,yEAAyE;QACzE,2EAA2E;QAC3E,oDAAoD;QACpD,IAAI,KAAK,CAAA;QACT,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,UAAU,CACtB;gBACE,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,WAAW,EAAE,qBAAqB;gBAClC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;gBACvC,UAAU,EAAE,eAAe,EAAE,EAAE,IAAI,IAAI;gBACvC,eAAe,EAAE,eAAe,EAAE,OAAO,IAAI,IAAI;gBACjD,aAAa,EAAE,KAAK;aACrB,EACD,EAAE,QAAQ,EAAE,CACb,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;gBAChC,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EACtC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CACvB,CAAA;YACH,CAAC;YACD,MAAM,GAAG,CAAA;QACX,CAAC;QAED,MAAM,aAAa,GAAuB,KAAK,CAAC,KAAK,CAAA;QACrD,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;QACzC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;QAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QAEnC,4EAA4E;QAC5E,yEAAyE;QACzE,wDAAwD;QACxD,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAA;QACjF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAClE,MAAM,SAAS,GAAG,UAAU,OAAO,IAAI,UAAU,EAAE,EAAE,CAAA;QAErD,2EAA2E;QAC3E,0EAA0E;QAC1E,2EAA2E;QAC3E,uEAAuE;QACvE,+BAA+B;QAC/B,MAAM,oBAAoB,GAAY,KAAK,CAAC,aAAa;YACvD,CAAC,CAAC;gBACE,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,IAAI,eAAe,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBACxF,QAAQ,EACN,IAAI,CAAC,eAAe,EAAE,QAAQ;oBAC9B,eAAe,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBACpD,EAAE;gBACJ,GAAG,KAAK,CAAC,aAAa;aACvB;YACH,CAAC,CAAC,KAAK,CAAC,YAAY;gBAClB,CAAC,CAAC;oBACE,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,IAAI,EAAE;oBAChD,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,IAAI,EAAE;oBAC9C,GAAG,KAAK,CAAC,YAAY;oBACrB,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK;iBACnC;gBACH,CAAC,CAAE,IAAI,CAAC,eAA2B,CAAA;QAEvC,sEAAsE;QACtE,yEAAyE;QACzE,MAAM,mBAAmB,GACvB,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAA;QAElF,0EAA0E;QAC1E,oEAAoE;QACpE,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;QAEvE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,uBAAuB,CAAC;YACvD,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,SAAS;YACpB,KAAK;YACL,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE,aAAa;YACvB,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,SAAS;YAC7C,cAAc,EAAE,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;YACzE,eAAe,EAAE,oBAAoB;YACrC,cAAc,EAAE,mBAAmB;YACnC,qBAAqB,EAAE,SAAS;YAChC,UAAU,EAAE,eAAe,EAAE,EAAE;YAC/B,cAAc,EAAE,KAAK,CAAC,kBAAkB;YACxC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,SAAS;YACrD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;YAC/B,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,QAAQ;YACzB,eAAe,EAAE,MAAM,CAAC,EAAE;YAC1B,kBAAkB,EAAE,MAAM,CAAC,IAAI;SAChC,CAAC,CAAA;QAEF,4EAA4E;QAC5E,uEAAuE;QACvE,6CAA6C;QAC7C,IAAI,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,IAAI,CAAC;oBACH,MAAM,wBAAwB,CAAC;wBAC7B,UAAU,EAAE,OAAO,CAAC,EAAE;wBACtB,OAAO;wBACP,UAAU,EAAE,eAAe,EAAE,EAAE,IAAI,IAAI;wBACvC,KAAK;wBACL,WAAW,EAAE,OAAO,CAAC,WAAW;qBACjC,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAA;gBACnE,CAAC;YACH,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,6BAA6B;QAC7B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;YAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAA;YACtD,uEAAuE;YACvE,uEAAuE;YACvE,yCAAyC;YACzC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC/D,wEAAwE;YACxE,yEAAyE;YACzE,MAAM,MAAM,GAAG,iEAAiE,CAAA;YAChF,MAAM,UAAU,GAAqB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7D,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;gBAClD,QAAQ,EAAE,CAAC,CAAC,KAAK;gBACjB,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACpE,eAAe,EAAE,CAAC,CAAC,aAAa;aACjC,CAAC,CAAC,CAAA;YACH,sEAAsE;YACtE,mEAAmE;YACnE,yCAAyC;YACzC,MAAM,IAAI,GAAG,oBAAoB,CAAA;YACjC,MAAM,YAAY,GAAiB;gBACjC,IAAI,EAAE,KAAK,CAAC,aAAa;oBACvB,CAAC,CAAC,YAAY,KAAK,CAAC,kBAAkB,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;oBAChF,CAAC,CAAC,KAAK,CAAC,KAAK;wBACX,CAAC,CAAC,kBAAkB,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;wBACtC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;gBACjD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAA;YACD,IAAI,CAAC;gBACH,MAAM,qBAAqB,CAAC;oBAC1B,MAAM,EAAE,WAAW;oBACnB,EAAE,EAAE,KAAK;oBACT,YAAY,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU;oBACjE,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;oBACvC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB;oBAChC,SAAS,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;oBACjC,aAAa,EAAE,aAAa,MAAM,CAAC,IAAI,EAAE;oBACzC,KAAK,EAAE,UAAU;oBACjB,QAAQ,EAAE,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;oBAC3D,QAAQ,EACN,KAAK,CAAC,aAAa,GAAG,CAAC;wBACrB,CAAC,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,EAAE;wBAC/D,CAAC,CAAC,SAAS;oBACf,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,SAAS;oBAC7C,YAAY,EACV,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM;oBAChF,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;oBACjD,YAAY,EACV,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;wBACjD,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;yBACvD,CAAC,CAAC;wBACL,CAAC,CAAC,SAAS;oBACf,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;oBACrD,eAAe,EAAE,YAAY;oBAC7B,gBAAgB,EAAE,GAAG,QAAQ,mBAAmB,OAAO,EAAE;oBACzD,mBAAmB,EAAE,MAAM,CAAC,YAAY,IAAI,SAAS;iBACtD,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAA;YACpE,CAAC;YAED,uEAAuE;YACvE,yEAAyE;YACzE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAA;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAA;YAClD,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,WAAW,CAAC;wBAChB,KAAK,EAAE;4BACL,KAAK,EAAE,UAAU;4BACjB,UAAU,EAAE,SAAS;4BACrB,UAAU,EAAE,SAAS;4BACrB,QAAQ,EAAE,OAAO;4BACjB,WAAW,EAAE,UAAU;4BACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ;4BACxB,IAAI,EAAE,mBAAmB;yBAC1B;wBACD,MAAM,EAAE,IAAI;wBACZ,OAAO,EAAE,IAAI;qBACd,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAA;gBACpE,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC,IAAI,CAAC;YACvB,OAAO,EAAE,IAAI;YACb,OAAO;YACP,SAAS;YACT,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE;SACxF,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAA;QACpD,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,8CAA8C,EAAE,IAAI,EAAE,gBAAyB,EAAE,EAC1F,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -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,22 @@
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
+ stripeAvailable: boolean;
40
+ methods: PublicPaymentMethod[];
24
41
  }>>;
25
42
  //# 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;AAO1C,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;AAkBD,wBAAsB,GAAG;;;;IAuDxB"}
@@ -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,28 +21,79 @@
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';
28
+ import { hasConnectedAccount } from '../stripe/client';
29
+ /**
30
+ * Whether native Stripe card payment is available on THIS store — the same
31
+ * env truth `createCheckoutSession` runs on (connected account + secret
32
+ * key). Env-only, so it works even inside the fail-open catch: a DB hiccup
33
+ * still degrades to Stripe-only on stores that HAVE Stripe, and never
34
+ * offers a card option on stores that don't (0.25.1 — the checkout used to
35
+ * hardcode the card radio and eject shoppers into a dead Stripe path).
36
+ */
37
+ function stripeIsAvailable() {
38
+ try {
39
+ return !!process.env.STRIPE_SECRET_KEY && hasConnectedAccount();
40
+ }
41
+ catch {
42
+ return false;
43
+ }
44
+ }
18
45
  export async function GET() {
46
+ const stripeAvailable = stripeIsAvailable();
19
47
  try {
20
48
  // Group-gated methods are hidden from guests and non-members — the group
21
49
  // comes from the SESSION (resolveCheckoutCustomer), never from the client.
22
50
  const customer = await resolveCheckoutCustomer();
23
51
  const methods = await findEnabledPaymentMethods(customer?.groupId ?? null);
24
- return NextResponse.json({
25
- success: true,
26
- methods: methods.map((m) => ({
52
+ const out = [];
53
+ // External providers render FIRST (card-adjacent), then manual methods.
54
+ // Each is guarded so a provider hiccup can never hide the others.
55
+ try {
56
+ const settings = await findSettings();
57
+ const paypal = resolvePaypalCredentials(settings);
58
+ if (paypal) {
59
+ out.push({
60
+ id: 'paypal',
61
+ kind: 'external',
62
+ provider: 'paypal',
63
+ name: 'PayPal',
64
+ instructions: null,
65
+ paypal: { clientId: paypal.clientId, environment: paypal.environment },
66
+ });
67
+ }
68
+ const up2pay = resolveUp2payCredentials(settings);
69
+ if (up2pay) {
70
+ out.push({
71
+ id: 'up2pay',
72
+ kind: 'external',
73
+ provider: 'up2pay',
74
+ name: 'Carte bancaire (Crédit Agricole)',
75
+ instructions: null,
76
+ });
77
+ }
78
+ }
79
+ catch (err) {
80
+ console.error('[Checkout Payment Methods API] provider resolution failed:', err);
81
+ }
82
+ for (const m of methods) {
83
+ out.push({
27
84
  id: m.id,
28
85
  kind: m.kind,
29
86
  name: m.name,
30
87
  instructions: m.instructions ?? null,
31
- })),
32
- });
88
+ });
89
+ }
90
+ return NextResponse.json({ success: true, stripeAvailable, methods: out });
33
91
  }
34
92
  catch (error) {
35
93
  console.error('[Checkout Payment Methods API] list error:', error);
36
- // Fail-open to "no extra methods" — checkout falls back to Stripe-only.
37
- return NextResponse.json({ success: true, methods: [] });
94
+ // Fail-open to "no extra methods" — checkout falls back to Stripe-only
95
+ // WHEN Stripe exists (env-derived, unaffected by the DB error).
96
+ return NextResponse.json({ success: true, stripeAvailable, methods: [] });
38
97
  }
39
98
  }
40
99
  //# sourceMappingURL=payment-methods.js.map
@@ -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":"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"}
@@ -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":"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"}
@@ -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"}