@munchi_oy/payments 1.6.10 → 1.10.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.
@@ -1,4 +1,4 @@
1
- import type { CurrencyCode, PaymentProvider, ProviderEnum, TransactionDto } from "@munchi_oy/core";
1
+ import type { CurrencyCode, PaymentProvider, ProviderEnum, SplitContextDto, TransactionDto } from "@munchi_oy/core";
2
2
  export type TransactionDetails = Omit<TransactionDto, "id" | "createdAt" | "provider">;
3
3
  export declare enum SdkPaymentStatus {
4
4
  PENDING = "PENDING",
@@ -43,6 +43,12 @@ export interface PaymentRequest {
43
43
  currency: CurrencyCode;
44
44
  displayId: string;
45
45
  options?: VivaOptions | NetsOptions | WorldlineOptions;
46
+ /**
47
+ * Split context for the payment-session flow. Omit for a full-cart payment,
48
+ * or send { mode, partId|seatId } for a split. Must match the order's
49
+ * checkoutModel. Only consumed by VivaSessionStrategy.
50
+ */
51
+ splitContext?: SplitContextDto;
46
52
  }
47
53
  export interface RefundRequest {
48
54
  amountCents: number;
@@ -61,9 +67,30 @@ export interface RefundRequest {
61
67
  businessId: number;
62
68
  options?: VivaRefundOptions | NetsRefundOptions | WorldlineRefundOptions;
63
69
  }
70
+ export interface ManualPaymentRequest {
71
+ orderRef: string;
72
+ amountCents: number;
73
+ paymethod: string;
74
+ tipAmount?: number;
75
+ splitContext?: SplitContextDto;
76
+ /**
77
+ * Arbitrary client metadata persisted on the session (e.g. voucher code,
78
+ * gift card id, employee id, external reference, notes). Surfaced to
79
+ * reconciliation when building the order paymentEvent.
80
+ */
81
+ metadata?: Record<string, unknown>;
82
+ }
83
+ export interface VoidRequest {
84
+ orderRef: string;
85
+ sessionId: string;
86
+ }
87
+ export interface RevertRequest {
88
+ orderRef: string;
89
+ originalTransactionId: string;
90
+ }
64
91
  export interface PaymentTerminalConfig {
65
92
  channel: ProviderEnum;
66
- provider?: PaymentProvider | null;
93
+ provider: PaymentProvider;
67
94
  kioskId: string;
68
95
  storeId: string;
69
96
  }
@@ -112,6 +139,9 @@ export interface IMunchiPaymentSDK {
112
139
  initiateTransaction(params: PaymentRequest, options?: TransactionOptions): Promise<PaymentResult>;
113
140
  cancel(): Promise<boolean>;
114
141
  refund(params: RefundRequest, options?: TransactionOptions): Promise<PaymentResult>;
142
+ revert(params: RevertRequest, options?: TransactionOptions): Promise<PaymentResult>;
143
+ recordManualPayment(params: ManualPaymentRequest, options?: TransactionOptions): Promise<PaymentResult>;
144
+ voidManualPayment(params: VoidRequest, options?: TransactionOptions): Promise<PaymentResult>;
115
145
  reset(): void;
116
146
  }
117
147
  //# sourceMappingURL=payment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../../../src/types/payment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../../../src/types/payment.ts"],"names":[],"mappings":"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"}
@@ -59,5 +59,14 @@ export interface SDKOptions {
59
59
  */
60
60
  autoResetOnPaymentComplete?: AutoResetOptions;
61
61
  appToApp?: AppToAppConfig;
62
+ /**
63
+ * Routes POS Viva payments through the backend payment-session flow
64
+ * (VivaSessionStrategy) instead of the legacy v4 VivaStrategy. Kiosk/handheld
65
+ * leave this unset and stay on the legacy flow.
66
+ */
67
+ paymentSession?: PaymentSessionConfig;
68
+ }
69
+ export interface PaymentSessionConfig {
70
+ enabled: boolean;
62
71
  }
63
72
  //# sourceMappingURL=sdk.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/types/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC9E,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnD,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACtD,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnD,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAClD,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AACvD,MAAM,MAAM,2BAA2B,GAAG,UAAU,GAAG,aAAa,CAAC;AAErE,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACvD,aAAa,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,2BAA2B,CAAC;IAClD,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,0BAA0B,CAAC,EAAE,gBAAgB,CAAC;IAC9C,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/types/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC9E,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnD,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACtD,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnD,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAClD,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AACvD,MAAM,MAAM,2BAA2B,GAAG,UAAU,GAAG,aAAa,CAAC;AAErE,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACvD,aAAa,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,2BAA2B,CAAC;IAClD,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,0BAA0B,CAAC,EAAE,gBAAgB,CAAC;IAC9C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.6.10";
1
+ export declare const VERSION = "1.10.1";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@munchi_oy/payments",
3
- "version": "1.6.10",
3
+ "version": "1.10.1",
4
4
  "description": "Munchi Payments SDK - Payment processing utilities",
5
5
  "license": "UNLICENSED",
6
6
  "publishConfig": {
@@ -32,7 +32,7 @@
32
32
  "@types/jest": "^30.0.0",
33
33
  "tsup": "^8.0.0",
34
34
  "typescript": "^5.0.0",
35
- "@munchi_oy/core": "1.9.11"
35
+ "@munchi_oy/core": "1.9.41"
36
36
  },
37
37
  "scripts": {
38
38
  "test": "jest",
@@ -4,22 +4,32 @@ import { version } from "../package.json";
4
4
  import { PaymentErrorCode, PaymentSDKError } from "./error";
5
5
  import type { IPaymentStrategy } from "./strategies/IPaymentStrategy";
6
6
  import { StrategyExecutionMode } from "./strategies/IPaymentStrategy";
7
+ import { ManualSessionStrategy } from "./strategies/ManualSessionStrategy";
7
8
  import { NetsStrategy } from "./strategies/NetsStrategy";
8
9
  import { VivaAppToAppStrategy } from "./strategies/VivaAppToAppStrategy";
10
+ import { VivaSessionStrategy } from "./strategies/VivaSessionStrategy";
9
11
  import { VivaStrategy } from "./strategies/VivaStrategy";
10
12
  import { WorldlineStrategy } from "./strategies/WorldlineStrategy";
11
13
  import {
12
14
  type IMessagingAdapter,
13
15
  type IMunchiPaymentSDK,
16
+ type ManualPaymentRequest,
14
17
  PaymentInteractionState,
15
18
  type PaymentResult,
16
19
  type PaymentTerminalConfig,
17
20
  type RefundRequest,
21
+ type RevertRequest,
18
22
  type PaymentRequest as SdkPaymentRequest,
19
23
  SdkPaymentStatus,
20
24
  type TransactionOptions,
25
+ type VoidRequest,
21
26
  } from "./types/payment";
22
- import type { AppToAppConfig, ILogger, SDKOptions } from "./types/sdk";
27
+ import type {
28
+ AppToAppConfig,
29
+ ILogger,
30
+ PaymentSessionConfig,
31
+ SDKOptions,
32
+ } from "./types/sdk";
23
33
 
24
34
  type StateListener = (state: PaymentInteractionState) => void;
25
35
 
@@ -36,6 +46,8 @@ export class MunchiPaymentSDK implements IMunchiPaymentSDK {
36
46
  private _autoResetTimer: ReturnType<typeof setTimeout> | undefined;
37
47
  private autoResetOptions: SDKOptions["autoResetOnPaymentComplete"];
38
48
  private appToAppConfig: AppToAppConfig | undefined;
49
+ private paymentSessionConfig: PaymentSessionConfig | undefined;
50
+ private manualStrategy: ManualSessionStrategy;
39
51
 
40
52
  private static readonly TERMINAL_STATES = [
41
53
  PaymentInteractionState.SUCCESS,
@@ -61,6 +73,8 @@ export class MunchiPaymentSDK implements IMunchiPaymentSDK {
61
73
  this.timeoutMs = options.timeoutMs || 30000;
62
74
  this.autoResetOptions = options.autoResetOnPaymentComplete;
63
75
  this.appToAppConfig = options.appToApp;
76
+ this.paymentSessionConfig = options.paymentSession;
77
+ this.manualStrategy = new ManualSessionStrategy(axios, config);
64
78
  this.strategy = strategy ?? this.resolveStrategy(config);
65
79
  }
66
80
 
@@ -200,6 +214,9 @@ export class MunchiPaymentSDK implements IMunchiPaymentSDK {
200
214
  this.appToAppConfig,
201
215
  );
202
216
  }
217
+ if (this.paymentSessionConfig?.enabled) {
218
+ return new VivaSessionStrategy(this.axios, this.messaging, config);
219
+ }
203
220
  return new VivaStrategy(this.axios, this.messaging, config);
204
221
 
205
222
  default:
@@ -645,4 +662,163 @@ export class MunchiPaymentSDK implements IMunchiPaymentSDK {
645
662
  return errorResult;
646
663
  }
647
664
  };
665
+
666
+ public revert = async (
667
+ params: RevertRequest,
668
+ options?: TransactionOptions,
669
+ ): Promise<PaymentResult> => {
670
+ const callbacks = options ?? {};
671
+ this.logger?.info("Reverting payment", { orderRef: params.orderRef });
672
+ this._currentSessionId = params.originalTransactionId;
673
+ this._cancellationIntent = false;
674
+
675
+ if (!MunchiPaymentSDK.RESTING_STATES.includes(this._currentState)) {
676
+ return this.generateErrorResult(
677
+ params.orderRef,
678
+ PaymentErrorCode.UNKNOWN,
679
+ "A transaction is already in progress",
680
+ );
681
+ }
682
+
683
+ const revertTransaction = this.strategy.revertTransaction?.bind(
684
+ this.strategy,
685
+ );
686
+ if (!revertTransaction) {
687
+ return this.generateErrorResult(
688
+ params.orderRef,
689
+ PaymentErrorCode.STRATEGY_ERROR,
690
+ "Revert is not supported by the active payment strategy",
691
+ );
692
+ }
693
+
694
+ this.transitionTo(PaymentInteractionState.CONNECTING);
695
+
696
+ try {
697
+ const result = await revertTransaction(params);
698
+ this.settleSingleShot(result, params.orderRef, callbacks);
699
+ return result;
700
+ } catch (error) {
701
+ this.logger?.error("Revert failed", error);
702
+ return this.failSingleShot(
703
+ params.orderRef,
704
+ error,
705
+ "Revert failed",
706
+ callbacks,
707
+ );
708
+ }
709
+ };
710
+
711
+ public recordManualPayment = async (
712
+ params: ManualPaymentRequest,
713
+ options?: TransactionOptions,
714
+ ): Promise<PaymentResult> => {
715
+ const callbacks = options ?? {};
716
+ this.logger?.info("Recording manual payment", {
717
+ orderRef: params.orderRef,
718
+ });
719
+ this._currentSessionId = undefined;
720
+ this._cancellationIntent = false;
721
+
722
+ if (!MunchiPaymentSDK.RESTING_STATES.includes(this._currentState)) {
723
+ return this.generateErrorResult(
724
+ params.orderRef,
725
+ PaymentErrorCode.UNKNOWN,
726
+ "A transaction is already in progress",
727
+ );
728
+ }
729
+
730
+ this.transitionTo(PaymentInteractionState.CONNECTING);
731
+ this.safeFireCallback(() =>
732
+ callbacks.onConnecting?.({
733
+ orderRef: params.orderRef,
734
+ refPaymentId: undefined,
735
+ }),
736
+ );
737
+
738
+ try {
739
+ const result = await this.manualStrategy.recordPayment(params);
740
+ this.settleSingleShot(result, params.orderRef, callbacks);
741
+ return result;
742
+ } catch (error) {
743
+ this.logger?.error("Manual payment failed", error);
744
+ return this.failSingleShot(
745
+ params.orderRef,
746
+ error,
747
+ "Manual payment failed",
748
+ callbacks,
749
+ );
750
+ }
751
+ };
752
+
753
+ public voidManualPayment = async (
754
+ params: VoidRequest,
755
+ options?: TransactionOptions,
756
+ ): Promise<PaymentResult> => {
757
+ const callbacks = options ?? {};
758
+ this.logger?.info("Voiding manual payment", { orderRef: params.orderRef });
759
+ this._currentSessionId = params.sessionId;
760
+ this._cancellationIntent = false;
761
+
762
+ if (!MunchiPaymentSDK.RESTING_STATES.includes(this._currentState)) {
763
+ return this.generateErrorResult(
764
+ params.orderRef,
765
+ PaymentErrorCode.UNKNOWN,
766
+ "A transaction is already in progress",
767
+ );
768
+ }
769
+
770
+ this.transitionTo(PaymentInteractionState.CONNECTING);
771
+
772
+ try {
773
+ const result = await this.manualStrategy.voidPayment(params);
774
+ this.settleSingleShot(result, params.orderRef, callbacks);
775
+ return result;
776
+ } catch (error) {
777
+ this.logger?.error("Manual void failed", error);
778
+ return this.failSingleShot(
779
+ params.orderRef,
780
+ error,
781
+ "Void failed",
782
+ callbacks,
783
+ );
784
+ }
785
+ };
786
+
787
+ private settleSingleShot(
788
+ result: PaymentResult,
789
+ orderRef: string,
790
+ callbacks: TransactionOptions,
791
+ ): void {
792
+ if (result.success) {
793
+ this.transitionTo(PaymentInteractionState.SUCCESS);
794
+ this.safeFireCallback(() => callbacks.onSuccess?.(result));
795
+ } else if (result.status === SdkPaymentStatus.CANCELLED) {
796
+ this.transitionTo(PaymentInteractionState.FAILED);
797
+ this.safeFireCallback(() =>
798
+ callbacks.onCancelled?.({
799
+ orderRef,
800
+ refPaymentId: this._currentSessionId,
801
+ }),
802
+ );
803
+ } else {
804
+ this.transitionTo(PaymentInteractionState.FAILED);
805
+ this.safeFireCallback(() => callbacks.onError?.(result));
806
+ }
807
+ }
808
+
809
+ private failSingleShot(
810
+ orderRef: string,
811
+ error: unknown,
812
+ fallbackMessage: string,
813
+ callbacks: TransactionOptions,
814
+ ): PaymentResult {
815
+ const errorResult = this.generateErrorResult(
816
+ orderRef,
817
+ PaymentErrorCode.NETWORK_ERROR,
818
+ error instanceof Error ? error.message : fallbackMessage,
819
+ );
820
+ this.transitionTo(PaymentInteractionState.FAILED);
821
+ this.safeFireCallback(() => callbacks.onError?.(errorResult));
822
+ return errorResult;
823
+ }
648
824
  }
@@ -3,6 +3,7 @@ import type {
3
3
  PaymentRequest,
4
4
  PaymentResult,
5
5
  RefundRequest,
6
+ RevertRequest,
6
7
  } from "../types/payment";
7
8
 
8
9
  export enum StrategyExecutionMode {
@@ -25,5 +26,6 @@ export interface IPaymentStrategy {
25
26
  onStateChange: (state: PaymentInteractionState, detail?: { sessionId?: string }) => void,
26
27
  ): Promise<PaymentResult>;
27
28
  verifyFinalStatus(request: PaymentRequest, sessionId: string): Promise<PaymentResult>;
29
+ revertTransaction?(request: RevertRequest): Promise<PaymentResult>;
28
30
  abort(): void;
29
31
  }
@@ -0,0 +1,93 @@
1
+ import {
2
+ type CreateManualSessionDto,
3
+ PaymentSessionApi,
4
+ PaymentSessionStatus,
5
+ } from "@munchi_oy/core";
6
+ import type { AxiosInstance } from "axios";
7
+
8
+ import { PaymentErrorCode, PaymentSDKError } from "../error";
9
+ import {
10
+ type ManualPaymentRequest,
11
+ type PaymentResult,
12
+ type PaymentTerminalConfig,
13
+ SdkPaymentStatus,
14
+ type VoidRequest,
15
+ } from "../types/payment";
16
+ import { mapSessionResult } from "./sessionResult";
17
+
18
+ export class ManualSessionStrategy {
19
+ private sessionApi: PaymentSessionApi;
20
+
21
+ constructor(
22
+ axios: AxiosInstance,
23
+ private config: PaymentTerminalConfig,
24
+ ) {
25
+ this.sessionApi = new PaymentSessionApi(undefined, "", axios);
26
+ }
27
+
28
+ async recordPayment(request: ManualPaymentRequest): Promise<PaymentResult> {
29
+ try {
30
+ const payload: CreateManualSessionDto = {
31
+ businessId: Number(this.config.storeId),
32
+ orderId: request.orderRef,
33
+ amount: request.amountCents,
34
+ paymethod: request.paymethod,
35
+ provider: this.config.provider,
36
+ };
37
+ if (request.tipAmount !== undefined) {
38
+ payload.tipAmount = request.tipAmount;
39
+ }
40
+ if (request.splitContext !== undefined) {
41
+ payload.splitContext = request.splitContext;
42
+ }
43
+ if (request.metadata !== undefined) {
44
+ payload.metadata = request.metadata;
45
+ }
46
+
47
+ const { data } = await this.sessionApi.recordManualPayment(payload);
48
+ return mapSessionResult(data, request.orderRef);
49
+ } catch (error) {
50
+ throw new PaymentSDKError(
51
+ PaymentErrorCode.NETWORK_ERROR,
52
+ "Failed to record manual payment",
53
+ error,
54
+ );
55
+ }
56
+ }
57
+
58
+ async voidPayment(request: VoidRequest): Promise<PaymentResult> {
59
+ try {
60
+ const { data } = await this.sessionApi.voidManualPayment({
61
+ sessionId: request.sessionId,
62
+ });
63
+
64
+ const isVoided =
65
+ data.status === PaymentSessionStatus.Voided ||
66
+ data.status === PaymentSessionStatus.Voiding;
67
+
68
+ const result: PaymentResult = {
69
+ success: isVoided,
70
+ status: isVoided ? SdkPaymentStatus.SUCCESS : SdkPaymentStatus.FAILED,
71
+ orderId: request.orderRef,
72
+ transactionId: data.providerTransactionId ?? data.sessionId,
73
+ };
74
+
75
+ if (!isVoided) {
76
+ if (data.errorCode) {
77
+ result.errorCode = data.errorCode;
78
+ }
79
+ if (data.errorMessage) {
80
+ result.errorMessage = data.errorMessage;
81
+ }
82
+ }
83
+
84
+ return result;
85
+ } catch (error) {
86
+ throw new PaymentSDKError(
87
+ PaymentErrorCode.NETWORK_ERROR,
88
+ "Failed to void manual payment",
89
+ error,
90
+ );
91
+ }
92
+ }
93
+ }