Stripe PHP API:您无法确认此PaymentIntent,因为它';他缺少一种付款方式

Stripe PHP API:您无法确认此PaymentIntent,因为它';他缺少一种付款方式,php,stripe-payments,Php,Stripe Payments,我正在尝试实现Stripe PHP API,但从上周起我就被卡住了。 起初我认为我没有用正确的符号正确地提到付款方式。 然而,情况似乎并非如此 我创建了一个包装类,它加载所有条带API文件,并处理我所需的所有调用 因此,这就是代码布局的原因 执行脚本时,我收到以下错误: 致命错误:未捕获(状态400)(请求请求AQbkjKFB4mo31Z)您 无法确认此PaymentIntent,因为它缺少付款 方法。您可以使用付款方式更新PaymentIntent 然后再次确认,或者直接通过付款再次确认 方法

我正在尝试实现Stripe PHP API,但从上周起我就被卡住了。 起初我认为我没有用正确的符号正确地提到付款方式。 然而,情况似乎并非如此

我创建了一个包装类,它加载所有条带API文件,并处理我所需的所有调用

因此,这就是代码布局的原因

执行脚本时,我收到以下错误:

致命错误:未捕获(状态400)(请求请求AQbkjKFB4mo31Z)您 无法确认此PaymentIntent,因为它缺少付款 方法。您可以使用付款方式更新PaymentIntent 然后再次确认,或者直接通过付款再次确认 方法。投入 /var/www/vhosts/example.com/httpdocs/stripe/stripe/lib/Exception/apierexception.php 第38行

我已经联系了Stripe帮助台,但是他们一直在向我推荐他们的手册,但这也不能让我得到更多

理想的付款方式已在其仪表板中启用。所以这不是失败的原因。 这可能是我设置付款的方式。但就我而言,我没有正确设置付款方式。但据我所知,他们的手册已经相应地完成了这项工作

此外,我找不到任何关于使用检索调用的确认文档。我应该这样做吗?或者这仅仅是双重的,没有必要的

public function create_payment($amount, $order_id, $method = 'ideal', $return_url = NULL, $currency = 'eur'){
    ///######## CHECK IF CURRENCY IS ALLOWED
    if(!$this->currency_supported($currency)) exit('<strong>error</strong>, stripe currency not supported : '.$currency);
    ///######## SETUP PAYMENT
    $result = $this->obj->paymentIntents->create(
                                        array(
                                                'amount'                =>  $amount,
                                                'currency'              =>  $currency,
                                                'payment_method_types'  =>  array($method)
                                            )
                                        );
    ///######## IF ERROR
    if(!is_object($result) || !isset($result->id)) exit('<strong>error</strong>, something went wrong during stripe payment intend creation');
    ///######## SETUP PAYMENT ID
    $payment_id = $result->id;
    ///######## RETRIEVE PAYMENT INTEND DETAILS
    $result = $this->obj->paymentIntents->retrieve($payment_id, []);
    ///######## SET AN ORDER ID
    $result = $this->obj->paymentIntents->update($payment_id, array(
                                                                    'metadata'  =>  array(
                                                                                            'order_id'  =>     $order_id,
                                                                                        ),
                                                                    'payment_method_types'  =>  array($method),
                                                                    ));
    ///######## SETUP PARAMETRES
    $params = array('payment_method_types'  => array($method));
    ///######## IF THE RETURN URL HAS BEEN SET
    if($return_url) $params['return_url'] = $return_url;
    ///######## CONFIRM A PAYMENT INTEND
    $result = $this->obj->paymentIntents->confirm($payment_id, $params);
    exit(print_r($result));
}
public函数create\u payment($amount,$order\u id,$method='ideal',$return\u url=NULL,$currency='eur'){
///########检查是否允许使用货币
如果(!$this->currency\u supported($currency))退出('错误,不支持条带货币:'.$currency);
///########设置付款
$result=$this->obj->paymentIntents->create(
排列(
“金额”=>美元金额,
“货币”=>美元货币,
“付款方法类型”=>数组($method)
)
);
///########如果错误
如果(!is_object($result)| |!isset($result->id))退出(“错误”,则在条带创建过程中出错”);
///########设置付款ID
$payment\u id=$result->id;
///########检索付款计划详细信息
$result=$this->obj->paymentIntents->retrieve($payment\u id,[]);
///########设置订单ID
$result=$this->obj->paymentIntents->update($payment\u id,数组)(
“元数据”=>数组(
'order\u id'=>$order\u id,
),
“付款方法类型”=>数组($method),
));
///########设置参数
$params=array('payment_method_types'=>array($method));
///########如果已设置返回URL
如果($return\u url)$params['return\u url']=$return\u url;
///########确认付款意向
$result=$this->obj->paymentIntents->confirm($payment\u id,$params);
退出(打印($result));
}
我希望有人能指出我的错误。因为我完全被困在这里。

您正在设置,它决定了此付款目的接受哪种类型的付款方式。为了确认和收取付款,您需要提供一个特定的帐户。您可以自己直接提供,但我建议使用。在服务器上创建您的支付意图后,您会将
客户机密
发送回您的客户,并将其与收集的详细信息一起使用:

HTML

<div id="ideal-bank-element">
  <!-- A Stripe Element will be inserted here. -->
</div>
var idealBank = elements.create('idealBank', options);
idealBank.mount('#ideal-bank-element');
...
stripe.confirmIdealPayment(
  '{{PAYMENT_INTENT_CLIENT_SECRET}}',
  {
    payment_method: {
      ideal: idealBank,
      billing_details: {
        name: accountholderName.value,
      },
    },
    return_url: 'https://your-website.com/checkout/complete',
  }
);

像这样使用
confirmIdealPayment
将自动设置付款意图上的
payment\u方法
,并对其进行确认。

这是否回答了您的问题?