You need to enable JavaScript to run this app. React Native接入tipsi-stripe调用createTokenWithCard时提示需先执行init报错
优惠活动
大模型
产品
解决方案
定价
更多

React Native接入tipsi-stripe调用createTokenWithCard时提示需先执行init报错

报错"You should call init first"的核心原因

该报错是tipsi-stripe SDK的内置校验逻辑触发的:SDK在执行任何需要调用原生Stripe能力的方法(比如代码中用到的createTokenWithCard)之前,会先检查自身初始化状态,一旦检测到原生层的Stripe实例未完成初始化,就会直接抛出该固定错误。
常见的触发场景:

  • 完全未调用stripe.init()方法:即使JS层正常导入了stripe模块,只要没执行初始化配置、传入Stripe公钥,原生层的Stripe SDK就不会被实例化,内部初始化状态位始终为未激活,所有业务方法调用都会触发该报错。
  • 初始化时序错乱:把stripe.init()的逻辑放在支付按钮的点击回调中,但因为init是异步操作,代码在init尚未执行完成时就调用了createTokenWithCard,此时状态位还未更新为已初始化,就会抛出错误。
  • 初始化参数无效:比如传入的Stripe公钥为空、格式错误,导致原生层初始化流程失败,SDK内部会将状态位回退为未初始化,后续所有方法调用都会抛出该错误。
修正参考
  • 将stripe.init()的调用放在应用启动的全局入口位置(比如根组件构造函数、应用级初始化逻辑中),提前完成SDK全局初始化,不要将init逻辑和支付触发逻辑放在同一个点击回调内。
  • 初始化时必须传入有效的Stripe publishableKey,不要传入私钥或其他类型的无效参数。
  • 如果初始化逻辑是在异步函数中执行的,需要等待init的Promise resolve完成后,再放开支付按钮的可点击状态,避免异步时序错乱。

正确的初始化时序示例:

// 根组件初始化阶段执行
import stripe from '@tipsi-stripe/react-native-stripe'

// 应用启动即完成SDK初始化
stripe.init({
  publishableKey: '你的Stripe公钥',
  merchantId: '商户ID(仅使用Apple Pay时需要配置)'
})

待初始化完成后,再在支付提交逻辑中调用createTokenWithCard等业务方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 07:27:03