This commit is contained in:
yumoqing 2025-12-17 11:13:15 +08:00
parent 1ebeb9581d
commit 1b1dfb7f16
2 changed files with 10 additions and 2 deletions

View File

@ -42,18 +42,21 @@ PROVIDERS = {}
# 下单接口(统一)
async def create_payment(request, params_kw=None):
env = request._run_ns
if params_kw is None:
params_kw = request.params_kw
data = params_kw
data.request = request
provider = data.get("provider")
if provider not in PROVIDERS:
debug(f'{provider=} is not a valid payment channel')
return {"error":"unknown provider"}
try:
if PROVIDERS[provider] is None:
e = Exception(f'{provider} cannot pay')
exception(f'{e}')
raise e
notify_url = env.entire_url(f'providers/{provider}')
pl = PaymentLog(request._run_ns)
fee = await get_pay_fee(provider, amount)
channel = get_provider_channel(provider)
@ -69,8 +72,11 @@ async def create_payment(request, params_kw=None):
data.out_trade_no = plog.id
data.customerid = orgid
data.userid = userid
data.payment_name = payment_name
data.notify_url = notify_url
data.client_ip = cloent_ip
res = await PROVIDERS[provider].create_payment(data)
debug(f'{provider=} instance return {res}')
return res
raise Exception('write payment_log error')
except Exception as e:

View File

@ -5,6 +5,7 @@ import base64
import hashlib
import urllib.parse
from typing import Any, Dict, Optional
from appPublic.log import debug, exception
import aiohttp
from cryptography.hazmat.primitives import hashes
@ -84,10 +85,11 @@ class AlipayGateway(Gateway):
"""
返回一个可以在 H5 里直接重定向的支付宝支付 URL
"""
debug(f'{payload=}')
biz_content = {
"out_trade_no": payload["out_trade_no"],
"total_amount": payload["amount"],
"subject": payload["subject"],
"subject": payload["payment_name"],
"product_code": "QUICK_WAP_WAY"
}
@ -107,7 +109,7 @@ class AlipayGateway(Gateway):
unsigned_str = self._build_sign_content(params)
sign = self._sign(unsigned_str)
params["sign"] = sign
debug(f'{params=}')
query_str = urllib.parse.urlencode(params)
return f"{ALIPAY_GATEWAY}?{query_str}"