@mj-biz-apps/orders-core-entities-server 5.36.1 → 5.38.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 (67) hide show
  1. package/dist/CheckoutSessionService.d.ts +8 -0
  2. package/dist/CheckoutSessionService.d.ts.map +1 -1
  3. package/dist/CheckoutSessionService.js +37 -6
  4. package/dist/CheckoutSessionService.js.map +1 -1
  5. package/dist/ConcessionApprovalListener.js +6 -1
  6. package/dist/ConcessionApprovalListener.js.map +1 -1
  7. package/dist/ConcessionApprovalTask.d.ts +40 -1
  8. package/dist/ConcessionApprovalTask.d.ts.map +1 -1
  9. package/dist/ConcessionApprovalTask.js +139 -15
  10. package/dist/ConcessionApprovalTask.js.map +1 -1
  11. package/dist/EntitlementEngine.d.ts +7 -1
  12. package/dist/EntitlementEngine.d.ts.map +1 -1
  13. package/dist/EntitlementEngine.js +70 -60
  14. package/dist/EntitlementEngine.js.map +1 -1
  15. package/dist/ExternalInvoiceBehavior.d.ts +4 -0
  16. package/dist/ExternalInvoiceBehavior.d.ts.map +1 -1
  17. package/dist/ExternalInvoiceBehavior.js +34 -3
  18. package/dist/ExternalInvoiceBehavior.js.map +1 -1
  19. package/dist/InvoiceDisplay.d.ts +2 -0
  20. package/dist/InvoiceDisplay.d.ts.map +1 -1
  21. package/dist/InvoiceDisplay.js +7 -3
  22. package/dist/InvoiceDisplay.js.map +1 -1
  23. package/dist/OrderConcessionEntityServer.d.ts +13 -3
  24. package/dist/OrderConcessionEntityServer.d.ts.map +1 -1
  25. package/dist/OrderConcessionEntityServer.js +64 -11
  26. package/dist/OrderConcessionEntityServer.js.map +1 -1
  27. package/dist/OrderEntityServer.d.ts +5 -0
  28. package/dist/OrderEntityServer.d.ts.map +1 -1
  29. package/dist/OrderEntityServer.js +120 -45
  30. package/dist/OrderEntityServer.js.map +1 -1
  31. package/dist/OrderJournalEntryFactory.d.ts +5 -3
  32. package/dist/OrderJournalEntryFactory.d.ts.map +1 -1
  33. package/dist/OrderJournalEntryFactory.js +56 -49
  34. package/dist/OrderJournalEntryFactory.js.map +1 -1
  35. package/dist/OrdersSettings.d.ts +9 -0
  36. package/dist/OrdersSettings.d.ts.map +1 -1
  37. package/dist/OrdersSettings.js +11 -0
  38. package/dist/OrdersSettings.js.map +1 -1
  39. package/dist/PaymentWebhookDeliveryLog.d.ts +11 -1
  40. package/dist/PaymentWebhookDeliveryLog.d.ts.map +1 -1
  41. package/dist/PaymentWebhookDeliveryLog.js +34 -10
  42. package/dist/PaymentWebhookDeliveryLog.js.map +1 -1
  43. package/dist/RevenueRecognition.d.ts +1 -1
  44. package/dist/RevenueRecognition.d.ts.map +1 -1
  45. package/dist/RevenueRecognition.js +12 -7
  46. package/dist/RevenueRecognition.js.map +1 -1
  47. package/dist/SubscriptionBehavior.d.ts +91 -9
  48. package/dist/SubscriptionBehavior.d.ts.map +1 -1
  49. package/dist/SubscriptionBehavior.js +134 -11
  50. package/dist/SubscriptionBehavior.js.map +1 -1
  51. package/dist/TermLengthExceptions.d.ts +84 -0
  52. package/dist/TermLengthExceptions.d.ts.map +1 -0
  53. package/dist/TermLengthExceptions.js +119 -0
  54. package/dist/TermLengthExceptions.js.map +1 -0
  55. package/dist/displaced-start-event.d.ts +1 -1
  56. package/dist/displaced-start-event.d.ts.map +1 -1
  57. package/dist/displaced-start-event.js +3 -1
  58. package/dist/displaced-start-event.js.map +1 -1
  59. package/dist/index.d.ts +1 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +1 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/isolatedProvider.d.ts +26 -0
  64. package/dist/isolatedProvider.d.ts.map +1 -0
  65. package/dist/isolatedProvider.js +43 -0
  66. package/dist/isolatedProvider.js.map +1 -0
  67. package/package.json +4 -4
