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

Laravel Cashier集成Stripe报错No such plan: Monthly 求助

解决Laravel Cashier集成Stripe新Product/Price系统的「No such plan」错误

嘿,我来帮你搞定这个问题!我之前也踩过类似的坑,核心原因是你搞混了Stripe新旧套餐系统的调用方式——现在Stripe用的是Product + Price模型,而Laravel Cashier需要的是Stripe生成的Price ID,不是你自定义的套餐名称(比如'Monthly')。

问题根源

Stripe在新版API里废弃了旧的独立Plan概念,改成了「Product(产品)」下挂多个「Price(定价方案,比如月付、年付)」的结构。你代码里传入的'Monthly'是你给套餐起的名称,但Cashier根本识别不了,它要的是Stripe后台自动生成的Price ID(格式是price_xxxxxx)。

一步步解决

1. 拿到正确的Price ID

  • 登录你的Stripe仪表盘,找到你创建的Product
  • 展开该Product下的「定价方案」列表,复制对应月付套餐的Price ID(比如price_1KbXyzABC123)
  • 注意:每个不同的计费周期(月付、年付)对应一个独立的Price ID,别拿成Product ID哦

2. 修正你的订阅代码

把代码里的'Monthly'替换成刚才复制的Price ID,示例如下:

public function store(Request $request) { 
    $token = $request->stripeToken; 
    // 把第二个参数换成你的Stripe Price ID
    auth()->user()->newSubscription('main', 'price_1KbXyzABC123')->create($token); 
    return 'Done'; 
}

这里的'main'是订阅的标识名称(你可以改成'membership'之类的自定义名称),第二个参数必须是Stripe的Price ID。

3. 额外排查点

  • 更新Cashier版本:旧版本的Cashier可能不兼容Stripe新的Product/Price模型,运行composer update laravel/cashier确保是最新版
  • 验证Stripe密钥:检查.env文件里的STRIPE_KEY和STRIPE_SECRET是否正确,且对应你创建产品的环境(测试/生产)
  • 确认Token有效性:确保前端的Stripe Elements正确生成了stripeToken,可以在Stripe仪表盘的「测试数据」里查看token是否合法

4. 验证结果

提交请求后,先去Stripe仪表盘查看是否生成了订阅记录,再检查Laravel的subscriptions表是否有新增数据。如果还是有问题,可以开启Cashier的日志:在config/cashier.php里设置'logging' => true,查看详细的请求日志来定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:41:39