Files
dukang/server/dukang-api/src/integrations/pay/pay.router.provider.ts
T

36 lines
1.1 KiB
TypeScript

import { Injectable } from '@nestjs/common';
import { loadAppConfig } from '@dukang/shared-types';
import type { IPayProvider, PayMethod, PayOrderResult, RefundOrderResult } from './pay.interface';
import { PayMockProvider } from './pay.mock.provider';
import { PayWechatProvider } from './pay.wechat.provider';
/** 按当前 process.env 动态选择 Mock / 微信支付 */
@Injectable()
export class PayRouterProvider implements IPayProvider {
constructor(
private readonly mock: PayMockProvider,
private readonly wechat: PayWechatProvider,
) {}
private resolve(): IPayProvider {
return loadAppConfig().mockPay ? this.mock : this.wechat;
}
payOrder(
orderId: bigint,
openId?: string,
platform?: 'h5' | 'mini',
payMethod?: PayMethod,
): Promise<PayOrderResult> {
return this.resolve().payOrder(orderId, openId, platform, payMethod);
}
refundOrder(
orderId: bigint,
outRefundNo: string,
reason?: string,
): Promise<RefundOrderResult> {
return this.resolve().refundOrder(orderId, outRefundNo, reason);
}
}