diff --git a/video-gen-api/app/services/payment.py b/video-gen-api/app/services/payment.py index 79737a1b..a2966afc 100644 --- a/video-gen-api/app/services/payment.py +++ b/video-gen-api/app/services/payment.py @@ -435,7 +435,7 @@ def _create_wechat_order(order: PaymentOrder, db_configs: dict[str, str]) -> str try: # 调用微信支付 Native 下单接口 - result = client.pay( + code, result = client.pay( description=f"充值订单 {order.order_no}", out_trade_no=order.order_no, amount={ @@ -448,14 +448,14 @@ def _create_wechat_order(order: PaymentOrder, db_configs: dict[str, str]) -> str } ) - if result.get('code_url'): + if code == 200 and isinstance(result, dict) and result.get('code_url'): # 注意:微信返回的 code_url 可能需要进一步处理成二维码图片地址 logger.info(f"WeChat order created successfully: order_no={order.order_no}") return result.get('code_url') else: logger.error( f"WeChat pay failed: order_no={order.order_no}, " - f"result={result}" + f"code={code}, result={result}" ) return None except Exception as e: @@ -486,12 +486,12 @@ async def _close_wechat_order(db: AsyncSession, order: PaymentOrder, db_configs: return True try: - result = client.close(out_trade_no=order.order_no) - if result: + code, result = client.close(out_trade_no=order.order_no) + if code == 200: logger.info(f"WeChat order closed: order_no={order.order_no}") return True else: - logger.error(f"WeChat close failed: order_no={order.order_no}") + logger.error(f"WeChat close failed: order_no={order.order_no}, code={code}, result={result}") return False except Exception as e: logger.exception(f"WeChat close exception: order_no={order.order_no}") @@ -521,8 +521,8 @@ async def _query_wechat_order(db: AsyncSession, order: PaymentOrder, db_configs: return {"trade_state": "SUCCESS"} try: - result = client.query(out_trade_no=order.order_no) - if result.get('trade_state'): + code, result = client.query(out_trade_no=order.order_no) + if code == 200 and isinstance(result, dict) and result.get('trade_state'): logger.info( f"WeChat query succeeded: order_no={order.order_no}, " f"trade_state={result.get('trade_state')}" @@ -531,7 +531,7 @@ async def _query_wechat_order(db: AsyncSession, order: PaymentOrder, db_configs: else: logger.error( f"WeChat query failed: order_no={order.order_no}, " - f"result={result}" + f"code={code}, result={result}" ) return None except Exception as e: @@ -567,7 +567,7 @@ async def _refund_wechat_order( try: out_refund_no = f"{order.order_no}_refund_{int(datetime.now().timestamp())}" - result = client.refund( + code, result = client.refund( out_trade_no=order.order_no, out_refund_no=out_refund_no, amount={ @@ -578,17 +578,17 @@ async def _refund_wechat_order( reason=refund_reason ) - if result.get('status') == 'SUCCESS': + if code == 200 and isinstance(result, dict) and result.get('status') == 'SUCCESS': logger.info(f"WeChat refund succeeded: order_no={order.order_no}") return {"success": True, "refund_id": result.get('refund_id')} else: logger.error( f"WeChat refund failed: order_no={order.order_no}, " - f"result={result}" + f"code={code}, result={result}" ) return { "success": False, - "message": f"微信退款失败: {result.get('code', '')}" + "message": f"微信退款失败: code={code}, {result.get('code', '') if isinstance(result, dict) else ''}" } except Exception as e: logger.exception(f"WeChat refund exception: order_no={order.order_no}")