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

Laravel 5.8 Cashier Webhook报类名需为有效对象或字符串错误如何解决

Laravel 5.8 Cashier Stripe webhook报错解决方案

报错Class name must be a valid object or a string的核心原因是Cashier读取到的账单主体模型配置项cashier.model为空、格式无效,修改vendor源码属于硬编码绕过配置逻辑,不符合开发规范,正确修复步骤如下:

修复步骤

    1. 发布Cashier官方配置文件(如果未发布过)
      执行Artisan命令:
    php artisan vendor:publish --tag=cashier-config
    
    执行完成后会生成config/cashier.php配置文件。
    1. 验证配置文件的model项取值
      打开config/cashier.php,找到model配置项,确保取值为你的账单主体模型的完整类名,默认用User模型的示例如下:
    'model' => App\User::class,
    
    如果你修改过User模型的命名空间(比如放到了App\Models目录下),则对应改为App\Models\User::class即可。

    注意:如果你自行修改了该项,用env()辅助函数读取.env变量,比如写成'model' => env('CASHIER_MODEL', App\User::class),则需要检查.env文件中的CASHIER_MODEL取值是否为正确的类名字符串,不要加::class后缀:

    # 正确写法
    CASHIER_MODEL=App\User
    # 错误写法
    CASHIER_MODEL=App\User::class
    
    1. 重新生成配置缓存
      执行以下命令清除旧缓存、加载最新配置:
    php artisan config:clear
    php artisan cache:clear
    # 生产环境如果开启了配置缓存,需要重新生成
    php artisan config:cache
    
    1. 验证配置加载是否正常(可选)
      可以临时添加测试路由验证配置是否正确读取:
    Route::get('/test-cashier-config', function () {
        dd(config('cashier.model'));
    });
    
    访问该路由如果输出正确的类名字符串,说明配置加载正常,webhook即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:36:02