Stripe Payment Intent:更新并确认支付金额的变化

Posted

技术标签:

【中文标题】Stripe Payment Intent:更新并确认支付金额的变化【英文标题】:Stripe Payment Intent: update and confirm for change in payment amount 【发布时间】:2021-06-12 06:31:49 【问题描述】:

我正在为运行在“余额”系统上的在线购物网站实施条带,用户在该系统中输入他们想存入交易余额的金额并提交信用卡信息以进行存款。

我不知道如何避免在付款确认时进行两次连续的 api 调用以进行条带化:一次使用 html 表单中的存款当前值更新支付金额,另一次到confirm payment intent .

以下是我理解的限制条件:

    Stripe 需要 creation of a Payment Intent 才能使用其信用卡表单填充 iframe。 为了获得简化的存款体验,我希望我的网站上的<input> 在用户输入存款金额的地方处于活动状态,并且与条纹 iframe 同时并以相同的模式显示李> 条纹Confirm Payment Intent api 似乎不允许您在确认时发送新的付款“金额”。当我从客户端发送一个新的金额参数时:stripe.confirmCardPayment(clientSecret, payment_method:card:stripeCardElement, amount:depositAmount),我收到一个错误: code: "parameter_unknown", doc_url: "https://stripe.com/docs/error-codes/parameter-unknown", message: "Received unknown parameter: amount", param: "amount", payment_intent: Object id: "pi_1IV21CGYTBSx8jHSRsJ1bLls", object: "payment_intent", amount: 2000, … , type: "invalid_request_error"。请注意,“金额”参数适用于更新支付 api 调用(参见下面的 #4) Payment Intent Update api 要求您在更新完成后随后确认支付意图,并将响应发送回客户端。来自条带文档:“根据您更新的属性,您可能需要再次确认 PaymentIntent。例如,更新 payment_method 将始终要求您再次确认 PaymentIntent。如果您希望同时更新和确认,我们建议改为通过确认 API 更新属性。”

如果是这样,它需要我的付款确认工作流程涉及到 stripe api 的两次同步行程:第一次更新金额,第二次确认付款。有什么办法可以避免吗?

【问题讨论】:

【参考方案1】:

amount 不是confirmCardPayment 的可接受参数。您必须在创建 PaymentIntent 服务器端时指定 amount。正如您所说,它也不能通过confirmPaymentIntent 进行更新。但是,根据您的流程,您可以通过更新PaymentIntent 来更新amount,在confirm 之前:https://stripe.com/docs/api/payment_intents/update#update_payment_intent-amount。您可以通过 webhook 同步或异步执行此操作。

【讨论】:

以上是关于Stripe Payment Intent:更新并确认支付金额的变化的主要内容,如果未能解决你的问题,请参考以下文章

将 Stripe 平台客户克隆到关联账户客户时出现问题 - 没有这样的 payment_intent: 'pi_abc...zyx'

Stripe sca 订阅 php 并自动收费

Stripe - 当我使用零计划更新订阅时,PaymentIntent 为空

在 Azure 上部署 Stripe 支付网关

Code=50 “No such payment_intent” 当确认条带的支付意图时

Stripe 取消 url 不会取消付款,因此 Stripe 不会发送取消付款意图