This commit is contained in:
eric
2026-03-13 05:15:00 -05:00
parent 90378502cf
commit 53cacfac46
24 changed files with 1059 additions and 141 deletions

View File

@@ -49,3 +49,31 @@ def reset_provider():
"""重置 Provider用于测试或切换渠道"""
global _provider_instance
_provider_instance = None
def resolve_provider(
device: str | None = None,
req_provider: str | None = None,
user_agent: str | None = None,
) -> PaymentProvider:
"""
根据设备解析支付渠道:
- 微信内(device=wechat 或 UA 含 MicroMessenger) → xorpay
- PC/手机浏览器 → zpay
显式传入的 provider 优先。
"""
req = (req_provider or "").strip().lower()
if req in ("xorpay", "zpay"):
return get_payment_provider_by_name(req)
dev = (device or "pc").lower()
if dev == "wechat":
return get_payment_provider_by_name("xorpay")
ua = (user_agent or "").lower()
if "micromessenger" in ua:
return get_payment_provider_by_name("xorpay")
return get_payment_provider_by_name("zpay")
def resolve_channel(item_channel: str | None) -> str:
"""支付方式固定为微信支付,支付宝暂不提供"""
return "wxpay"