@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.
- package/dist/CheckoutSessionService.d.ts +8 -0
- package/dist/CheckoutSessionService.d.ts.map +1 -1
- package/dist/CheckoutSessionService.js +37 -6
- package/dist/CheckoutSessionService.js.map +1 -1
- package/dist/ConcessionApprovalListener.js +6 -1
- package/dist/ConcessionApprovalListener.js.map +1 -1
- package/dist/ConcessionApprovalTask.d.ts +40 -1
- package/dist/ConcessionApprovalTask.d.ts.map +1 -1
- package/dist/ConcessionApprovalTask.js +139 -15
- package/dist/ConcessionApprovalTask.js.map +1 -1
- package/dist/EntitlementEngine.d.ts +7 -1
- package/dist/EntitlementEngine.d.ts.map +1 -1
- package/dist/EntitlementEngine.js +70 -60
- package/dist/EntitlementEngine.js.map +1 -1
- package/dist/ExternalInvoiceBehavior.d.ts +4 -0
- package/dist/ExternalInvoiceBehavior.d.ts.map +1 -1
- package/dist/ExternalInvoiceBehavior.js +34 -3
- package/dist/ExternalInvoiceBehavior.js.map +1 -1
- package/dist/InvoiceDisplay.d.ts +2 -0
- package/dist/InvoiceDisplay.d.ts.map +1 -1
- package/dist/InvoiceDisplay.js +7 -3
- package/dist/InvoiceDisplay.js.map +1 -1
- package/dist/OrderConcessionEntityServer.d.ts +13 -3
- package/dist/OrderConcessionEntityServer.d.ts.map +1 -1
- package/dist/OrderConcessionEntityServer.js +64 -11
- package/dist/OrderConcessionEntityServer.js.map +1 -1
- package/dist/OrderEntityServer.d.ts +5 -0
- package/dist/OrderEntityServer.d.ts.map +1 -1
- package/dist/OrderEntityServer.js +120 -45
- package/dist/OrderEntityServer.js.map +1 -1
- package/dist/OrderJournalEntryFactory.d.ts +5 -3
- package/dist/OrderJournalEntryFactory.d.ts.map +1 -1
- package/dist/OrderJournalEntryFactory.js +56 -49
- package/dist/OrderJournalEntryFactory.js.map +1 -1
- package/dist/OrdersSettings.d.ts +9 -0
- package/dist/OrdersSettings.d.ts.map +1 -1
- package/dist/OrdersSettings.js +11 -0
- package/dist/OrdersSettings.js.map +1 -1
- package/dist/PaymentWebhookDeliveryLog.d.ts +11 -1
- package/dist/PaymentWebhookDeliveryLog.d.ts.map +1 -1
- package/dist/PaymentWebhookDeliveryLog.js +34 -10
- package/dist/PaymentWebhookDeliveryLog.js.map +1 -1
- package/dist/RevenueRecognition.d.ts +1 -1
- package/dist/RevenueRecognition.d.ts.map +1 -1
- package/dist/RevenueRecognition.js +12 -7
- package/dist/RevenueRecognition.js.map +1 -1
- package/dist/SubscriptionBehavior.d.ts +91 -9
- package/dist/SubscriptionBehavior.d.ts.map +1 -1
- package/dist/SubscriptionBehavior.js +134 -11
- package/dist/SubscriptionBehavior.js.map +1 -1
- package/dist/TermLengthExceptions.d.ts +84 -0
- package/dist/TermLengthExceptions.d.ts.map +1 -0
- package/dist/TermLengthExceptions.js +119 -0
- package/dist/TermLengthExceptions.js.map +1 -0
- package/dist/displaced-start-event.d.ts +1 -1
- package/dist/displaced-start-event.d.ts.map +1 -1
- package/dist/displaced-start-event.js +3 -1
- package/dist/displaced-start-event.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/isolatedProvider.d.ts +26 -0
- package/dist/isolatedProvider.d.ts.map +1 -0
- package/dist/isolatedProvider.js +43 -0
- package/dist/isolatedProvider.js.map +1 -0
- 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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAiG,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQ/I,OAAO,EAgBH,KAAK,2BAA2B,EAOhC,KAAK,oBAAoB,EASzB,KAAK,oBAAoB,EAC5B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAwB,KAAK,eAAe,EAA2B,MAAM,+BAA+B,CAAC;AAWpH,OAAO,EAKH,KAAK,2BAA2B,EACnC,MAAM,qCAAqC,CAAC;
|
|
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
|
-
|
|
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:
|
|
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 (
|
|
2810
|
-
intent.Amount =
|
|
2840
|
+
if (amount !== null) {
|
|
2841
|
+
intent.Amount = amount;
|
|
2811
2842
|
}
|
|
2812
2843
|
try {
|
|
2813
2844
|
if (!(await intent.Save())) {
|