如何更新 Stripe 订阅数量? (Node.js)
How to update Stripe subscription quantity? (Node.js)
我正在尝试更新已创建的 Stripe 订阅的数量。但我不断收到此错误:
"error": {
"message": "Invalid array",
"param": "items",
"type": "invalid_request_error"
}
我首先检索 Stripe 订阅,更新值,然后发布更新后的值。这是代码:
const subscription = await stripe.subscriptions.retrieve(
stripe_sub_id
);
subscription.items.data[0].quantity = newCount;
stripe.subscriptions.update(
stripe_sub_id,
{items: { data: subscription.items.data }}
)
我做错了什么?如何更新 items.data 数组中“数量”的值?
由于 Stripe API 的工作方式,您不能真的只改变 items.data
并直接传递它(检索调用中返回的项目格式与POST 时的参数,它们是不同的)。
因此您实际上需要编写一些更多的自定义 code/business 逻辑来明确地为您想要的更改创建 params 对象。可能是这样的。
const subscription = await stripe.subscriptions.retrieve(
stripe_sub_id
);
let IdOfPriceToUpdate = "price_xxx";
let newQuantity = 5;
let updatedItemParams = subscription.items.data.
filter(item => item.price != IdOfPriceToUpdate). // find what to change
map(item => {return { id:item.id, quantity:newQuantity}}) // change it
await stripe.subscriptions.update(
stripe_sub_id,
{items: updatedItemParams}
)
https://stripe.com/docs/billing/subscriptions/upgrade-downgrade#changing
我正在尝试更新已创建的 Stripe 订阅的数量。但我不断收到此错误:
"error": {
"message": "Invalid array",
"param": "items",
"type": "invalid_request_error"
}
我首先检索 Stripe 订阅,更新值,然后发布更新后的值。这是代码:
const subscription = await stripe.subscriptions.retrieve(
stripe_sub_id
);
subscription.items.data[0].quantity = newCount;
stripe.subscriptions.update(
stripe_sub_id,
{items: { data: subscription.items.data }}
)
我做错了什么?如何更新 items.data 数组中“数量”的值?
由于 Stripe API 的工作方式,您不能真的只改变 items.data
并直接传递它(检索调用中返回的项目格式与POST 时的参数,它们是不同的)。
因此您实际上需要编写一些更多的自定义 code/business 逻辑来明确地为您想要的更改创建 params 对象。可能是这样的。
const subscription = await stripe.subscriptions.retrieve(
stripe_sub_id
);
let IdOfPriceToUpdate = "price_xxx";
let newQuantity = 5;
let updatedItemParams = subscription.items.data.
filter(item => item.price != IdOfPriceToUpdate). // find what to change
map(item => {return { id:item.id, quantity:newQuantity}}) // change it
await stripe.subscriptions.update(
stripe_sub_id,
{items: updatedItemParams}
)
https://stripe.com/docs/billing/subscriptions/upgrade-downgrade#changing