From e2b95edeb81e4e2317ca5197f708907794f2e0f4 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Thu, 9 Jul 2026 02:53:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20URL=20=E8=BF=87=E9=95=BF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orders/views/payment.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/orders/views/payment.py b/orders/views/payment.py index fe7bdd1..3e80fa4 100644 --- a/orders/views/payment.py +++ b/orders/views/payment.py @@ -461,6 +461,11 @@ def alipay_pay_page(request): pay_url = request.GET.get('pay_url', '') out_trade_no = request.GET.get('out_trade_no', '') + # 优先从 cache 取 pay_url(前端传订单号,避免 URL 过长) + if not pay_url and out_trade_no: + cache_key = f'alipay_pay_url_{out_trade_no}' + pay_url = cache.get(cache_key) or '' + if pay_url: # 中转模式:自动跳转到支付宝 return render(request, 'alipay/pay.html', {'pay_url': pay_url}) @@ -1078,8 +1083,8 @@ class CreateOrderView(APIView): def generate_alipay_pay_params(self, dingdanid, jine, subject, club_id=None): """ - 生成支付宝 wap.pay 跳转 URL。 - 返回前端用于 web-view 加载的支付参数。 + 生成支付宝 wap.pay 跳转 URL,存入 cache 供中转页取用。 + 前端只需传订单号构造短 URL,避免 web-view src URL 过长被拒。 """ try: from jituan.services.alipay_pay import build_wap_pay_url @@ -1089,8 +1094,10 @@ class CreateOrderView(APIView): subject=subject, club_id=club_id, ) + # 存入 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: