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

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

当用户不保存卡时,我们正在创建一个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-提供的PaymentMethod已附加到另一个对象。您必须先将它们附加到Customer对象,才能重用PaymentMethods。

要清楚:

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

此错误是什么意思?为什么说PM已连接到另一个对象?哪一个?哪一种?

我对代码进行了三遍检查,这是从前端收到pm后我们进行的唯一api调用。

以前,前端只需使用setupIntent通过官方stripe.js调用来授权卡。因此,将从stripe.js返回的pm发送到我们的服务器,而无需执行任何操作。我们的服务器只需调用create方法,每次都会收到此错误。

要求您帮助诊断和理解。

我们正在使用最新的官方stripe-php版本

提前致谢

参考方案

我终于收到了关于这个问题的正式答复。

很简单:我们无法保存用于会议费的卡,然后在以后使用付款方式来捕获预授权的金额

因此,我们修改了流程

用户选择或保存卡后,我们通知用户我们必须保存卡才能重新使用以完成付款流程。

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

php:拆分字符串,直到第一次出现数字 - php

我有像cream 100G sup 5mg Children 我想在第一次出现数字之前将其拆分。所以结果应该是array( array('cream','100G'), array('sup','5mg Children') ); 可以告诉我如何为此创建图案吗?我试过了list(…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…