pez*_*pez 14 webhooks stripe-payments
背景:
我已经在 React 应用程序中实现了Stripe Checkout ,以及成功侦听事件的Webhook 。
这些是成功结帐后 Webhook 听到的事件:
checkout.session.completed
charge.succeeded
payment_method.attached
customer.created
customer.updated
invoice.created
invoice.finalized
customer.subscription.created
invoice.updated
customer.subscription.updated
invoice.paid
invoice.payment_succeeded
payment_intent.succeeded
payment_intent.created
Run Code Online (Sandbox Code Playgroud)
我正在尝试做的事情:
客户成功创建订阅后,我需要将值保存到数据库中。此值有助于启用付费功能,因此我必须确保 Webhook 捕获所有成功的事件。
问题:
我是否可以始终仅依赖这些 Webhook 事件之一来指示成功?如果不是,哪些是最值得聆听的?
我认为对于我的用例来说最重要的事件可能是checkout.session.completed、charge.succeeded和payment_intent.succeeded,但我不太确定这些事件有何不同,以及其中一些事件是否/何时可能不会出现。
文档表明:
目前,Stripe 上有三种接受付款的方式:
- 条纹结帐
- 收费API
- 支付意向API
和:
checkout.session.completed:结账会话成功完成时发生。charge.succeeded:充电成功时出现。payment_intent.succeeded:当 PaymentIntent 成功完成付款时发生。
所以我的猜测是checkout.session.completed, 、charge.succeeded、 和中的每一个payment_intent.succeeded都表示成功,而这三个都返回的原因是它们对应于当前在 Stripe 上接受付款的三种方式。
如果是这种情况,我可以可靠地监听仅checkout.session.completed指示成功吗?
其他信息:
stripe listen --forward-to localhost:4242/myWebHook成功结帐会话后的输出:
(evt_为简单起见,替换为实际值)
2022-05-08 --> checkout.session.completed [evt_123456]
2022-05-08 --> charge.succeeded [evt_123456]
2022-05-08 --> payment_method.attached [evt_123456]
2022-05-08 --> customer.created [evt_123456]
2022-05-08 --> customer.updated [evt_123456]
2022-05-08 --> invoice.created [evt_123456]
2022-05-08 --> invoice.finalized [evt_123456]
2022-05-08 --> customer.subscription.created [evt_123456]
2022-05-08 --> invoice.updated [evt_123456]
2022-05-08 --> customer.subscription.updated [evt_123456]
2022-05-08 --> invoice.paid [evt_123456]
2022-05-08 <-- [200] POST http://localhost:4242/myWebHook [evt_123456]
2022-05-08 <-- [200] POST http://localhost:4242/myWebHook [evt_123456]
2022-05-08 <-- [200] POST http://localhost:4242/myWebHook [evt_123456]
2022-05-08 <-- [200] POST http://localhost:4242/myWebHook [evt_123456]
2022-05-08 <-- [200] POST http://localhost:4242/myWebHook [evt_123456]
2022-05-08 <-- [200] POST http://localhost:4242/myWebHook [evt_123456]
2022-05-08 --> invoice.payment_succeeded [evt_123456]
2022-05-08 <-- [200] POST http://localhost:4242/myWebHook [evt_123456]
2022-05-08 <-- [200] POST http://localhost:4242/myWebHook [evt_123456]
2022-05-08 <-- [200] POST http://localhost:4242/myWebHook [evt_123456]
2022-05-08 <-- [200] POST http://localhost:4242/myWebHook [evt_123456]
2022-05-08 <-- [200] POST http://localhost:4242/myWebHook [evt_123456]
2022-05-08 <-- [200] POST http://localhost:4242/myWebHook [evt_123456]
2022-05-08 --> payment_intent.succeeded [evt_123456]
2022-05-08 <-- [200] POST http://localhost:3000/myWebHook [evt_123456]
2022-05-08 --> payment_intent.created [evt_123456]
2022-05-08 <-- [200] POST http://localhost:3000/myWebHook [evt_123456]
Run Code Online (Sandbox Code Playgroud)
ale*_*lex 21
大多数用户通常侦听成功订阅创建的事件是:
checkout.session.completed, 或者invoice.paid并检查billing_reason以确定创建发票的原因:https://stripe.com/docs/api/invoices/object#invoice_object-billing_reason没有单一的正确答案,因为您想要监听哪个事件取决于多种因素,例如
checkout.session.completed,如果您仅接受卡付款(无异步付款方式),那么是的,您可以在checkout.session.completed客户成功创建订阅后将值保存到数据库中。但是,如果您也接受异步付款方式,您可能需要侦听并处理此处列出的其他事件:https://stripe.com/docs/ payments/checkout/fulfill-orders#delayed-notificationinvoice.paid。不使用charge.succeededor是有原因的payment_intent.succeeded:
我建议阅读https://stripe.com/docs/billing/subscriptions/overview以更好地了解订阅的工作原理。
| 归档时间: |
|
| 查看次数: |
5635 次 |
| 最近记录: |