我们开始在Redsmin(我们的项目之一)上实施 Stripe,我认为我们可能遗漏了一些东西。下面是它的工作原理:
要使用我们的产品,用户必须选择一个计划(免费、s、m、xl、xxl...),然后输入其登录名/密码,然后就可以免费试用 30 天。当用户提交表单时,我们的服务器使用指定的计划调用 Stripe create_customer并且没有信用卡(因为我们希望提供 30 天免费且不需要信用卡)并且我们使用返回的
customer_id
和更新我们这边的用户模型subscription_id
。我们设置了一个 webhook 来接收条带事件,因此 30 天后我们的 webhook应该会收到一个
customer.subscription.updated
带有object.status == active
. 我对吗?但是,由于我们在注册时没有为用户指定关联卡,所以我们应该
customer.subscription.updated
在另一个事件之后很快收到object.status == unpaid
对吗?然后在我们这边,我们停用用户帐户并强制它进入我们的计划选择页面。从那时起,用户可以选择免费计划或我们的高级计划之一:
#Scenario 1如果用户选择免费计划,我们只需在我们这边重新激活其帐户,不做任何其他事情,因为我们将条带上的免费计划配置为 0 美元。我们的免费计划是否实施了正确的流程?有没有更好的方法?
#Scenario 2如果用户选择高级计划,我们会将他重定向到信用卡表格,然后将其发送到 Stripe,然后我们使用临时卡令牌更新 Stripe 客户帐户。我们接下来应该做什么?:
- 我们应该等待 stripe 向我们发送事件吗?如果有,是什么事件?
customer.subscription.updated
?charge.succeeded
? 那时的价值是object.status
多少? - 我们是否应该直接重新激活我们这边的用户帐户并等待来自 Stripe 的确认?如果是这样,我们应该等待的事件名称和数据是什么?
- 我们应该等待 stripe 向我们发送事件吗?如果有,是什么事件?