使用 Stripe Checkout 防止重复订阅

nwe*_*hof 7 stripe-payments

考虑以下事件过程:

  • 用户在我的网站上选择多个订阅选项之一,然后单击“付款”按钮。
  • 他们被重定向到 Stripe Checkout 页面,但尚未完成付款。
  • 他们以某种方式设法返回到选择订阅的页面,同时保持 Stripe Checkout 页面打开。(我知道这有些人为,但技术上是可行的。)
  • 他们选择不同的订阅选项并再次单击“付款”。
  • 将创建第二个结帐会话,并打开另一个 Stripe Checkout 页面。
  • 现在他们在两个结帐页面上完成付款。

我怎样才能防止这种情况发生?有没有办法取消结帐会话?当我为订阅创建结帐会话时,我没有收到可以取消的付款意向。似乎也没有办法直接取消结账会话。

Jus*_*ael 9

我不知道有什么方法可以防止您所描述的情况,因为相关客户明确决定为两个不同的订阅向您支付两次费用。

也就是说,如果您的用例要求客户只有一个订阅,您可以在端添加执行以下操作的逻辑:

  1. 设置 Webhook 端点来侦听customer.subscription.created事件
  2. 每当创建新订阅时,都会列出属于客户的订阅
  3. 如果客户有多个有效订阅,请取消最新的订阅并退还相关付款。您可能还想向客户发送一封电子邮件,让他们知道发生了什么。