Stripe Checkout 一次性付款网络钩子

问题描述 投票:0回答:1

我第一次制作一个使用 Stripe 付款的应用程序。经过研究,我将使用 Stripe Checkout 进行一次性付款(无订阅)、Firebase Cloud Functions 和 Firebase Realtime Database。希望将成本降至 0 或最低。这些 Stripe 付款用于充值用户在应用程序上的钱包余额。

由于我最初是一名前端开发人员,我担心会遗漏某些内容或产生误解,所以我想知道是否有人可以让我知道我是否走在正确的轨道上。

在我的应用程序上,我将有一个付款历史记录页面,用于记录每笔交易的任何状态。根据我的研究:

  1. 待定
  2. 成功
  3. 失败
  4. 取消
  5. 已过期
  6. 已退款

在 Firebase Cloud 上实施的 Webhooks:

checkout.sessions.completed - 这是用户完成提交付款详细信息的时间。当 webhook 被触发时,创建 实时数据库中状态为“待处理”的事务。

payment_intent.succeeded - 数据库中的交易状态将更改为“成功”。调整钱包余额。

payment_intent. payment_failed - 数据库中的交易状态将更改为“失败”

payment_intent.canceled - 数据库中的交易状态将更改为“已取消”

checkout.session.expired - 数据库中的事务状态将更改为“已过期”

已退款 webhook - 数据库中的交易状态将更改为“已退款”。调整钱包余额。

我的问题是:

  1. 如果用户有待处理的交易,是否最好阻止他们在该交易清除之前进行另一笔交易?
  2. “取消”和“过期”有什么区别?我读到如果付款意向在 7 天后过期,状态将是“已取消”而不是“已过期”。
  3. 这足以处理 Stripe Checkout 付款吗?我还缺少其他网络钩子或场景吗?

非常感谢!

stripe-payments webhooks payment
1个回答
0
投票

我建议查看本指南,了解如何在结账会话中履行订单:https://docs.stripe.com/checkout/fulfillment

您的系统应监听

checkout.session.*
事件以了解
payment_status
属性下的付款结果。

结帐会话允许多次付款尝试,直到付款成功。每次失败的付款尝试都会触发

payment_intent.payment_failed
事件。监听
checkout.session.*
事件应该足以确定结帐会话是否已成功或已过期(无法再进行付款)。听
payment_intent.*
应该没有必要。

有关退款的相关信息,可以收听此处列出的退款事件:https://docs.stripe.com/refunds#refund-events

© www.soinside.com 2019 - 2024. All rights reserved.