我正在努力实现以下目标:设置间隔不一致的将来付款(例如,现在付款和在另外两个预设日期付款)。我有一个日期和金额对象,我正在为每个对象创建一个订阅,在进行第二次收费之前,我将取消这些对象。
const _payments = stripePayments.map(async (payment) => {
try {
const price = await stripe.prices.create({
unit_amount: payment.amount * 100,
currency: 'usd',
recurring: { interval: 'year' },
product: process.env.SCRIPE_PRODUCT
})
const subscription = {
customer: customerId,
items: [{ price: price.id }],
billing_cycle_anchor: payment.dueDate,
cancel_at: addYears(new Date(payment.dueDate), 1)
}
return await stripe.subscriptions.create(subscription)
}
catch (error) {
throw new Error('creating Stripe subscription failed ' + error)
}
})
我有两个问题:
1.有没有更好的办法?
1.在账单上,我看到订阅后就会收取一小笔费用。为什么会这样?有没有办法取消它?
1条答案
按热度按时间tzdcorbm1#
如果您要处理不一致的计费间隔,订阅并不适合,因为订阅旨在基于一致的计费间隔定期自动处理付款。利用订阅还会导致需要维护和清理更多对象。
您共享的代码将不仅仅用于处理将来的付款。在创建订阅期间设置
billing_cycle_anchor
时,生成的订阅将立即处理billing_cycle_anchor
日期之前订阅部分的按比例付款,然后在billing_cycle_anchor
日期处理另一次全价付款。(源代码)Stripe有一个流程,允许您收集付款方式,然后使用该付款方式在未来某个时间付款。您可以在here上查看完整的指南。
上述方法的缺点是,当您要在将来处理付款时,它要求您或您的系统请求创建/处理付款意向。如果您需要一种方法来计划这些付款在将来发生,则订阅计划是最佳选择,因为它们允许您计划订阅的创建。但是,订阅计划的使用可能会有点繁琐。并且仍然会导致订阅对象,您需要维护和清理这些对象以确保它们不会生成任何意外付款。由于这些原因,我建议使用上面链接的流程而不是订阅计划,但如果您决定使用订阅计划,下面是一些有用的资源。
关于你的第二个问题,需要更多的上下文来理解你指的是什么指控。