From cf380ca17e8863dd5e83bc50fc6820f700fb1f94 Mon Sep 17 00:00:00 2001 From: Abubeker Yasin Date: Sat, 16 May 2026 22:58:31 +0300 Subject: [PATCH] feat: ( payment ) create provider interface + types --- .../src/modules/payments/payments.types.ts | 34 +++++++++++++++++++ .../providers/payment-provider.interface.ts | 9 +++++ 2 files changed, 43 insertions(+) create mode 100644 apps/edr-passenger-api/src/modules/payments/payments.types.ts create mode 100644 apps/edr-passenger-api/src/modules/payments/providers/payment-provider.interface.ts diff --git a/apps/edr-passenger-api/src/modules/payments/payments.types.ts b/apps/edr-passenger-api/src/modules/payments/payments.types.ts new file mode 100644 index 000000000..336f4b511 --- /dev/null +++ b/apps/edr-passenger-api/src/modules/payments/payments.types.ts @@ -0,0 +1,34 @@ +import { PaymentIntentStatus, PaymentMethodType } from '@prisma/client'; + +export interface ClientAction { + type: 'REDIRECT'; + url: string; +} + +export interface ProviderInitiationInput { + merchantOrderId: string; + bookingRef: string; + amountMinor: number; + currency: string; +} + +export interface ProviderInitiationResult { + providerOrderId: string; + clientAction: ClientAction; + expiresAt: Date; + rawInitiation: Record; +} + +export interface ProviderStatus { + status: PaymentIntentStatus; + providerTxnId?: string; + failureCode?: string; + failureMessage?: string; + rawResponse: Record; +} + +export interface PaymentProvider { + readonly method: PaymentMethodType; + initiate(input: ProviderInitiationInput): Promise; + queryStatus(merchantOrderId: string): Promise; +} diff --git a/apps/edr-passenger-api/src/modules/payments/providers/payment-provider.interface.ts b/apps/edr-passenger-api/src/modules/payments/providers/payment-provider.interface.ts new file mode 100644 index 000000000..a571f28be --- /dev/null +++ b/apps/edr-passenger-api/src/modules/payments/providers/payment-provider.interface.ts @@ -0,0 +1,9 @@ +export type { + PaymentProvider, + ProviderInitiationInput, + ProviderInitiationResult, + ProviderStatus, + ClientAction, +} from '../payments.types'; + +export const PAYMENT_PROVIDERS = Symbol('PAYMENT_PROVIDERS');