Laravel Cashier使用Paddle订阅报错:无法找到请求的产品
解决Laravel Paddle newSubscription()报错"Unable to find requested product"
针对你遇到的问题,核心是对newSubscription()方法的参数理解有误,以下是具体排查和解决步骤:
参数定义澄清
newSubscription()的两个参数并非对应Paddle的产品名/ID和价格ID,正确定义是:
- 第一个参数:自定义的订阅内部标识(比如'pro_plan'、'basic_sub'),仅用于你的系统内区分订阅类型,和Paddle后台的产品信息无关。
- 第二个参数:必须是Paddle后台的价格ID(格式为pri_*),这个价格ID需要属于一个已激活的产品,且与你的API环境匹配。
错误排查点
- 参数传反/误用:如果你把Paddle的产品ID(pro_*)传入了第二个参数,会直接触发这个错误。确认第二个参数是对应产品下的有效价格ID,而非产品ID。
- 环境不匹配:检查
.env文件中的PADDLE_ENV配置(sandbox或production),确保和你获取价格ID的Paddle后台环境一致(沙盒后台的价格ID不能用于生产环境,反之亦然)。 - 价格状态异常:登录Paddle后台查看该
pri_*价格是否处于激活状态,是否关联了正确的产品,有没有被禁用或删除。 - 第一个参数错误:不要将Paddle的产品名称/ID放到第一个参数中,这个参数是你自己定义的内部标识,只要系统内统一即可。
正确代码示例
// 自定义订阅标识为"premium",第二个参数传入Paddle的价格ID $user->newSubscription('premium', 'pri_xxxxxxxxxxxx')->create();
内容的提问来源于stack exchange,提问作者deekep
相关产品推荐
相关产品推荐

