This commit is contained in:
2026-06-10 17:41:31 +08:00
parent 44c6d9e9fd
commit 10bd2bd6a0
+22 -19
View File
@@ -300,7 +300,11 @@ def _create_alipay_order(order: PaymentOrder, db_configs: dict[str, str]) -> str
from alipay.aop.api.request.AlipayTradePrecreateRequest import ( from alipay.aop.api.request.AlipayTradePrecreateRequest import (
AlipayTradePrecreateRequest, AlipayTradePrecreateRequest,
) )
from alipay.aop.api.response.AlipayTradePrecreateResponse import (
AlipayTradePrecreateResponse,
)
# 构造业务参数
model = AlipayTradePrecreateModel() model = AlipayTradePrecreateModel()
model.out_trade_no = order.order_no model.out_trade_no = order.order_no
model.total_amount = f"{order.amount:.2f}" model.total_amount = f"{order.amount:.2f}"
@@ -313,21 +317,27 @@ def _create_alipay_order(order: PaymentOrder, db_configs: dict[str, str]) -> str
if body_parts: if body_parts:
model.body = " ".join(body_parts) model.body = " ".join(body_parts)
request = AlipayTradePrecreateRequest() # 构造请求
request.biz_model = model request = AlipayTradePrecreateRequest(biz_model=model)
response = client.execute(request) # 执行API调用
response_content = client.execute(request)
if not response_content:
logger.error(f"Alipay precreate failed: empty response, order_no={order.order_no}")
return None
# Some SDK versions return a string; parse it into a response object # 解析响应结果
from alipay.aop.api.response.AlipayTradePrecreateResponse import ( response = AlipayTradePrecreateResponse()
AlipayTradePrecreateResponse, response.parse_response_content(response_content)
)
if isinstance(response, str):
resp_obj = AlipayTradePrecreateResponse()
resp_obj.parse_response_content(response)
response = resp_obj
if not response.is_success(): if response.is_success():
qr_url = response.qr_code
logger.info(
f"Alipay precreate success: order_no={order.order_no}, "
f"qr_url={qr_url}"
)
return qr_url
else:
logger.error( logger.error(
f"Alipay precreate failed: code={response.code}, " f"Alipay precreate failed: code={response.code}, "
f"msg={response.msg}, sub_code={response.sub_code}, " f"msg={response.msg}, sub_code={response.sub_code}, "
@@ -335,13 +345,6 @@ def _create_alipay_order(order: PaymentOrder, db_configs: dict[str, str]) -> str
) )
return None return None
qr_url = response.qr_code
logger.info(
f"Alipay precreate success: order_no={order.order_no}, "
f"qr_url={qr_url}"
)
return qr_url
except Exception: except Exception:
logger.exception(f"Alipay precreate exception: order_no={order.order_no}") logger.exception(f"Alipay precreate exception: order_no={order.order_no}")
return None return None