从 PaymentIntent 获取购买的产品

Posted

技术标签:

【中文标题】从 PaymentIntent 获取购买的产品【英文标题】:Get purchased product from 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 数据的方式。 【参考方案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]。这将允许您将任何您希望的付款对象链接到产品。


    https://stripe.com/docs/api https://stripe.com/docs/api/checkout/sessions/object#checkout_session_object-line_items https://stripe.com/docs/api/checkout/sessions/object#checkout_session_object-line_items-data-price-product https://stripe.com/docs/expand https://stripe.com/docs/rate-limits https://stripe.com/docs/api/metadata

【讨论】:

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

以上是关于从 PaymentIntent 获取购买的产品的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 Stripes PaymentIntent 更改订单金额吗?

无法在应用购买中从 iTunes Connect 获取产品标识符?

如何从 Apple 服务器获取应用内购买列表

Stripe PaymentIntent 键未定义 |无法从控制器传递 ClientSecret 密钥 | ASP.NET MVC

Jquery Click 事件在第二次点击时触发,但不是第一次

Paypal : 如何在取消和成功购买产品的情况下获取用户的电子邮件 ID 和地址详细信息?