Stripe API删除产品因存在用户创建价格报错的问题咨询
核心原因
报错的本质是两个规则没满足:
- Stripe 不支持永久删除 Price 对象,把
active参数设为false仅能将价格归档,不会移除资源关联关系。 - 删除 Product 的前置校验要求:产品关联的所有用户创建的价格都必须处于归档状态,只要存在1个
active=true的关联价格,就会返回你看到的报错。你操作后仍报错,基本是漏处理了关联价格,或者请求参数传错导致价格实际没被归档。
全API操作步骤(无需登录Dashboard)
- 第一步:拉取目标产品下的全量关联价格,不要只处理已知的默认价格,避免遗漏测试时创建的其他关联价格
// 拉取产品下所有价格,价格数量超过100条时需要做分页处理 const priceList = await stripe.prices.list({ product: "待删除的产品ID", limit: 100 }, { stripeAccount: "目标资源所属的Connect子账号ID" // 操作子账号资源时必传,操作主账号可省略 })
- 第二步:遍历所有价格,逐个将未归档的价格设为
active=false
for (const price of priceList.data) { if (price.active) { await stripe.prices.update(price.id, { active: false }, { stripeAccount: "目标资源所属的Connect子账号ID" // 和上一步的账号参数保持一致 }) } }
- 第三步:所有价格归档完成后,调用产品删除接口即可
await stripe.products.del("待删除的产品ID", { stripeAccount: "目标资源所属的Connect子账号ID" })
常见踩坑点
- 不要只处理
default_price对应的价格:创建产品后如果做过价格新增、测试调用,很可能存在其他关联价格,漏改任意一个都会触发报错。 - 操作Connect子账号资源时,所有价格查询、价格更新、产品删除请求都必须携带
stripeAccount参数,否则请求会落到主账号空间,子账号下的资源状态根本没被修改,会一直返回报错。 - 批量归档价格后如果立刻调用删除接口偶发报错,可以等待1-2秒重试,Stripe后端状态同步存在极短的延迟。
内容的提问来源于stack exchange,提问作者Metidji Sid Ahmed
相关产品推荐
相关产品推荐

