UNPKG

@pisell/pisellos

Version:

一个可扩展的前端模块化SDK框架,支持插件系统

197 lines (196 loc) 6.75 kB
import { Module, PisellCore, ModuleOptions } from '../../types'; import { RequestPlugin, WindowPlugin } from '../../plugins'; import { BaseModule } from '../BaseModule'; import { PaymentModuleAPI, PaymentMethod, PaymentOrder, PaymentItem, PaymentItemInput, PaymentUpdateFields, PushOrderParams, CashPayment, EftposPayment, WalletPassPayment, RoundingRule, RoundingInterval, RoundingResult } from './types'; export * from './types'; export { generateRequestUniqueId }; /** * 生成请求唯一ID * 格式: 年月日时分秒毫秒+4位随机数 * 示例: 20241201143025123456 */ declare function generateRequestUniqueId(): string; /** * 支付模块实现 * * 负责处理支付相关的数据管理和本地存储 */ export declare class PaymentModule extends BaseModule implements Module, PaymentModuleAPI { protected defaultName: string; protected defaultVersion: string; request: RequestPlugin; private app; private store; window: WindowPlugin; private dbManager; private logger; private voucherUpdateLockByOrderUuid; protected otherParams: any; cash: CashPayment; eftpos: EftposPayment; wallet: WalletPassPayment; constructor(name?: string, version?: string); private runVoucherUpdateLocked; private normalizeVoucherPaymentItems; initialize(core: PisellCore, options: ModuleOptions): Promise<void>; /** * 记录信息日志 */ logInfo(title: string, metadata?: any): void; /** * 记录警告日志 */ logWarning(title: string, metadata?: any): void; /** * 记录错误日志 */ logError(title: string, error?: any, metadata?: any): void; /** * 记录调试日志 */ logDebug(title: string, metadata?: any): void; /** * 网络恢复以后,尝试执行队列 * */ private registerNetworkHandlers; private filterPayMethods; /** * 获取支付方式列表 */ getPayMethodListAsync(): Promise<PaymentMethod[]>; /** * 后台刷新支付方式列表 */ private refreshPaymentMethodsInBackground; /** * 检查支付方式列表是否有变化 */ private hasPaymentMethodsChanged; /** * 获取订单列表 */ getOrderListAsync(): Promise<PaymentOrder[]>; /** * 根据订单UUID获取支付订单(新方法) */ getPaymentOrderByUuidAsync(orderUuid: string): Promise<PaymentOrder | null>; /** * 创建支付订单(新方法,专注支付数据) */ createPaymentOrderAsync(params: PushOrderParams): Promise<PaymentOrder>; /** * 删除支付订单(新方法) */ deletePaymentOrderAsync(orderUuid: string): Promise<void>; /** * 更新订单 */ updateOrderAsync(orderUuid: string, params: Partial<PaymentOrder>): Promise<void>; /** * 基于UUID替换订单ID * * 此方法用于将本地虚拟订单ID替换为真实的订单ID。 * 当前端模拟下单流程完成后,后端返回真实订单ID时调用此方法。 * * @param orderUuid 订单的UUID * @param newOrderId 新的订单ID (来自后端) * @returns 更新后的订单对象,如果订单不存在则返回null */ replaceOrderIdByUuidAsync(orderUuid: string, newOrderId: string): Promise<PaymentOrder | null>; /** * 获取支付项(新方法) * * @param orderUuid 订单UUID * @param includeVoided 是否包含已撤销的支付项,默认为false * @returns 支付项数组 */ getPaymentItemsAsync(orderUuid: string, includeVoided?: boolean): Promise<PaymentItem[]>; /** * 获取所有支付项(包括已撤销的) * * @param orderUuid 订单UUID * @returns 所有支付项数组(包括撤销的) */ getAllPaymentItemsAsync(orderUuid: string): Promise<PaymentItem[]>; /** * 为某个订单添加支付项(新方法) */ addPaymentItemAsync(orderUuid: string, paymentItem: PaymentItemInput): Promise<void>; /** * 删除一个支付项 - 标记删除而非物理删除 */ deletePaymentAsync(orderUuid: string, paymentUuid: string): Promise<void>; /** * 批量更新代金券类支付项(覆盖更新) * * 删除所有现有的带 voucher_id 的支付项,然后添加新的代金券支付项 * 这是一个覆盖式更新,确保代金券支付项的一致性 */ updateVoucherPaymentItemsAsync(orderUuid: string, voucherPaymentItems: PaymentItemInput[]): Promise<void>; /** * 更新一个支付项 */ updatePaymentAsync(orderUuid: string, paymentUuid: string, params: PaymentUpdateFields): Promise<void>; /** * 提交支付 */ submitPayAsync(orderUuid?: string): Promise<{ status: 'success' | 'failed'; }>; /** * 提交单个订单的支付(推送到任务队列) */ private submitSingleOrderPayment; /** * 获取订单剩余待付金额 */ getRemainingOrderAmountAsync(orderUuid: string): Promise<number>; /** * 在比如现金支付界面的地方,用户输入了一个金额,在下方显示剩余多少金额,通过此方法获取 */ getRemainingOrderAmountWithInputAsync(inputAmount: string | number, orderUuid: string): Promise<number>; /** * 重新计算订单金额 */ private recalculateOrderAmount; /** * 获取现金支付方式 */ getCashPaymentMethod(): Promise<PaymentMethod | null>; /** * 获取Eftpos支付方式 */ getEftposPaymentMethod(): Promise<PaymentMethod | null>; /** * 获取钱包支付方式 */ getWalletPaymentMethod(): Promise<PaymentMethod | null>; /** * 确保支付模块所需的数据库表已创建 */ private ensurePaymentTables; /** * 获取部分支付的订单 */ getPartiallyPaidOrdersAsync(): Promise<PaymentOrder[]>; /** * 智能金额舍入 * * 根据指定的舍入间隔和规则对金额进行舍入处理 * * @param originalAmount 原始金额 * @param interval 舍入间隔 (0.05, 0.1, 0.5, 1) * @param rule 舍入规则 (standard, standard_down, always_up, always_down) * @returns 舍入结果详情(包含原始金额、舍入后金额和舍入差额) */ roundAmountAsync(originalAmount: number | string, interval: RoundingInterval | number, rule: RoundingRule | string): Promise<RoundingResult>; /** * 标准舍入处理(处理中点情况) * * @param value 要舍入的值 * @param midpointUp 中点是否向上舍入 * @returns 舍入后的值 */ private standardRound; }