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

Stripe对接Google Pay报错:confirmCardPayment参数异常求助

问题原因分析与解决方案

你的核心问题是错误匹配了Stripe API方法的参数要求,混淆了confirmCardPayment和confirmPayment的适用场景,以及Token转PaymentMethod的正确流程:

1. 第一个错误的原因

confirmCardPayment方法的设计目的是确认已存在的PaymentMethod或Source,它的参数里并没有payment_method_data这个选项,所以直接传这个参数会触发Expected payment_method, or source, not payment_method_data错误。

2. 第二个错误的原因

当你换成payment_method参数时,Stripe要求这个参数传入的是已创建的PaymentMethod的ID(比如pm_xxxxxx),而不是原始的支付token。所以直接把Google Pay返回的token传给payment_method,会触发A token may not be passed in as a PaymentMethod错误。

正确解决方案

要处理Google Pay返回的token并完成支付,你需要使用stripe.confirmPayment方法——这个方法支持通过payment_method_data参数实时创建PaymentMethod并同时确认PaymentIntent,完全适配你的场景。

修改后的代码如下:

async function processPayment(paymentData) {
    const stripe = Stripe('pk_test_XXXXXXXXXXXXXXXXXXXXXXXX');
    try{
        const result = await stripe.confirmPayment(
            'CLIENT_SECRET',
            {
                payment_method_data: {
                    type: 'card',
                    card: {
                        token: paymentData.paymentMethodData.tokenizationData.token
                    }
                },
                return_url: 'https://your-domain.com/payment-result' // 必填:支付完成/验证后的跳转地址
            });
        console.log('processPayment result:', result);
    } catch(err){
        console.error('processPayment error:', err);
    }
}

关键说明

  • confirmPayment是Stripe提供的通用支付确认方法,支持包括Google Pay在内的多种支付方式,允许动态创建PaymentMethod。
  • return_url是必填参数,用于处理3DS验证、银行跳转等需要用户交互的支付流程,必须是你自己域名下的合法地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:27:36