使用 Stripe 付款创建复杂订单

Posted

技术标签:

【中文标题】使用 Stripe 付款创建复杂订单【英文标题】:Create complex order with Stripe payment 【发布时间】:2022-01-03 13:45:08 【问题描述】:

我正在尝试允许我的用户使用 Stripe 在我的网站上为他们的预订(活动)付费。我的大部分处理工作正常,但我不知道如何将我从 Stripe 获得的响应连接到我的数据库,这表明付款已成功,以便它知道预订所需的所有详细信息。

在“购买 X 件产品”的标准情况下,我知道我可以在服务器上创建包含这些详细信息的订单。然后我可以将该订单 ID 放入 Stripe 请求中,并在付款成功时使用该 ID 来完成该订单。

但就我而言,我必须接受比这更多的信息。每个预订都可以附加多个与会者 - 每个与会者都有一个姓名并加载有关他们的更多信息,这些信息需要在创建预订时使用。

是否只有这样才能将所有与会者信息添加到 Stripe 请求中,以便在付款成功时使用?还是有别的办法?

如果有助于回答这个问题,我在后端使用 Django。

【问题讨论】:

【参考方案1】:

实现这一目标的主要方法是:

    将与订单相关的信息与相应的付款意图 ID(或结帐会话 ID)一起存储在您自己的数据库中。 收听webhook事件payment_intent.succeeded(或checkout.session.completed),了解何时支付成功。 在 webhook 事件中,使用 event.data.object.id 获取付款 ID,并使用它查看您的数据库以检索履行订单所需的信息。

您可以在Stripe documentation here 中了解有关如何履行订单的更多信息。

另一种选择是使用您的付款意图(或结帐会话)的metadata 字段直接存储与订单相关的所有信息。但我不建议这样做,因为它有一些限制(键的数量、值的长度等)。

【讨论】:

是的,这就是我一直看到的做法。因此,如果您的订单仅包含一个商品列表,其中包含用户购买的每件商品的数量,那很简单。但是为了让我将所有这些存储在我的订单中,我将不得不复制大量的东西 - 实习生信息,他们给出的问题的答案等等。我不能仅仅创造这些东西 - 我会有将它们全部复制并将它们附加到订单中,以便在 webhook 恢复时可以使用它们。对我来说这似乎是个坏主意。

以上是关于使用 Stripe 付款创建复杂订单的主要内容,如果未能解决你的问题,请参考以下文章

Stripe - 支付订单错误:无法向没有活动卡的客户收费

条带订单 API 和产品 API

Stripe-向客户付款

Stripe 取消 url 不会取消付款,因此 Stripe 不会发送取消付款意图

使用 Stripe Webhook 发送获取客户详细信息以使用 Stripe 进行定期付款

Stripe 管理员付款收到 Wordpress 电子邮件内容