import { PaymentMethod, PaymentPayParams, PaymentProvider, PaymentRefundParams, PaymentUsageScene } from "./payment.js"; import { PaymentAction, PaymentFlowEvent } from "./interaction.js"; import { PaymentRequestClient } from "./transport.js"; //#region src/plus/piPaymentOld/sdk/contracts/provider.d.ts /** 单个 Session 首次启动后锁定的业务操作。 */ type PaymentOperation = 'pay' | 'refund'; /** Provider 的一次交易执行器;实例不复用,重试会重新创建。 */ interface PaymentFlow { pay(params: PaymentPayParams): void; refund(params: PaymentRefundParams): void; action(action: PaymentAction, inputValues?: Record): void; destroy(): void; } /** 创建 Flow 时由 Session 注入的稳定上下文和事件出口。 */ interface PaymentFlowContext { sessionId: string; paymentMethod: PaymentMethod; paymentProvider: PaymentProvider; salesId: string; usageScene?: PaymentUsageScene; operation: PaymentOperation; number: string; requestUniqueIdempotencyToken: string; request: PaymentRequestClient; emit: (event: PaymentFlowEvent) => void; } /** Provider 声明的能力,用于 Session 在调用前快速拒绝不支持的操作。 */ interface PaymentProviderCapabilities { pay: boolean; refund: boolean; actions: boolean; resume: boolean; } /** 支付厂商适配器:把支付方式/厂商组合映射为对应的 Flow。 */ interface PaymentProviderAdapter { id: PaymentProvider; method: PaymentMethod; transport: 'sci' | 'spi' | 'custom'; capabilities: PaymentProviderCapabilities; createFlow(context: PaymentFlowContext): PaymentFlow; } //#endregion export { PaymentFlow, PaymentFlowContext, PaymentOperation, PaymentProviderAdapter, PaymentProviderCapabilities };