Stripe 客户门户网站在更新付款方式后立即对“逾期”发票强制重试收费
Posted
技术标签:
【中文标题】Stripe 客户门户网站在更新付款方式后立即对“逾期”发票强制重试收费【英文标题】:Stripe Customer Portal force retry charge on "past due" invoice immediately after updating payment method 【发布时间】:2022-01-20 10:40:31 【问题描述】:一位客户注册了试用订阅。试用结束后,客户的卡被扣款。如果充值失败,则在接下来的 3 周内条带重试 4 次充值(默认设置)。在成功收费之前,客户的订阅处于“过期”状态。我要求客户更新他们的卡详细信息。
问题在于,当他们通过客户门户网站更新付款方式时,Stripe 不会立即对更新后的卡收取费用以支付“逾期”发票。它遵循默认“重试”的时间表。
我找不到客户门户的任何设置或 API 配置,这些设置或 API 配置会在卡详细信息更新后立即提示向客户的卡收费。
我接受了允许客户无需试用即可注册新订阅的选项,而不是更新他们的卡详细信息。在这种情况下,我面临的问题是,如果客户确实在重试的 3 周内创建了新订阅,那么之前的“逾期”发票仍会从他的卡中扣除。在这种情况下,我必须手动取消他们之前的订阅。
有人可以建议处理这个问题的最佳方法吗?
更新
根据乔纳森的建议,我是这样处理的:
const customerId = event.data.object.customer;
const subscriptions = await stripe.subscriptions.list(
customer: customerId,
status: "past_due",
limit: 1,
);
if (subscriptions.data)
// retrieve and pay open invoice for overdue subscription
const invoices = await stripe.invoices.list(
customer: customerId,
subscription: subscriptions.data[0].id,
status: "open",
limit: 1,
);
if (invoices.data)
await stripe.invoices.pay(invoices.data[0].id);
【问题讨论】:
【参考方案1】:在客户更新其付款详细信息后,无法立即强制对未付发票进行付款。您需要通过订阅payment_method.attached
event 自己处理这个问题。然后在您的 webhook 处理程序中,您可以实现 pay the invoice 所需的逻辑。
【讨论】:
感谢@jonathan 的澄清,我用我处理事件的方法更新了我的问题。以上是关于Stripe 客户门户网站在更新付款方式后立即对“逾期”发票强制重试收费的主要内容,如果未能解决你的问题,请参考以下文章