""" 支付渠道工厂 根据配置返回对应的支付 Provider 默认使用 zpay 替代 xorpay """ from ..config import ( PAYMENT_PROVIDER, XORPAY_AID, XORPAY_SECRET, XORPAY_CASHIER_URL, ZPAY_PID, ZPAY_KEY, ) from .base import PaymentProvider from .xorpay import XorPayProvider from .zpay import ZPayProvider _provider_instance: PaymentProvider | None = None def get_payment_provider() -> PaymentProvider: """获取当前配置的支付渠道实例(单例)""" global _provider_instance if _provider_instance is not None: return _provider_instance if PAYMENT_PROVIDER == "zpay": _provider_instance = ZPayProvider(pid=ZPAY_PID, key=ZPAY_KEY) else: _provider_instance = XorPayProvider( aid=XORPAY_AID, secret=XORPAY_SECRET, cashier_url=XORPAY_CASHIER_URL, ) return _provider_instance def reset_provider(): """重置 Provider(用于测试或切换渠道)""" global _provider_instance _provider_instance = None