You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Stripe支付中禁用银行卡选项,仅显示Apple Pay/Google Pay等方式?

解决Stripe Elements仅显示指定支付方式的问题

你需要同时调整后端Payment Intent配置和前端Stripe Elements初始化代码,只保留需要的支付方式、排除card,具体步骤如下:

1. 后端修改Payment Intent的支付方式列表

创建Payment Intent时,把payment_method_types改成只包含你需要的选项,不要加card:

// 后端创建Payment Intent的代码示例
$paymentIntent = \Stripe\PaymentIntent::create([
    'amount' => 你的订单金额(单位:分),
    'currency' => '你的货币代码(如usd、eur)',
    'payment_method_types' => ['apple_pay', 'google_pay', 'klarna', 'afterpay_clearpay'],
    // 其他必填参数(比如customer、metadata等)
]);

注意:先确认Stripe后台已经启用了这些支付方式,且你的账号/地区支持对应方式。

2. 前端配置Payment Element显示指定方式

在checkout.js里初始化Stripe Elements时,给Payment Element明确指定要加载的支付方式:

// checkout.js中的核心代码示例
const stripe = Stripe(stripe_key);
// 先从后端接口获取Payment Intent的client_secret
const response = await fetch(payment_intent_route, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'X-CSRF-Token': _token
    },
    // 传递订单金额等必要数据
    body: JSON.stringify({ /* 你的订单数据 */ })
});
const { clientSecret } = await response.json();

const elements = stripe.elements({ clientSecret });
// 创建Payment Element时指定要显示的支付方式
const paymentElement = elements.create('payment', {
    paymentMethodTypes: ['apple_pay', 'google_pay', 'klarna', 'afterpay_clearpay']
});
// 挂载到页面的支付容器中
paymentElement.mount('#payment-element');

3. 关键排查要点

  • 后端和前端的支付方式列表必须完全一致,否则会出现显示异常。
  • 如果你之前页面上还单独挂载了Card Element,要把那部分代码删掉,避免重复显示银行卡选项。
  • 检查Stripe Dashboard的「支付方式」设置,确保Apple Pay/Google Pay、Klarna、Afterpay都处于启用状态。

你之前只改'payment_method_types' => ['card']没用,是因为这个配置只包含了银行卡,和你要隐藏银行卡的需求完全相反,而且前端Element也没同步调整,导致Stripe还是加载了默认的支付方式。

内容的提问来源于stack exchange,提问作者Varri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:39:41