python - 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 件商品的限制(那是另外一回事,对于您在一张发票中计费的经常性商品的数量)。创建发票项目只是为特定金额添加一个动态行项目,并且没有限制。
推荐阅读
- python-3.x - 在 Python 中使用输入参数模拟嵌套函数
- python - 如何在 python 函数中添加可选的分隔符?
- c++ - 错误 C2679:二进制“>”:未找到采用“int”类型右侧操作数的运算符(或没有可接受的转换)
- python - 将每个字母与下一个字母进行比较
- c# - 选择项目时如何阻止组合框将 selectedItem 添加到 itemSource 列表?
- reactjs - 无法在 React App 中注册 Service Worker
- java - 使用嵌套 for 循环显示 GUI 标签
- python - 如何使用 TextBlob 创建带双引号的 JSON 文件
- javascript - 使用 selection.filter 获得多项选择的最佳方式
- graphql - 创建类似于 GraphQLList 的自己的类包装器