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

Laravel Cashier Stripe支付成功后未自动生成本地订阅记录

Laravel Cashier 订阅不同步问题解决方案

你遇到的问题核心是Stripe事件未被Cashier正常接收处理,无需手动实现订阅同步逻辑,Cashier已内置相关处理能力,按以下步骤排查配置即可:

必查配置项

  • 确认Webhook路由未被CSRF拦截
    将/stripe/webhook路径添加到app/Http/Middleware/VerifyCsrfToken.php的$except数组中:

    protected $except = [
        '/stripe/webhook',
    ];
    

    Stripe的Webhook请求不会携带Laravel要求的CSRF令牌,不排除的话会直接返回419错误,事件处理中断。

  • 确认Webhook端点配置正确

    1. 公网环境需在Stripe后台添加Webhook端点,地址为https://你的站点域名/stripe/webhook,同时勾选以下必须监听的事件:
      • checkout.session.completed
      • customer.subscription.created
      • customer.subscription.updated
      • customer.subscription.deleted
      • invoice.paid
      • invoice.payment_failed
    2. 复制Stripe后台生成的Webhook签名密钥,填写到项目.env文件的STRIPE_WEBHOOK_SECRET字段,密钥不匹配时Cashier会直接丢弃所有事件。
    3. 本地开发环境需使用Stripe CLI转发事件到本地服务,执行命令:
      stripe listen --forward-to localhost:8000/stripe/webhook
      
  • 确认Cashier依赖的数据库表已生成
    执行Cashier自带的迁移命令生成订阅相关表:

    php artisan migrate
    

    确保数据库中存在subscriptions、subscription_items等Cashier专用表。

  • 确认User模型已引入Billable Trait
    检查app/Models/User.php中是否已引入Laravel\Cashier\Billable:

    use Laravel\Cashier\Billable;
    
    class User extends Authenticatable
    {
        use Billable;
    }
    

验证方法

配置完成后发起一笔测试支付,查看Stripe后台对应Webhook的事件日志,若状态为200则说明事件已被正常处理,此时本地数据库会自动生成订阅记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:24:03