【问题标题】:Get purchased product from PaymentIntent从 PaymentIntent 获取购买的产品
【发布时间】:2022-01-18 22:24:10
【问题描述】:

在我的应用程序中,我想列出条纹客户过去的购买记录。所以我正在查看相关的 API 对象,例如 PaymentIntentsSessionsCharges。但它们似乎都没有包含对ProductPrice 的任何引用,我需要列出购买的产品。

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

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

【问题讨论】:

  • 您是如何创建购买的? PaymentIntent,结帐会话,收费?传入的参数是什么?
  • 我正在使用条带结帐,所以我只是手动创建会话对象,我在其中传递客户和价格以及与结帐页面相关的一些其他参数。 PaymentIntent 和 Charge 然后由条带托管的结帐页面创建。我认为您可以向 PaymentIntent 添加描述,您可以在其中存储产品 ID 或类似的东西,但这似乎是我认为常见用例的黑客攻击。
  • 您始终可以将元数据附加到 Stripe 对象 stripe.com/docs/api/metadata 这就是许多公司将订单 ID 等内容从他们的系统关联到 Stripe 数据的方式。

标签: stripe-payments


【解决方案1】:

我对 Stripe API 文档[1] 进行了一些挖掘,并且在您引用的三个对象(PaymentIntentSessionCharges)中,我看到的唯一一个能够追溯一个产品是Session

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

因此,对于使用 Checkout Sessions 向您的客户收取的所有费用,您可以将它们全部列出,使用 customer 属性将每个 session 与您的应用程序中的客户相关联,遍历返回的数据,然后查询产品详细信息的 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

【讨论】:

  • 谢谢瑞恩!我想测试这个解决方案,但后来我注意到,您不能查询Sessions 并按Customer 过滤。 PaymentIntentCharge 都允许你这样做。所以我必须查询所有Sessions,然后在我的后端过滤Customer,这有点低效。我觉得奇怪的是似乎没有简单的方法来存档。
  • 是的,我也在寻找客户过滤器,但 Sessions 无法做到这一点。在这种情况下,我会使用自动分页功能 (stripe.com/docs/api/pagination/auto) 循环遍历所有会话并将相关产品分配给后端的客户。
猜你喜欢
  • 2021-03-17
  • 1970-01-01
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
相关资源
最近更新 更多