From 10bd2bd6a0d058b20a8ebb1f144f44daaa486e18 Mon Sep 17 00:00:00 2001 From: wwwwwwwww <526125649@qq.com> Date: Wed, 10 Jun 2026 17:41:31 +0800 Subject: [PATCH] 1 --- video-gen-api/app/services/payment.py | 41 ++++++++++++++------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/video-gen-api/app/services/payment.py b/video-gen-api/app/services/payment.py index 3c99a6fb..95eb12ce 100644 --- a/video-gen-api/app/services/payment.py +++ b/video-gen-api/app/services/payment.py @@ -300,7 +300,11 @@ def _create_alipay_order(order: PaymentOrder, db_configs: dict[str, str]) -> str from alipay.aop.api.request.AlipayTradePrecreateRequest import ( AlipayTradePrecreateRequest, ) + from alipay.aop.api.response.AlipayTradePrecreateResponse import ( + AlipayTradePrecreateResponse, + ) + # 构造业务参数 model = AlipayTradePrecreateModel() model.out_trade_no = order.order_no 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: 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 ( - AlipayTradePrecreateResponse, - ) - if isinstance(response, str): - resp_obj = AlipayTradePrecreateResponse() - resp_obj.parse_response_content(response) - response = resp_obj + # 解析响应结果 + response = AlipayTradePrecreateResponse() + response.parse_response_content(response_content) - 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( f"Alipay precreate failed: code={response.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 - 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: logger.exception(f"Alipay precreate exception: order_no={order.order_no}") return None