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

Laravel Cashier Stripe Webhooks无法触发:返回302未执行对应方法

排查Laravel Cashier Stripe Webhook返回302的问题

以下是几个核心排查方向:

  • CSRF保护拦截
    Laravel默认会对所有POST请求做CSRF验证,但Stripe的Webhook请求是外部发起的,不会携带CSRF token。需要在app/Http/Middleware/VerifyCsrfToken.php的$except数组中添加Webhook路由:

    protected $except = [
        'stripe/webhooks',
    ];
    
  • 路由请求方法错误
    检查路由定义,确保Webhook路由使用POST方法:

    // 手动定义路由
    Route::post('stripe/webhooks', [StripeWebhookController::class, 'handleWebhook']);
    // 或使用Cashier路由宏
    Route::cashierWebhooks('stripe/webhooks');
    
  • 控制器方法命名或继承错误
    确认StripeWebhookController正确继承自Laravel\Cashier\Http\Controllers\WebhookController,且处理方法命名严格遵循规则:handle + 驼峰化的事件名,比如customer.subscription.updated对应handleCustomerSubscriptionUpdated,注意拼写和大小写完全匹配。

  • 不必要的中间件拦截
    检查Webhook路由是否被应用了auth这类需要登录的中间件,外部请求会被重定向到登录页返回302。确保路由排除无关中间件:

    Route::post('stripe/webhooks', [StripeWebhookController::class, 'handleWebhook'])
        ->withoutMiddleware(['auth', 'verified']);
    
  • 签名密钥配置错误
    确认.env文件中的STRIPE_WEBHOOK_SECRET和Stripe后台设置的Webhook签名密钥完全一致。签名验证失败时,部分场景下会触发中间件的错误重定向。

  • 本地环境HTTPS强制重定向
    如果本地配置了强制HTTPS(比如通过中间件或服务器配置),localhost的请求可能被重定向。可以尝试关闭本地HTTPS强制,或使用ngrok等工具暴露HTTPS服务测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:30:50