未将Expo应用eject至React Native时,使用Apple Pay生成payment token的方法?
在不Eject Expo应用的情况下实现Apple Pay生成Payment Token
当然可以,不需要eject Expo应用,核心是用Expo Development Builds(自定义开发客户端)来集成所需的原生能力,以下是两种可行方案:
方案一:基于Expo Stripe集成实现
Stripe的Expo官方集成支持Apple Pay,能直接生成符合要求的payment token,步骤如下:
- 安装依赖:
npx expo install expo-stripe - 在Apple Developer后台创建并配置Merchant ID,确保你的Expo项目Bundle ID和开发者账号关联
- 在项目的
app.json中添加iOS配置,指定Apple Pay的商户ID:
{ "expo": { "ios": { "merchantIdentifiers": ["merchant.com.your-app-id"] } } }
- 创建自定义开发构建:运行
npx expo run:ios生成包含Stripe原生依赖的开发客户端(这一步不用eject,只是构建专属的开发包) - 代码中调用Stripe的API创建Payment Intent,唤起Apple Pay组件完成授权后,即可获取包含payment token的Payment Method对象
方案二:集成第三方支付库(如react-native-payments)
如果坚持想用react-native-payments这类库,同样可以通过Expo Development Builds实现:
- 安装库:
npm install react-native-payments --save - 用
npx expo prebuild生成原生配置文件(不会eject,只是生成可编辑的原生代码目录,依然保留Expo工作流) - 按照react-native-payments文档配置Apple Pay的商户ID和权限
- 运行
npx expo run:ios构建自定义开发客户端,之后就能在代码中调用库的API生成payment token
关键说明
- Expo Go是通用沙箱环境,不支持自定义原生依赖和权限配置,所以必须用自定义开发构建——这是Expo官方推荐的替代eject的方案,完全保留Expo的开发和发布流程
- 无论哪种方案,都需要在Apple Developer后台完成Merchant ID配置,且设备上的Apple Wallet需绑定有效支付卡
内容的提问来源于stack exchange,提问作者Prajna S Shetty
相关产品推荐
相关产品推荐

