小编caz*_*ort的帖子

使用 Stripe API,如何从 payment_intent.succeeded Webhook 获取创建 payment_intent 对象的结账会话的 session_id

我正在开发和测试一个用 PHP 编写的 Stripe 集成,它运行得很好。我可以创建会话,重定向到结账表单,当付款完成时,它会向我的 webhhook 脚本发送一个事件,该脚本成功处理有关付款的信息。

当我创建会话时,我将在我的网站上填写的表单的数据存储在数据库中,当付款完成时,我将信息存储在不同的表中,这很棒。

我遇到的问题是我不知道如何将有关成功付款的信息与生成它的会话链接起来。

连接这些数据对我来说至关重要,因为我想跟踪哪些会话实际上导致了成功付款,以便我可以分析用户界面的流程并跟踪转化率并分析导致放弃结账会话的因素。

在某些情况下,很容易将这些事情联系起来。例如,如果在给定时间范围内仅生成与给定电子邮件相关的一个会话和一次成功付款,我可以将它们链接起来。问题是我希望能够处理一个人创建多个会话并放弃它们的(可能常见的)场景。在这种情况下,我无法将付款链接到与电子邮件关联的最新会话,因为单个客户可能会创建两个会话,但在第一个较早创建的会话上完成付款。

我不知道如何从返回到我的 webhook 的 payment_intent 对象访问 session_id。我对如何解决这个问题的一些想法包括:

  • 监听我的 webhook 脚本中发生的其他事件,这可能允许我链接这两个记录。
  • 将元数据传递到会话,例如唯一生成的 ID,然后从 payment_intent 对象访问相同的元数据。然而,我无法通过阅读 Stripe 文档弄清楚元数据是如何工作的,即使元数据从会话传递到 payment_intent 对象(文档没有明确说明这一点或解释它,并且 session_id 没有传递的事实让我想知道元数据是否会被传递)。我不想这样做,因为它需要在生成会话之前生成唯一 ID 的额外步骤,这将需要我做更多的工作,并且还会使我的代码更加复杂,并涉及更多的数据库调用和更多潜在的步骤可能会出错(当前我正在生成会话,然后存储信息以响应会话的成功创建),但如果确实没有更好的选择,我可以容忍它。

我想在这里遵循“最佳实践”,但我不清楚 Stripe 打算如何让人们链接或访问数据,或者这是否可能是他们的疏忽。

如果你给我示例代码,如果可能的话,我更愿意在 PHP 中看到它,但你根本不需要向我展示任何代码;只需给我一个关于如何实现这一目标的抽象或一般想法就足够了,我可以自己想出编码细节。

php checkout stripe-payments

8
推荐指数
2
解决办法
6834
查看次数

标签 统计

checkout ×1

php ×1

stripe-payments ×1