You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django电商网站集成Stripe支付时遭遇404页面错误求助

Django电商支付流程404错误排查与解决

问题概述

使用Django搭建电商网站,集成Stripe支付功能时,填写客户信息后点击结账按钮触发404页面未找到错误。

可能原因及解决方法

1. Stripe回调URL解析失败

支付完成或取消时,Stripe会回调你配置的success_url和cancel_url,若这两个URL无法被Django正确解析,会触发404。

  • 验证URL反向解析:在Django Shell中执行以下命令,确认能生成正确路径:
    from django.urls import reverse
    print(reverse('payment:completed'))  # 预期输出:/payment/completed/
    print(reverse('payment:canceled'))   # 预期输出:/payment/canceled/
    
  • 检查路由配置:
    • 确认payment模块的urls.py已设置app_name = 'payment'
    • 根URLconf中已正确包含path('payment/', include('payment.urls', namespace='payment'))
  • 确保完整URL:request.build_absolute_uri()需生成包含域名的完整外部URL,Stripe仅接受完整URL作为回调地址。

2. 会话中订单ID丢失/无效

payment_process视图依赖request.session.get('order_id')获取订单,若会话中无有效order_id或对应Order对象不存在,get_object_or_404会直接抛出404。

  • 检查订单创建逻辑:在订单生成的视图中,确认已将订单ID存入会话:
    request.session['order_id'] = order.id
    
  • 调试会话状态:在payment_process视图中添加打印语句,确认order_id为有效数值:
    print("Order ID from session:", order_id)
    
  • 处理会话过期:若用户会话过期导致order_id丢失,可在视图中增加判断,重定向至订单列表或引导用户重新创建订单。

3. 表单提交路径错误

若payment/process.html中的表单提交路径配置错误,点击结账按钮后会访问不存在的URL,触发404。

  • 检查表单代码:确保表单的action属性指向正确的路由:
    <form method="post" action="{% url 'payment:process' %}">
        {% csrf_token %}
        <!-- 客户信息表单字段 -->
        <button type="submit">完成结账</button>
    </form>
    

4. Stripe会话创建异常(隐性原因)

若Stripe API调用失败但未抛出异常,可能返回无效的session.url,导致重定向到错误页面(虽大概率是5xx错误,但需排除)。

  • 添加异常捕获:在创建Stripe会话的代码块中增加异常处理,便于排查问题:
    try:
        session = stripe.checkout.Session.create(**session_data)
        return redirect(session.url, code=303)
    except stripe.error.StripeError as e:
        print("Stripe API Error:", str(e))
        return render(request, 'payment/process.html', {'order': order, 'error': str(e)})
    

5. URL路由冲突(低概率)

虽根URLconf中payment/路由优先级高于ecommerce/,但仍需确认ecommerce模块的路由中无通配符路径(如path('<str:any>/', ...))提前匹配支付相关URL。


内容的提问来源于stack exchange,提问作者Bibek Rawat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 20:15:28