Stripe:将来自一个客户的多笔交易批量合并为一次费用并优化小额支付

问题描述

我的用例如下,用户必须在我的应用中一件一件地购买商品,并且在一天结束时我会记录之前进行的所有交易的付款。

问题是 Stripe 对每笔交易收取 2.9% + 30 美分的费用,我想对其进行优化。

如此处 https://support.stripe.com/questions/batch-multiple-transactions-from-one-customer-into-a-single-charge 和此处 Batching Transactions in Stripe 所写,似乎可以将来自一位客户的交易分批为单笔费用。

我的问题是实现它的最佳方法是什么?我需要确认每笔交易,以便我可以锁定金额以便稍后获取一个用户也可以为每笔交易使用不同的信用卡(据我所知,如果卡不同,则无法批量交易)。我尝试创建一个 PaymentIntent 并在每次交易后更新它(同一卡同一用户),但出现此错误

无法更新此 PaymentIntent 的金额,因为它的状态为 requires_capture。您只能使用以下状态之一更新 PaymentIntent 的金额:requires_payment_method、requires_confirmation、requires_action。

因此,由于 PaymentIntent 流似乎不能解决我的问题,因此另一种选择是创建订阅。但我真的不明白如何在没有 recurring 选项的情况下将其作为单次收费,而且似乎最多只能有 20 个项目(我必须使用价格和产品 API 创建) https://stripe.com/docs/api/subscriptions/create

先谢谢你!

解决方法

我尝试创建一个 PaymentIntent 并在每次交易后更新它(同一卡同一用户),但出现此错误:

那是因为您在向客户收费后正在更新它(您必须确认 PaymentIntent - 无论当前金额是多少,都会向附加的付款方式收费)。授权收费后,除了创建新的 PaymentIntent(这是一项新的收费和新的处理费)之外,您无法再做任何事情。

我需要确认每笔交易,以便我可以锁定金额以便稍后提取

这在 Stripe 上是不可能的,如果您“确认”(授权)客户卡上的费用,则会产生处理费。因此,另一种选择是您只需“虚拟地”存储金额,然后进行一次大授权,这就是链接所描述的内容。

不过,您的想法很好,只需更新全天的 PaymentIntent 金额即可。在您对批量付款中要收费的所有交易进行计数后感到满意后,请调用确认 API 来授权该总金额的收费。

对于订阅案例,没有 20 个项目的限制(对于您在单张发票中计费的重复项目的数量,这是另外一回事)。创建发票项目只是添加一个特定金额的动态行项目,并且没有限制。

,

感谢@karllekko 为我指明了正确的方向

最后,我设法使用 Setup Intents API 与 Payment Intents API 和 Payment Methods 配对,以实现强大的自定义 Stripe 支付体验。