/** SDK 支持的支付大类。 */ export declare type PaymentMethod = 'eftpos' | 'walletpass'; /** EFTPOS provider;WalletPass 使用同名 provider。 */ export declare type PaymentProvider = 'payo' | 'windcave' | 'mx51' | 'linkly' | 'tyro' | 'walletpass'; /** SDK 依赖的最小请求客户端。 */ export interface PaymentRequestClient { get?: (url: string, params?: unknown, config?: unknown) => Promise; post: (url: string, data?: unknown, config?: unknown) => Promise; put?: (url: string, data?: unknown, config?: unknown) => Promise; } /** SDK 初始化参数。 */ export interface PiPaymentSDKV2Options { app: PiPaymentAppLike; } /** 宿主注入的 app-like 对象。 */ export interface PiPaymentAppLike { request?: unknown; getApp?: () => unknown; utils?: { request?: unknown; [key: string]: unknown; }; appHelper?: { utils?: { request?: unknown; [key: string]: unknown; }; [key: string]: unknown; }; [key: string]: unknown; } /** SDK 标准错误。 */ export interface PaymentError { code: string | number; message: string; title?: string; detail?: string; payment?: PaymentSummary; failureKind?: 'normal' | 'unknown' | 'timeout' | 'cancelled'; manualMarkable?: boolean; retryable?: boolean; printTimeoutable?: boolean; networkError?: boolean; raw?: unknown; } /** 后端统一 payment 摘要。 */ export interface PaymentSummary { number: string; sales_id: string; payment_method: PaymentMethod; payment_provider: string; action: 'pay' | 'refund' | 'verify' | 'action' | 'transactions' | 'transaction' | 'transaction_update'; status: 'succeeded' | 'processing' | 'failed'; code: string | number; message: string; amount: string | number; currency?: string; } /** 后端统一 payment 结果。 */ export interface PaymentResult { payment: PaymentSummary; provider_response?: unknown; method_result?: unknown; [key: string]: unknown; } export declare type PaymentQueryResult = PaymentResult; /** SDK 创建本地交易 session 的参数。 */ export interface PaymentSessionCreateOptions { paymentMethod: PaymentMethod; paymentProvider: PaymentProvider; salesId: string; onChange: (event: PaymentSessionEvent) => void; } /** 查询参数必须且只能使用 number 或 salesId。 */ export declare type PaymentQueryOptions = { paymentMethod: PaymentMethod; paymentProvider?: PaymentProvider; } & ({ number: string; salesId?: never; } | { number?: never; salesId: string; }); /** 查询 reader 的参数。 */ export interface ListReaderParams { provider?: PaymentProvider; status?: string; } /** EFTPOS reader。 */ export interface PaymentReader { id: string | number; name?: string; type?: string; setting?: Record; [key: string]: unknown; } /** 支付与退款共享的通用参数。 */ interface PaymentAttemptParams { number?: string; requestUniqueIdempotencyToken?: string; amount?: string | number; currency?: string; reader?: PaymentReader; cardReaderId?: string | number; originalAmount?: string | number; internalServiceChargeFee?: string | number; customPaymentId?: string | number; serviceCharge?: Record; payParamBase64?: string; operatorId?: string | number; operatorType?: string; platform?: string; methodOptions?: Record; metadata?: Record; } export interface PaymentPayParams extends PaymentAttemptParams { } export interface PaymentRefundParams extends PaymentAttemptParams { amount: string | number; originalPaymentNumber?: string; } /** UI 不解析 payload,只把完整 action 交还给 session。 */ export interface PaymentAction { id: string; type: string; label?: string; payload?: unknown; } interface PaymentViewElementBase { key: string; label?: string; } export declare type PaymentViewElement = (PaymentViewElementBase & { type: 'button'; action: PaymentAction; }) | (PaymentViewElementBase & { type: 'text'; text: string; }) | (PaymentViewElementBase & { type: 'image'; name?: string; data: string; encoding?: string; }) | (PaymentViewElementBase & { type: 'input'; name: string; value?: string; }); /** provider 动态交互的 UI 中立模型。 */ export interface PaymentViewData { message?: string; layouts: Array<{ layoutType: string; elements: PaymentViewElement[]; }>; details?: Record; detailsText?: string; } /** 签名使用固定交互模型。 */ export interface PaymentSignatureData { message: string; merchantReceipt?: string | null; customerReceipt?: string | null; acceptAction?: PaymentAction; declineAction?: PaymentAction; } export interface PaymentEffectEvent { type: 'effect'; effect: { type: 'print'; receipts: string[]; source: 'signature' | 'success'; }; } export declare type PaymentReaderListEvent = { type: 'readerList'; status: 'success'; readers: PaymentReader[]; } | { type: 'readerList'; status: 'failed'; error: PaymentError; }; /** create.onChange 收到的完整事件。 */ export declare type PaymentSessionEvent = PaymentReaderListEvent | PaymentEffectEvent | { type: 'processing'; data: PaymentViewData; payment?: PaymentSummary; } | { type: 'signature'; data: PaymentSignatureData; payment?: PaymentSummary; } | { type: 'success'; result: PaymentResult; } | { type: 'failed'; error: PaymentError; result?: PaymentResult; }; /** 支付 Flow 可能发出的事件,不包含 reader 查询事件。 */ export declare type PaymentFlowEvent = Exclude; /** SDK create 返回的稳定接口。 */ export interface PaymentSession { readonly sessionId: string; listReader(params?: ListReaderParams): void; pay(params: PaymentPayParams): void; refund(params: PaymentRefundParams): void; action(action: PaymentAction, inputValues?: Record): void; destroy(): void; } export {};