From b411c818c77e406e0915e986bfca4deff3c6fad8 Mon Sep 17 00:00:00 2001 From: wwwwwwwww <526125649@qq.com> Date: Wed, 10 Jun 2026 17:28:41 +0800 Subject: [PATCH] 1 --- video-gen-api/app/services/payment.py | 30 ++++++++++++++------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/video-gen-api/app/services/payment.py b/video-gen-api/app/services/payment.py index e2104b75..274aa0e2 100644 --- a/video-gen-api/app/services/payment.py +++ b/video-gen-api/app/services/payment.py @@ -157,7 +157,7 @@ def _get_alipay_client(app_id: str, private_key: str, public_key: str, gateway: config.sign_type = "RSA2" config.charset = "utf-8" try: - _alipay_client = DefaultAlipayClient(config) + _alipay_client = DefaultAlipayClient(config, logger) _alipay_client_app_id = app_id except Exception: logger.exception("Failed to initialize Alipay client") @@ -321,21 +321,16 @@ def _create_alipay_order(order: PaymentOrder, db_configs: dict[str, str]) -> str response = client.execute(request) + # Some SDK versions return a string; parse it into a response object + from alipay.aop.api.response.AlipayTradePrecreateResponse import ( + AlipayTradePrecreateResponse, + ) if isinstance(response, str): - logger.error( - f"Alipay precreate returned string instead of object: " - f"order_no={order.order_no}, response={response[:500]}" - ) - return None + resp_obj = AlipayTradePrecreateResponse() + resp_obj.parse_response_content(response) + response = resp_obj - if response.code == "10000": - 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: + if not response.is_success(): logger.error( f"Alipay precreate failed: code={response.code}, " f"msg={response.msg}, sub_code={response.sub_code}, " @@ -343,6 +338,13 @@ 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