This commit is contained in:
yumoqing 2025-12-12 17:56:12 +08:00
parent b30303214e
commit 8e71c942e7
2 changed files with 29 additions and 9 deletions

View File

@ -1,5 +1,6 @@
# init.py
import os
from appPublic.log import log,exception
from ahserver.serverenv import ServerEnv
from .notify import get_provider, get_provider_channel
from .paylog import PaymentLog
@ -40,6 +41,10 @@ async def create_payment(request, params_kw=None):
if provider not in PROVIDERS:
return {"error":"unknown provider"}
try:
if PROVIDERS[provider] is None:
e = Exception(f'{provider} cannot pay')
exception(f'{e}')
raise e
pl = PaymentLog(request._run_ns)
channel = get_provider_channel(provider)
userid = await get_suer()
@ -67,6 +72,10 @@ async def query_payment(request, params_kw=None):
if provider not in PROVIDERS:
return {"error":"unknown provider"}
try:
if PROVIDERS[provider] is None:
e = Exception(f'{provider} cannot pay')
exception(f'{e}')
raise e
res = await PROVIDERS[provider].query(data)
return res
except Exception as e:
@ -81,6 +90,10 @@ async def refund_payment(request, params_kw=None):
if provider not in PROVIDERS:
return {"error":"unknown provider"}
try:
if PROVIDERS[provider] is None:
e = Exception(f'{provider} cannot pay')
exception(f'{e}')
raise e
res = await PROVIDERS[provider].refund(data)
return res
except Exception as e:
@ -95,6 +108,10 @@ async def payment_notify(request, callback, params_kw=None):
headers = dict(request.headers)
body = await request.text()
try:
if PROVIDERS[provider] is None:
e = Exception(f'{provider} cannot pay')
exception(f'{e}')
raise e
data = await PROVIDERS[provider].handle_notify(headers, body)
# 这里 data 应包含标准化字段out_trade_no/status/attach 等
# TODO: 业务幂等处理

View File

@ -17,13 +17,16 @@ def get_provider_channel(name:str):
return channels.get(name, '9')
def get_provider(name: str, conf: Dict):
if name == "wechat":
return WechatGateway(**conf)
if name == "paypal":
return PaypalGateway(**conf)
if name == "alipay":
return AlipayGateway(**conf)
if name == "stripe":
return StripeGateway(**conf)
raise ValueError("unknown provider")
try:
if name == "wechat":
return WechatGateway(**conf)
if name == "paypal":
return PaypalGateway(**conf)
if name == "alipay":
return AlipayGateway(**conf)
if name == "stripe":
return StripeGateway(**conf)
except:
return None
raise ValueError("unknown provider")