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

Django部署后Stripe Webhook返回301错误,本地测试正常

问题描述

在Django REST framework应用中实现了Stripe Webhook处理支付事件,本地测试时Webhook可正常接收并处理事件,但部署后Stripe返回301错误,控制台显示Webhook调用无响应。Webhook URL可正常访问,但服务器日志无报错,说明post函数未执行。

相关代码

Webhook URL配置

urlpatterns = [
    path('stripe-webhook', stripe_webhook.as_view()),
]

Webhook处理函数

class stripe_webhook(APIView):
    def post(self, request):
        #verify webhook request
        print(request.body)
        payload = request.body
        sig_header = request.headers['STRIPE_SIGNATURE']
        event = None

        try:
            event = stripe.Webhook.construct_event(
                payload, sig_header, endpoint_secret
            )
        except ValueError as e:
            # Invalid payload
            raise e
        except stripe.error.SignatureVerificationError as e:
            # Invalid signature
            raise e

        # Handle the event
        if event['type'] == 'payment_intent.succeeded':
            payment_intent = event['data']['object']
            print(payment_intent)
        else:
            print('Unhandled event type {}'.format(event['type']))

        return HttpResponse(status=200)
排查与修复方案
  • 核心原因:URL重定向触发301错误
    Django默认开启APPEND_SLASH(值为True),当请求URL末尾无斜杠时,会返回301重定向到带斜杠的版本。但Stripe发送Webhook请求时不会自动跟随重定向,导致原请求失败,post函数根本没被执行。

  • 修复步骤

    1. 修改URL配置,添加末尾斜杠
      把URL配置里的path('stripe-webhook', ...)改成带斜杠的形式:
      urlpatterns = [
          path('stripe-webhook/', stripe_webhook.as_view()),
      ]
      
    2. 更新Stripe控制台的Webhook地址
      登录Stripe后台,将Webhook的URL更新为带末尾斜杠的版本,比如https://你的域名.com/stripe-webhook/。
    3. 验证修复效果
      触发一次支付事件,查看Stripe控制台是否显示Webhook调用成功,同时检查服务器日志是否有请求体和事件相关的打印内容。
  • 额外提醒

    • 如果不想改URL的斜杠,可以在项目settings.py里设置APPEND_SLASH = False,但这会影响整个项目的URL重定向逻辑,不建议这么做。
    • 确认部署后的服务器防火墙/安全组没有拦截Stripe的IP地址,保证请求能正常到达。

内容的提问来源于stack exchange,提问作者Guo Yang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:05:18