
当在 Laravel 中调用 Omnipay::create('YooKassa') 时抛出 Class '\Omnipay\YooKassa\Gateway' not found 错误,通常源于 Composer 自动加载未正确注册或缓存未更新,需清理缓存并重新安装依赖。
当在 laravel 中调用 `omnipay::create('yookassa')` 时抛出 `class '\omnipay\yookassa\gateway' not found` 错误,通常源于 composer 自动加载未正确注册或缓存未更新,需清理缓存并重新安装依赖。
该错误表明 PHP 在运行时无法解析 OmnipayYooKassaGateway 类,尽管相关包已声明在 composer.json 中。根本原因往往不是包未安装,而是自动加载映射(autoload map)未同步更新——这在混合使用多个 Omnipay 扩展(如 omnipay/yookassa、igor-tv/omnipay-yookassa)或手动修改 vendor 目录后尤为常见。
✅ 正确解决步骤如下:
-
清除 Laravel 应用缓存与配置缓存
运行以下命令确保 Artisan 不加载过期的配置和类映射:php artisan config:clear php artisan cache:clear php artisan optimize:clear # Laravel ≤ 9.x;Laravel 10+ 可用 `php artisan clear-compiled`
-
重新生成 Composer 自动加载映射
即使 composer.json 已包含 "omnipay/yookassa": "*",也必须执行:composer install --no-dev # 生产环境推荐 # 或 composer update omnipay/yookassa # 精准更新该包(避免影响其他依赖)
⚠️ 注意:请勿手动将库复制到 vendor/omnipay/yookassa —— Composer 必须通过 composer install/update 安装,才能正确写入 vendor/autoload_psr4.php 映射 OmnipayYooKassa 命名空间。
-
验证命名空间与包兼容性
当前主流维护的 YooKassa Omnipay 驱动是 igor-tv/omnipay-yookassa(v4.x),其网关类路径为 IgorTvOmnipayYooKassaGateway,并非 OmnipayYooKassaGateway。因此,请确认:- 若使用 igor-tv/omnipay-yookassa,应注册为 'YooKassa'(驱动名由该包注册),但底层类位于 IgorTvOmnipayYooKassaGateway;
- omnipay/yookassa 官方包已归档停更(见 GitHub),不建议继续使用;
- 删除冲突包:从 composer.json 中移除已废弃的 "omnipay/yookassa": "*" 和 "hiqdev/omnipay-yandex-kassa"(Yandex Kassa 与 YooKassa 无关),仅保留:
"igor-tv/omnipay-yookassa": "^4.0", "yoomoney/yookassa-sdk-php": "^2.4"
-
最终测试代码示例
确保初始化逻辑正确:use OmnipayOmnipay; $gateway = Omnipay::create('YooKassa'); // ✅ 由 igor-tv 包自动注册 $gateway->setShopId('your_shop_id'); $gateway->setSecretKey('your_secret_key'); // 测试连接(可选) $response = $gateway->purchase([ 'amount' => '100.00', 'currency' => 'RUB', 'returnUrl' => 'https://example.com/return', 'description' => 'Test payment' ])->send(); if ($response->isRedirect()) { $response->redirect(); }
? 总结:该问题本质是自动加载失效 + 包源混淆所致。坚持“Composer 管理依赖、不手动复制、先清缓存再重装”三原则,即可稳定解决。如仍失败,请检查 vendor/composer/autoload_psr4.php 是否包含 IgorTv\Omnipay\YooKassa\ 对应路径,并确认 Laravel 版本与 igor-tv/omnipay-yookassa v4 的兼容性(支持 Laravel 8–10)。


















