ab10431001
Co-authored-by: Cursor <cursoragent@cursor.com>
36 lines
1.1 KiB
TypeScript
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);
|
|
}
|
|
}
|