This commit is contained in:
eric
2026-03-08 01:24:59 -06:00
parent c291e95a39
commit f725104c8a
19 changed files with 645 additions and 172 deletions

39
app/payment/factory.py Normal file
View File

@@ -0,0 +1,39 @@
"""
支付渠道工厂
根据配置返回对应的支付 Provider
"""
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