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

React Native Expo Android端Stripe PaymentSheet初始化失败问题

React Native Expo集成Stripe Android端初始化报错解决方案

问题核心

Android端Stripe SDK对初始化配置的要求比iOS更严格,你遇到的PaymentConfiguration was not initialized报错,主要是URL Scheme配置错误、初始化时机不当或Expo Android配置缺失导致的。

具体解决方案

1. 修正URL Scheme配置

你在initStripe中使用的"https://website.com/"是HTTP协议地址,Android端要求使用自定义协议的URL Scheme,需和initPaymentSheet中的returnURL保持一致:

useEffect(() => {
  const setupStripe = async () => {
    await initStripe({
      publishableKey: api.stripe_key,
      urlScheme: "app://stripe-redirect", // 与returnURL匹配
    });
  };
  setupStripe();
}, []);

2. 确保Stripe初始化完成后再调用PaymentSheet

initStripe是异步操作,Android上可能出现后续代码先执行的情况,添加状态标记初始化完成:

const [stripeReady, setStripeReady] = useState(false);

useEffect(() => {
  const setupStripe = async () => {
    await initStripe({
      publishableKey: api.stripe_key,
      urlScheme: "app://stripe-redirect",
    });
    setStripeReady(true);
  };
  setupStripe();
}, []);

const initializePaymentSheet = async (fee: number) => {
  if (!stripeReady) {
    console.log("Stripe初始化未完成");
    return;
  }
  // 原有初始化逻辑...
};

3. 补充Expo Android Intent Filter配置

在app.json中添加Intent Filter,让Android正确识别Stripe的返回URL:

{
  "expo": {
    "android": {
      "intentFilters": [
        {
          "action": "VIEW",
          "data": [
            {
              "scheme": "app",
              "host": "stripe-redirect"
            }
          ],
          "category": ["BROWSABLE", "DEFAULT"]
        }
      ]
    }
  }
}

4. 验证依赖版本兼容性

Expo 52推荐搭配@stripe/stripe-react-native 0.39.x及以上版本,你当前使用的0.38.6可能存在兼容问题,升级依赖:

npx expo install @stripe/stripe-react-native@latest

完成以上配置后,重新构建Android项目(npx expo run:android)即可解决报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:22:11