Jay*_*ala 7 node.js stripe-payments
我正在使用 stripe 来实现支付功能。在付款功能方面,我分别有每月和每年两个订阅计划。在 Stripe 仪表板中,我创建了产品,并在其下创建了每月和每年的两个计划。根据名称,我分别将间隔设置为每月和每年。
我能够成功创建订阅。但是当我尝试更改我的订阅计划时,我收到此错误:货币和间隔字段必须在此订阅的所有计划中匹配。在间隔字段中发现不匹配。
错误说货币和间隔必须匹配。但我怎样才能让它们相同。对于月度计划,我设置了月度间隔,对于年度计划,我设置了年度间隔,我猜这是正确的。不知道我错在哪里。
这是我的代码:
const subscription = getSubscription(req.body.subscriptionId);
subscription.then((value) => {
id = value.id;
})
stripe.subscriptions.update(
req.body.subscriptionId,
{
items: [{
id: id,
plan: req.body.planId,
}]
},
function(err, subscription) {
if(err) {
console.log('error .... ', err);
return;
}
console.log('updated subscription... ', subscription);
});
async function getSubscription(subscriptionId) {
return await stripe.subscriptions.retrieve(subscriptionId);
}
Run Code Online (Sandbox Code Playgroud)
我从这个代码:https : //stripe.com/docs/billing/subscriptions/upgrading-downgrading
请帮帮我。
对于仍在寻求解决此问题的任何人,您必须在降级或升级计划时指定当前订阅项目 ID。
如果没有现有的项目 ID,当计费间隔不同(月 <-> 年)时会抛出错误。
const subscription = await stripe.subscriptions.retrieve('SUBSCRIPTION_ID');
stripe.subscriptions.update('SUBSCRIPTION_ID', {
cancel_at_period_end: false,
proration_behavior: 'create_prorations',
items: [{
id: subscription.items.data[0].id,
price: 'NEW_PRICE_ID',
}]
});
Run Code Online (Sandbox Code Playgroud)
下面这行很关键:
id: subscription.items.data[0].id,
Run Code Online (Sandbox Code Playgroud)
资料来源:条纹文档