gpt4 book ai didi

php - Stripe - 如何在不附加到用户的情况下创建 PaymentMethod?

转载 作者:行者123 更新时间:2023-12-03 02:32:03 26 4
gpt4 key购买 nike

我们的用户可以输入卡来支付我们的服务费用。他/她可以选择保存或不保存卡以供重复使用。

当用户没有保存卡时,我们将创建一个 PaymentIntent 传递

        [
'amount' => floatval($this->cart->total_gross) * 100,
'currency' => 'EUR',
'payment_method' => $this->pm,
'off_session' => true,
'capture_method' => 'manual',
'confirm' => true,
];

这是因为这是一笔付款的预授权,将在 2-3 天内捕获。

使用此配置我们收到以下错误

Stripe\Exception\MissingParameterException - 400 - The provided PaymentMethod is already attached to another object. You cannot reuse PaymentMethods without attaching them to a Customer object first.

需要明确的是:

  • 用户输入一张新卡
  • 选择不保存以供将来使用
  • stripe.js 自动处理 3d 安全卡身份验证
  • 返回的 pm_... 连同金额和不保存卡的指令一起发送到服务器(因此我们不会创建 Stripe 客户)
  • 使用上面的配置,我们调用 \Stripe\PaymentIntent::create 方法
  • 我们得到了上面的错误

这个错误是什么意思?为什么它说 PM 已经附加到另一个对象?哪个?属于哪一类?

我三次检查了我的代码,这是我们在收到来自前端的 pm 后进行的唯一 api 调用。

之前,前端只需使用 setupIntent 通过官方 stripe.js 调用来授权卡。因此,从 stripe.js 返回的 pm 被发送到我们的服务器,而不对其进行任何操作。而我们的服务器只是简单地调用了create方法,每次都会得到这个错误。

请求您帮助诊断和理解。

We're using latest official stripe-php versions

提前致谢

最佳答案

我终于收到了关于这个问题的官方回复。

简单地说:我们无法保存一张用于 of_session 付款的卡,然后在稍后使用该付款方式获取预授权金额

因此,我们修改了流程

用户选择或保存卡,我们通知用户我们必须保存该卡才能重复使用完成支付流程。

关于php - Stripe - 如何在不附加到用户的情况下创建 PaymentMethod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58084575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com