40 lines
1018 B
Python
40 lines
1018 B
Python
"""
|
||
支付渠道工厂
|
||
根据配置返回对应的支付 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
|