修复了主动点单能力

This commit is contained in:
2026-07-10 15:50:43 +08:00
parent dcdcb7559e
commit 182f18da91
2 changed files with 49 additions and 22 deletions

View File

@@ -1096,16 +1096,28 @@ def confirm_member_recharge_paid(dingdan_id, yonghuid):
if order.zhuangtai != MEMBER_PENDING_STATUS:
raise MemberRechargeError(f'订单状态异常: {order.zhuangtai}', 'status_error')
# 支付宝订单:异步回调会更新状态,轮询时只看本地状态,未支付则提示稍后重试
# 主动查单确认支付状态
from django.core.cache import cache
if cache.get(f'alipay_pay_url_{dingdan_id}') is not None:
raise MemberRechargeError('支付宝支付结果尚未同步,请稍后再试', 'not_paid')
club_id = getattr(order, 'club_id', None)
is_alipay = cache.get(f'alipay_pay_url_{dingdan_id}') is not None
trade_state, _ = query_wechat_v2_trade_state(
dingdan_id, getattr(order, 'club_id', None),
)
if trade_state != 'SUCCESS':
raise MemberRechargeError('微信侧尚未支付成功,请稍后再试', 'not_paid')
if is_alipay:
# 支付宝订单主动查单alipay.trade.queryTRADE_SUCCESS/FINISHED 则触发履约
from jituan.services.alipay_pay import query_alipay_trade
trade_status = query_alipay_trade(dingdan_id, club_id)
if trade_status not in ('TRADE_SUCCESS', 'TRADE_FINISHED'):
raise MemberRechargeError('支付宝支付结果尚未同步,请稍后再试', 'not_paid')
else:
# 微信订单:主动查单
trade_state, _ = query_wechat_v2_trade_state(dingdan_id, club_id)
if trade_state != 'SUCCESS':
# 兜底cache 标记可能已过期30分钟尝试查支付宝确认
from jituan.services.alipay_pay import query_alipay_trade
alipay_status = query_alipay_trade(dingdan_id, club_id)
if alipay_status in ('TRADE_SUCCESS', 'TRADE_FINISHED'):
logger.info('cache 过期但支付宝查单成功 dingdan=%s', dingdan_id)
else:
raise MemberRechargeError('微信侧尚未支付成功,请稍后再试', 'not_paid')
total_fee_yuan = Decimal(str(order.jine))
result = fulfill_member_recharge(