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

Laravel Cashier集成Stripe订阅报错:指定价格不存在的排查与解决

Laravel Cashier + Stripe 订阅报错“No such price”的排查与解决

问题场景

使用Laravel Cashier对接Stripe实现订阅功能时,已在Stripe控制台创建产品和对应价格,但调用订阅接口时始终返回错误:

No such price: 'price_1Qkgr4Az8wYmHt8vp5njDBoF'

涉及代码如下:

Route::get('/subscribe', function (Request $request) {
    return $request->user()
        ->newSubscription('prod_Rdyo9nUDWFaX3h', 'price_1Qkgr4Az8wYmHt8vp5njDBoF')
        ->checkout([
            'success_url' => route('subscribe-success'),
            'cancel_url' => route('subscribe-cancel'),
        ])->create($request->paymentMethodId);
})->name('subscribe');

核心问题与修复

1. newSubscription 参数传递错误

newSubscription 方法的第一个参数是订阅的内部别名(用于区分用户的不同订阅,比如main、premium),而非产品ID。你错误地将产品ID传入第一个参数,导致Cashier无法正确识别目标价格。

修正后的代码:

Route::get('/subscribe', function (Request $request) {
    return $request->user()
        ->newSubscription('main', 'price_1Qkgr4Az8wYmHt8vp5njDBoF') // 第一个参数改为订阅别名
        ->checkout([
            'success_url' => route('subscribe-success'),
            'cancel_url' => route('subscribe-cancel'),
        ])->create($request->paymentMethodId);
})->name('subscribe');

其他排查方向

如果修正参数后仍报错,检查以下几点:

  • 环境密钥不匹配:确认.env文件中的STRIPE_KEY和STRIPE_SECRET对应的环境(测试/生产),与你创建价格的Stripe控制台环境一致。测试环境的价格无法通过生产密钥访问,反之亦然。
  • 价格状态异常:登录Stripe控制台找到目标价格,确认其状态为活跃(Active),归档(Archived)状态的价格无法被API调用。
  • 价格ID复制错误:直接从Stripe控制台价格详情页复制ID,避免手动输入或复制时带入空格、换行符等无效字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:07:05