
本文详解 Laravel Spark 1.x 安装时因 laravel/cashier 版本不兼容导致的 Composer 依赖冲突问题,并提供安全、可落地的修复方案。
本文详解 laravel spark 1.x 安装时因 `laravel/cashier` 版本不兼容导致的 composer 依赖冲突问题,并提供安全、可落地的修复方案。
Laravel Spark 1.x 是一个面向 SaaS 应用的付费功能套件,其官方发行版本(如 laravel/spark-stripe ^1.0 和 laravel/spark-paddle ^1.0)严格锁定依赖于 Laravel Cashier v12.x。而你的 composer.json 中显式声明了 "laravel/cashier": "^13.8",这直接触发了 Composer 的依赖解析失败——因为 Spark 1.x 的代码与 Cashier 13 的 API 变更(如订阅模型重构、Webhook 签名验证逻辑升级等)不兼容。
✅ 正确解决方式(二选一)
方案一:降级 Cashier 至 v12(推荐用于存量 Cashier 13 项目迁移)
将 composer.json 中的 Cashier 版本约束改为兼容范围:
"require": {
"laravel/cashier": "^12.0"
}然后执行:
composer update laravel/cashier --with-all-dependencies composer require laravel/spark-stripe:^1.0
⚠️ 注意:Cashier v12 仅支持 Stripe v3+ 和 PHP 7.4+ / Laravel 8–9,确保你的 Stripe PHP SDK(stripe/stripe-php)版本 ≥ v7.100 以避免运行时异常。
方案二:移除显式 Cashier 声明(更干净,Spark 自动管理)
由于 Spark 包自身已声明 laravel/cashier:^12.0 为 require 依赖,你无需在根 composer.json 中重复引入。直接删除该行:
"require": {
"php": "^8.0.2",
"blade-ui-kit/blade-heroicons": "^1.2",
"guzzlehttp/guzzle": "^7.2",
- "laravel/cashier": "^13.8",
"laravel/framework": "^9.2",
// ... 其他依赖
}再运行:
composer remove laravel/cashier composer require laravel/spark-stripe:^1.0
Composer 将自动安装 Spark 所需的 Cashier v12.x 及其子依赖,彻底规避版本冲突。
? 关键注意事项
- Paddle 与 Stripe 不可共存:若你选择 laravel/spark-paddle,必须从 require 中移除 "laravel/spark-stripe": "^1.0",反之亦然。二者互斥,共存会导致服务提供者注册冲突。
- 不要滥用 --with-all-dependencies (-W):该选项强制升级/降级所有锁版本依赖,可能意外破坏其他组件(如 Sanctum 或 Breeze),仅在明确知晓影响时谨慎使用。
- Spark 1.x 已停止维护:Laravel 官方已于 2022 年底终止 Spark 1.x 支持。生产环境建议评估迁移到 Laravel Jetstream + Teams 或自建订阅系统,以获得长期安全更新与 Laravel 10+/11+ 兼容性。
通过上述任一方案,即可消除 Your requirements could not be resolved 错误,顺利完成 Spark 安装。核心原则是:尊重 Spark 1.x 的依赖契约,而非强行覆盖其底层支付抽象层(Cashier)的版本边界。










