Stripe payments 使用条带恢复订阅(并对以前未支付的服务收费)
我有一个web服务,它为我的用户发布和托管某些信息。每个用户的编辑界面都独立于他们发布的信息。我正在使用条带订阅为它计费,但我很难想出一个可行的方法来处理未付订阅。以下是我想要实现的逻辑:Stripe payments 使用条带恢复订阅(并对以前未支付的服务收费),stripe-payments,credit-card,subscription,recurring-billing,Stripe Payments,Credit Card,Subscription,Recurring Billing,我有一个web服务,它为我的用户发布和托管某些信息。每个用户的编辑界面都独立于他们发布的信息。我正在使用条带订阅为它计费,但我很难想出一个可行的方法来处理未付订阅。以下是我想要实现的逻辑: 第一次计费失败后,我的应用程序应锁定用户的编辑界面;相反,它应该为他们提供一个页面,其中包含解决他们付款问题的选项。然而,他们发布的信息仍将被发布,因此延迟付款不会中断访问者的访问 在15天后的最后一次计费尝试失败后,我的应用程序也应该删除他们发布的信息。此时,用户的编辑界面被替换为一个允许用户使用新信用卡重
试用版
设置为立即
即可创建订阅
这是个棘手的问题。我如何确定用户的最后一张发票在取消订阅之前的未付时间?如何缩短新订阅的第一个计费周期?或者,我如何按比例计算客户最后一张发票的总金额,以代表我实际提供给他们的部分,以便将该金额添加到新发票中?(我知道我可以在开始新订阅之前创建一个发票项目来收取金额,所以至少这是可能的。)
最后,Stripe的“标记订阅未付”选项是否有助于解决这些问题?它看起来像是在不断地创建发票,但并不试图为它们收费;我不认为这就是我想要的。你完全可以通过Stripe的订阅来完成所有这些。正如您所提到的,前两个问题应该用Webhook解决。您将监听您端的
发票.付款失败
,以检测何时付款失败,并立即阻止您的UI,要求您的客户更新其卡的详细信息
要更新他们的卡详细信息,您可以使用,而不必设置数据金额
参数,这样它就不会向客户显示价格。以下是一个例子:
<form action="/charge" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_XXXX"
data-image="/square-image.png"
data-name="Demo Site"
data-description="Update Card Details"
data-panel-label="Update Card Details"
data-label="Update Card Details">
</script>
</form>
每次您的客户尝试更新其卡时,您都会使用并在卡
参数中传递新卡令牌。这将删除客户的默认卡,并将其替换为新卡。它还将尝试在“过期”状态下支付每个订阅的最新发票。在您的情况下,这意味着将尝试支付仍处于重试模式的最新发票。这不算作重试,可以看作是独立的。如果成功,您只需重新启动UI,否则您将继续要求客户更新其卡的详细信息
当您达到第四次失败付款时,您将获得一个customer.subscription.cancelled
,如果这是您在中的重试设置中设置的。通过检查事件上的request
键并确保其null
,可以检测到它是自动取消。在这种情况下,您将完全为您的客户阻止UI/帐户
在过去的15天里,如果我正确理解了您的流程,那么客户实际上无法使用您的应用程序,因为您部分锁定了UI。但是,如果您仍然希望他支付该金额,您应该在您的数据库中存储该客户在无法使用该订阅的15天内欠您X美元的信息
稍后,您的客户最终返回并希望重新启用其帐户。此时,您通知他,付款流程将从今天开始重新启动,您将向他收取他之前错过的额外15天的费用。要做到这一点,我将使用这将允许您添加一个额外的金额到第一张发票自动。您将遵循以下步骤:
试用期结束到“现在”
值,并将其与获得cus时的当前时间进行比较