@@ -517,6 +517,14 @@ export declare class CheckoutSessionService {
517
517
  * Pull the gateway's current intent status onto our row, and return what the gateway said.
518
518
  * Fail-soft: a retrieve error leaves the local status unchanged and the paid gate still
519
519
  * refuses.
520
+ *
521
+ * The row is re-read after the gateway call and before it is written (#939). MJ's `Save()`
522
+ * sends every field of the object, not only the changed ones, and the webhook writes the same
523
+ * row while the page waits on the gateway: saving the copy read before the call put the
524
+ * webhook's `ProviderEventID` back to null, which is the stamp its duplicate check reads. When
525
+ * the fresh row already holds what the gateway said, the webhook recorded it first, and the row
526
+ * is left as it wrote it, event time included. The re-read narrows the window to milliseconds;
527
+ * it does not lock the row (#943). MJ #4339 tracks the every-field save upstream.
520
528
  */
521
529
  private static refreshIntentFromGateway;
522
530
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"CheckoutSessionService.d.ts","sourceRoot":"","sources":["../src/CheckoutSessionService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CheckoutSessionService.d.ts","sourceRoot":"","sources":["../src/CheckoutSessionService.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ import { ResolveCheckoutPublishableKey } from './CheckoutPublishableKey.js';
22
22
  import { FindReusableProviderCustomerRef, SnapshotSellsSubscription, SaveCheckoutInstrumentForRenewals, } from './CheckoutSavedInstrument.js';
23
23
  import { CheckoutMemberDiscountNotConfiguredError, DEFAULT_TYPED_CODE_PRECEDENCE, IsRegisteredMemberPromotionCode, ResolveCheckoutMemberDiscountResolver, } from './CheckoutMemberDiscountResolver.js';
24
24
  import { CapturePaymentOperation } from './CapturePaymentOperation.js';
25
+ import { WithIsolatedProvider } from './isolatedProvider.js';
25
26
  import { ToIsoCountryCode } from './VatLocationEvidence.js';
26
27
  import { raiseCheckoutCaptureTerminalAlert, raiseCheckoutSettledNotBookedAlert } from './checkoutCaptureAlert.js';
27
28
  import { CheckoutStepLog } from './CheckoutStepLog.js';
@@ -2649,12 +2650,20 @@ export class CheckoutSessionService {
2649
2650
  return this.captureFailed(order.ID, `intent status is ${intent.Status}`, undefined, contextUser, session.ID, step);
2650
2651
  }
2651
2652
  if (!intent.OrderHeaderID) {
2652
- intent.OrderHeaderID = order.ID;
2653
2653
  // Second step of the gateway description: the intent was opened before the order existed.
2654
2654
  const mdForGateway = Metadata.Provider;
2655
2655
  if (mdForGateway) {
2656
2656
  await SendOrderDescriptionToGateway(intent, order.ID, mdForGateway, contextUser);
2657
2657
  }
2658
+ // Re-read after the gateway call, before the save below (#939). The save writes every
2659
+ // field of this object, and a webhook event can land on the same row while the
2660
+ // description is on its way, so a copy read before the call would put its stamp back.
2661
+ if (!(await intent.Load(intent.ID))) {
2662
+ LogError(`[CheckoutSessionService] Could not re-read intent ${intent.ID} before stamping order ${order.ID}; saving the copy read before the gateway call`);
2663
+ }
2664
+ if (!intent.OrderHeaderID) {
2665
+ intent.OrderHeaderID = order.ID;
2666
+ }
2658
2667
  }
2659
2668
  // The order's bill-to is authoritative. The intent can carry an earlier payer: one opened
2660
2669
  // before the buyer changed e-mail is returned again by the gateway for the same idempotency
@@ -2690,7 +2699,10 @@ export class CheckoutSessionService {
2690
2699
  }
2691
2700
  try {
2692
2701
  const op = new CapturePaymentOperation();
2693
- const result = await op.ExecuteServer({
2702
+ // On its own transaction, never the shared provider's (#927): the page and the webhook
2703
+ // capture the same session within a second of each other, and on one provider their
2704
+ // transactions nest, so a rollback on one side undid the other's payment.
2705
+ const result = await WithIsolatedProvider((captureProvider) => op.ExecuteServer({
2694
2706
  PaymentIntentID: intent.ID,
2695
2707
  Amount: due,
2696
2708
  ReceivingCompanyID: order.CompanyID,
@@ -2707,10 +2719,10 @@ export class CheckoutSessionService {
2707
2719
  : null,
2708
2720
  IdempotencyKey: `checkout-complete:${session.ID}`,
2709
2721
  }, {
2710
- provider: mdProvider,
2722
+ provider: captureProvider,
2711
2723
  user: contextUser,
2712
2724
  emitProgress: () => undefined,
2713
- });
2725
+ }), mdProvider);
2714
2726
  const output = result.Output;
2715
2727
  if (!result.Success || !output?.Success) {
2716
2728
  const detail = result.ErrorMessage
@@ -2793,6 +2805,14 @@ export class CheckoutSessionService {
2793
2805
  * Pull the gateway's current intent status onto our row, and return what the gateway said.
2794
2806
  * Fail-soft: a retrieve error leaves the local status unchanged and the paid gate still
2795
2807
  * refuses.
2808
+ *
2809
+ * The row is re-read after the gateway call and before it is written (#939). MJ's `Save()`
2810
+ * sends every field of the object, not only the changed ones, and the webhook writes the same
2811
+ * row while the page waits on the gateway: saving the copy read before the call put the
2812
+ * webhook's `ProviderEventID` back to null, which is the stamp its duplicate check reads. When
2813
+ * the fresh row already holds what the gateway said, the webhook recorded it first, and the row
2814
+ * is left as it wrote it, event time included. The re-read narrows the window to milliseconds;
2815
+ * it does not lock the row (#943). MJ #4339 tracks the every-field save upstream.
2796
2816
  */
2797
2817
  static async refreshIntentFromGateway(intent, contextUser) {
2798
2818
  const retrieved = await this.retrieveIntentFromGateway(intent, contextUser);
@@ -2802,12 +2822,23 @@ export class CheckoutSessionService {
2802
2822
  if (retrieved.Status === intent.Status && retrieved.Amount == null) {
2803
2823
  return retrieved;
2804
2824
  }
2825
+ if (!(await intent.Load(intent.ID))) {
2826
+ // Deliberate: this call then refuses (the status stays unsettled), and the caller can retry
2827
+ // while the webhook still books the payment. Setting `Status` from `retrieved` on this copy
2828
+ // instead would let a later save in capture write the stale copy back, the overwrite #939 fixes.
2829
+ LogError(`[CheckoutSessionService] Could not re-read intent ${intent.ID} to stamp retrieved status ${retrieved.Status}`);
2830
+ return retrieved;
2831
+ }
2832
+ const amount = typeof retrieved.Amount === 'number' && retrieved.Amount > 0 ? retrieved.Amount : null;
2833
+ if (retrieved.Status === intent.Status && (amount === null || amount === intent.Amount)) {
2834
+ return retrieved;
2835
+ }
2805
2836
  intent.Status = retrieved.Status;
2806
2837
  // The gateway's state as of this read, so any webhook event created before now is older
2807
2838
  // than this status and is not allowed to move it backwards (#475).
2808
2839
  intent.LastEventAt = new Date();
2809
- if (typeof retrieved.Amount === 'number' && retrieved.Amount > 0) {
2810
- intent.Amount = retrieved.Amount;
2840
+ if (amount !== null) {
2841
+ intent.Amount = amount;
2811
2842
  }
2812
2843
  try {
2813
2844
  if (!(await intent.Save())) {