1
This commit is contained in:
@@ -435,7 +435,7 @@ def _create_wechat_order(order: PaymentOrder, db_configs: dict[str, str]) -> str
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
# 调用微信支付 Native 下单接口
|
# 调用微信支付 Native 下单接口
|
||||||
result = client.pay(
|
code, result = client.pay(
|
||||||
description=f"充值订单 {order.order_no}",
|
description=f"充值订单 {order.order_no}",
|
||||||
out_trade_no=order.order_no,
|
out_trade_no=order.order_no,
|
||||||
amount={
|
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 可能需要进一步处理成二维码图片地址
|
# 注意:微信返回的 code_url 可能需要进一步处理成二维码图片地址
|
||||||
logger.info(f"WeChat order created successfully: order_no={order.order_no}")
|
logger.info(f"WeChat order created successfully: order_no={order.order_no}")
|
||||||
return result.get('code_url')
|
return result.get('code_url')
|
||||||
else:
|
else:
|
||||||
logger.error(
|
logger.error(
|
||||||
f"WeChat pay failed: order_no={order.order_no}, "
|
f"WeChat pay failed: order_no={order.order_no}, "
|
||||||
f"result={result}"
|
f"code={code}, result={result}"
|
||||||
)
|
)
|
||||||
return None
|
return None
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -486,12 +486,12 @@ async def _close_wechat_order(db: AsyncSession, order: PaymentOrder, db_configs:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
try:
|
try:
|
||||||
result = client.close(out_trade_no=order.order_no)
|
code, result = client.close(out_trade_no=order.order_no)
|
||||||
if result:
|
if code == 200:
|
||||||
logger.info(f"WeChat order closed: order_no={order.order_no}")
|
logger.info(f"WeChat order closed: order_no={order.order_no}")
|
||||||
return True
|
return True
|
||||||
else:
|
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
|
return False
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.exception(f"WeChat close exception: order_no={order.order_no}")
|
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"}
|
return {"trade_state": "SUCCESS"}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
result = client.query(out_trade_no=order.order_no)
|
code, result = client.query(out_trade_no=order.order_no)
|
||||||
if result.get('trade_state'):
|
if code == 200 and isinstance(result, dict) and result.get('trade_state'):
|
||||||
logger.info(
|
logger.info(
|
||||||
f"WeChat query succeeded: order_no={order.order_no}, "
|
f"WeChat query succeeded: order_no={order.order_no}, "
|
||||||
f"trade_state={result.get('trade_state')}"
|
f"trade_state={result.get('trade_state')}"
|
||||||
@@ -531,7 +531,7 @@ async def _query_wechat_order(db: AsyncSession, order: PaymentOrder, db_configs:
|
|||||||
else:
|
else:
|
||||||
logger.error(
|
logger.error(
|
||||||
f"WeChat query failed: order_no={order.order_no}, "
|
f"WeChat query failed: order_no={order.order_no}, "
|
||||||
f"result={result}"
|
f"code={code}, result={result}"
|
||||||
)
|
)
|
||||||
return None
|
return None
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -567,7 +567,7 @@ async def _refund_wechat_order(
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
out_refund_no = f"{order.order_no}_refund_{int(datetime.now().timestamp())}"
|
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_trade_no=order.order_no,
|
||||||
out_refund_no=out_refund_no,
|
out_refund_no=out_refund_no,
|
||||||
amount={
|
amount={
|
||||||
@@ -578,17 +578,17 @@ async def _refund_wechat_order(
|
|||||||
reason=refund_reason
|
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}")
|
logger.info(f"WeChat refund succeeded: order_no={order.order_no}")
|
||||||
return {"success": True, "refund_id": result.get('refund_id')}
|
return {"success": True, "refund_id": result.get('refund_id')}
|
||||||
else:
|
else:
|
||||||
logger.error(
|
logger.error(
|
||||||
f"WeChat refund failed: order_no={order.order_no}, "
|
f"WeChat refund failed: order_no={order.order_no}, "
|
||||||
f"result={result}"
|
f"code={code}, result={result}"
|
||||||
)
|
)
|
||||||
return {
|
return {
|
||||||
"success": False,
|
"success": False,
|
||||||
"message": f"微信退款失败: {result.get('code', '')}"
|
"message": f"微信退款失败: code={code}, {result.get('code', '') if isinstance(result, dict) else ''}"
|
||||||
}
|
}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.exception(f"WeChat refund exception: order_no={order.order_no}")
|
logger.exception(f"WeChat refund exception: order_no={order.order_no}")
|
||||||
|
|||||||
Reference in New Issue
Block a user