【发布时间】:2020-03-07 18:13:02
【问题描述】:
假设客户访问我的在线商店并购买了对其现有订阅的升级。他们插入他们的信用卡详细信息并提交购买。支付失败。
在两种情况下,我还没有找到合适的解决方案。
场景 1
一些订阅更新是not charged within the same update function(例如,按月到按月计划),这意味着您必须先更新订阅,生成发票,然后手动付款。订阅更新和支付不再是原子的。这意味着即使付款失败,订阅现在也包含他们尚未支付的所需计划的详细信息。
我目前的解决方案是记录开始订阅的详细信息,并在付款失败时恢复它们。这在直觉上感觉是错误的,但它可以使订阅与用户实际支付的费用保持同步。
我有兴趣让 Stripe 成为我订阅的“真实来源”,因此让未付费的更改在不完整的状态下徘徊会变得很困难。
场景 2
上述策略在引入 SCA 后就崩溃了,因为现在我无法知道何时付款失败,直到另一个服务器上的 webhook 得到通知,并且它不再具有原始订阅详细信息。然后,订阅和发票将处于“过期”状态。我不想处于那种状态,因为购买是在网站购物车上进行的,所以它要么成功要么失败。
因此,我陷入了订阅不完整且付款不完整的情况,并且在下一次尝试更新订阅时(例如,用户输入有效的信用卡),我的服务器拒绝购买,因为它认为新的计划与当前计划相同。
所以我的主要问题是,有没有办法将订阅对象的更新推迟到付款完成?
或者有没有更好的方法来完全处理订阅更新?
我研究得越多,这似乎就越绝望。假设您有一个订阅此订阅的客户:
Plan: Pro
Interval: Yearly
Quantity: 5
Due: June 20th
Status: active
他们尝试购买数量为 10 的升级。该产品非常昂贵,因此我们希望在配置之前立即向他们收费,而不是等到下一个计费日,即 7 个月后。支付未通过 SCA 认证。现在客户有此订阅:
Plan: Pro
Interval: Yearly
Quantity: 10
Due: Nov 13 (now + 1 year)
Status: past_due
我们现在做什么?您无法恢复订阅,客户无需支付即可获得更高的计划,并且在 2020 年 11 月之前不会提示他们支付累积费用(我认为这就是到期日的运作方式)。
在更改我缺少的订阅之前,必须有一种支付计划的方式。
【问题讨论】:
标签: stripe-payments