【发布时间】:2021-08-25 19:44:26
【问题描述】:
我见过this similar question,但它没有回答所提出的问题。
我不明白如何管理重复订阅。
我做了一个测试,在Stripe Checkout 测试付款成功后触发了以下事件:
charge.succeededcheckout.session.completedpayment_method.attachedinvoice.createdcustomer.subscription.createdinvoice.updatedcustomer.subscription.updatedinvoice.finalizedinvoice.paid
我的问题是checkout.session.completed 和invoice.paid 都被解雇了。我了解以下情况可以完成会话
- 失败
- 取消
- 开始试用
- 成功启动
Stripe 文档说this:
要监控的最少事件类型:
EVENT NAMEDESCRIPTIONcheckout.session.completedSent when a customer clicks the Pay or Subscribe button in Checkout, informing you of a new purchase. invoice.paidSent each billing interval when a payment succeeds. invoice.payment_failedSent each billing interval if there is an issue with your customer’s payment method.
在代码部分:
对于
checkout.session.completed:# 您应该提供订阅并将客户 ID 保存到您的数据库中。
对于
invoice.paid:# 在继续付款时继续提供订阅。
然后我认为肯定有一种方法可以确定checkout.session.completed 和invoice.paid 会相互关联,但问题是checkout.session.completed 不包含任何Invoice id 和@987654349 @ 不包含创建它的 CheckoutSession 的 ID。
如何只为用户提供 1 个月的订阅,而不是 2 个月? Stripe 甚至会跟踪订阅的结束情况吗?
因为在tracking section here,它说:
- ...
- 您的网站收到 invoice.paid 事件。
- 您的 Webhook 端点会找到刚刚为其付款的客户。
- 您的 Webhook 端点将数据库中客户的 current_period_end 时间戳更新为未来的适当日期(加上一两天的余地)。
因此,此页面完全忽略了 checkout.session.completed 端点,仅依赖于 invoice.paid,据推测它可能仅在会话完成数小时后到达。 (我找不到这个链接。)
【问题讨论】:
标签: stripe-payments