假设用户今天注册了年度订阅,明天取消:显然,我希望他能够使用我的应用程序一整年,因为他支付了整个计费周期。我想知道这一点,因为我想告诉他:“您的订阅已成功取消,但您可以在 2024 年 5 月 14 日之前使用此应用程序”。
在 Stripe 中,您可以将其
cancel_at_period_end
从 false 更改为 true,而不是立即取消订阅;订阅保持active
直到计费周期结束,然后才更改为canceled
。当用户取消时,我可以使用 customer.subscription.updated
webhook 来验证 cancel_at_period_end
已变为“真”并将用户的状态更改为 will_cancel
或其他东西。
我如何使用 Paypal 进行此操作?也许解决方法是,当用户取消订阅时,我实际上并没有取消它,只是暂停它,并将我的数据库中的用户订阅更改为
will_cancel
;然后,我将让 cron 作业检查订阅的下一次付款何时到期,如果这个日期早于今天,我可以通过 API 明确取消订阅,然后将我数据库中的用户订阅更改为canceled
.
这个解决方案会有什么缺点吗?有更好的选择吗?
您描述的情况既不特殊也不重要,您无需采取任何措施来具体解决。
对于所有订阅场景,为 webhook 事件 PAYMENT.SALE.COMPLETED 注册一个侦听器,并在收到事件时随时使用该事件更新您自己的记录在数据库中的有效日期。这就是您需要做的所有事情,包括初始付款和以后的每次付款。除了退款、争议或退单(可以手动处理)等付款例外情况外,没有其他任何后果的事件
如果它有助于协调,请在初始 createSubscription 中添加一个
custom_id
参数。这将在所有未来的订阅 webhook 事件中返回。