From de3ff211a6a23eeb6765403b0c5d594abcc48df7 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Thu, 9 Jul 2026 03:08:14 +0800 Subject: [PATCH] =?UTF-8?q?fixed:=20fucha=E6=8E=A5=E5=8F=A3=E7=A1=AC?= =?UTF-8?q?=E7=BC=96=E7=A0=81=E4=BA=86=E5=BE=AE=E4=BF=A1=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orders/views/payment.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/orders/views/payment.py b/orders/views/payment.py index 3e80fa4..e3b7e1b 100644 --- a/orders/views/payment.py +++ b/orders/views/payment.py @@ -514,6 +514,10 @@ class PaymentVerifyView(APIView): # ---------- 5. 如果状态为9,则主动查询微信支付状态 ---------- if dingdan.Status == 9: + # 支付宝订单:异步回调会更新状态,这里返回支付中 + if cache.get(f'alipay_pay_url_{dingdanid}'): + return Response({'code': 1, 'msg': '支付中', 'data': {'zhuangtai': 9}}) + # 使用分布式锁防止并发处理同一订单 lock_key = f"payment_verify_lock_{dingdanid}" if not cache.add(lock_key, "locked", timeout=10): @@ -1084,7 +1088,7 @@ class CreateOrderView(APIView): def generate_alipay_pay_params(self, dingdanid, jine, subject, club_id=None): """ 生成支付宝 wap.pay 跳转 URL,存入 cache 供中转页取用。 - 前端只需传订单号构造短 URL,避免 web-view src URL 过长被拒。 + 同时返回 pay_url 供前端直接加载(绕过中转页跳转限制)。 """ try: from jituan.services.alipay_pay import build_wap_pay_url @@ -1094,10 +1098,11 @@ class CreateOrderView(APIView): subject=subject, club_id=club_id, ) - # 存入 cache,30 分钟过期(与支付宝订单超时一致) + # 存入 cache,30 分钟过期(供中转页/查询接口判断支付方式) cache_key = f'alipay_pay_url_{dingdanid}' cache.set(cache_key, pay_url, 60 * 30) return { + 'pay_url': pay_url, 'pay_method': 'alipay', } except Exception as e: