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

Expo集成Stripe调用confirmPayment时报需提供卡信息/令牌/paymentMethodId错误

报错原因

调用confirmPayment方法时缺少必填的卡片相关参数,Stripe无法获取支付所需的卡信息,因此触发You must provide card details, token or paymentMethodId报错。

修复方法

你已经提前完成了卡片信息完整性校验,只需要在confirmPayment的传参中增加cardDetails字段,将收集到的卡片信息传入即可,修改后的代码如下:

const handlePayPress = async () => {
    // 1. 收集客户账单信息(例如邮箱)
    if (!cardDetails?.complete || !email) {
      Alert.alert("请填写完整的卡片信息和邮箱");
      return;
    }
    const billingDetails = {
      email: email,
    };
    // 2. 从后端获取支付意图的客户端密钥
    try {
      const { clientSecret, error } = await fetchPaymentIntentClientSecret();
      // 3. 确认支付
      if (error) {
        console.log("无法处理支付");
      } else {
        const { paymentIntent, error } = await confirmPayment(clientSecret, {
          type: "Card",
          cardDetails: cardDetails, // 新增该行传入已校验的卡片信息
          billingDetails: billingDetails,
        });
        if (error) {
          alert(`支付确认错误:${error.message}`);
        } else if (paymentIntent) {
          alert("支付成功");
          console.log("支付成功 ", paymentIntent);
        }
      }
    } catch (e) {
      console.log(e);
    }
  };
其他可选方案

如果你采用先创建支付方式再确认支付的逻辑,也可以不传cardDetails,改为传入提前生成的paymentMethodId参数,同样可以完成支付确认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:12:00