从PaymentIntent获取购买的产品

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

在我的应用程序中,我想列出 Stripe 客户过去的购买情况。所以我正在查看相关的 API 对象,例如

PaymentIntents
Sessions
Charges
。但它们似乎都不包含任何对
Product
Price
的引用,我需要列出购买的产品。

Subscriptions
包含该订阅中包含的项目列表,所以我期待
PaymentIntents
也有类似的东西。

有人知道如何存档我过去的购买清单吗?谢谢!

stripe-payments
3个回答
3
投票

我对 Stripe API 文档 [1] 进行了一些挖掘,在您引用的三个对象(

PaymentIntent
Session
Charges
)中,我看到唯一一个能够追溯到产品是
Session

Session 对象有一个

line_items
属性[2],可以一直遵循到
line_items.data.price.product
[3]。 要访问此功能,您需要在调用中包含
expand=["data.line_items"]
参数以列出结帐会话。 您可以在此处阅读有关扩展 API 响应的更多信息[4]

因此,对于使用 Checkout Sessions 向客户收取的所有费用,您可以将它们全部列出,使用

customer
属性将每个会话与应用程序中的客户关联,遍历返回的数据,然后查询 API了解产品详情。 如果您有很多客户和产品,这些 API 调用会快速增加,因此我会将这些数据存储在您的后端,以避免达到速率限制[5]。

或者,您可以将产品 ID(Stripe 或您的本地版本)保存为上述任何列出的 Stripe 支付对象的元数据[6]。 这将允许您将任何您想要的付款对象链接到产品。


  1. https://stripe.com/docs/api
  2. https://stripe.com/docs/api/checkout/sessions/object#checkout_session_object-line_items
  3. https://stripe.com/docs/api/checkout/sessions/object#checkout_session_object-line_items-data-price-product
  4. https://stripe.com/docs/expand
  5. https://stripe.com/docs/rate-limits
  6. https://stripe.com/docs/api/metadata

0
投票

我通过将产品信息(例如 id、名称、描述)添加到 Stripe.Checkout.SessionCreateParams 中的 payment_intent_data.metadata 来解决 https://docs.stripe.com/api/checkout/sessions/create

当您使用 stripe.charges.list 检索费用时,您会在元数据字段中获取这些信息。


-1
投票

我有同样的问题,我找到了一种方法来检索与特定 PaymentIntent 相关的产品。

您需要在结帐流程完成时获取链接到 PaymentIntent 的会话。 我会给你我用来做这个的代码(PHP)。

        \Stripe\Stripe::setApiKey(STRIPE_API_SECRET);
        // Find the Session for that PaymentIntent
        $sessions = \Stripe\Checkout\Session::all([
            'payment_intent' => "pi_xxxxxxxxxx",
            'expand' => ['data.line_items'],
        ]);

然后您将拥有一个包含链接产品的密钥 line_items

享受

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