iOS程序中莫名出现了Apple Pay能力配置,以及两个IAP的区别
现在想来有可能是某天在xcode中,想在capability中加入iap项,结果误加了Apple Pay,当然也不好说,因为之前的项目没遇到过。总之,我现在时不时就要处理掉这个影响iOS打包发布的问题。
貌似到发布后面的环节才会报这个问题,之前没检查到。 AI建议我用了什么方法remove掉(貌似expo的ios/项目/项目名.entitlements中:
<dict>
<key>com.apple.developer.in-app-payments</key>
<true/>
</dict>
),这时候才发现remove的项带有in-app-payments,吓我一跳,IAP可是必须的(不过那是in-app-purchase),于是有了以下问答。
以下内容多为AI对话。
iOS app如何去掉Apple Pay功能设置
我注意到remove的是
com.apple.developer.in-app-payments 貌似内购,而不是apple pay啊 merchant.com.your.merchant.id
🧠 结论先讲:
com.apple.developer.in-app-payments是 Apple Pay(实体支付),不是内购(IAP)!
✅ 区分这两个容易混淆的权限
| 能力名称 | 键名(Key) | 功能用途 | 说明 |
|---|---|---|---|
| 🛒 In-App Purchase (IAP) | com.apple.InAppPurchase(隐含于系统) | 订阅、金币、虚拟物品 | App Store 管理,Xcode 和 profile 默认支持 |
| 💳 Apple Pay(实体支付) | com.apple.developer.in-app-payments | 实体商品支付、Apple Wallet 支付 | 需要配置商户 ID,如:merchant.com.xxx |
🔍 你看到的这个字段:
<key>com.apple.developer.in-app-payments</key>
<array>
<string>merchant.com.your.merchant.id</string>
</array>
正是 Apple Pay 的专属字段,它告诉 Xcode:
这个 App 打算使用 Apple Pay,接入商户
merchant.com.your.merchant.id。
❗️它不是 IAP(内购)
-
IAP 并不需要你手动加任何 entitlement;
-
只要你的 App ID 开启了 In-App Purchase 能力,并在 App Store Connect 配置商品,就可以正常使用;
-
Apple Pay 才需要这个 entitlement,并配合后台商户配置使用。
✅ 你应该怎么做?
-
✅ 如果你只使用 IAP(订阅、金币),删除这个字段是完全正确的;
-
✅ 同时在 Apple Developer Portal → App ID → Capabilities 中关闭 Apple Pay;
-
✅ 用
eas credentials删除旧 profile,重新生成干净的 App Store profile; -
✅ 在
eas build时加入--clear-cache,清除旧的 entitlements 残留。
✅ 为什么这个字段出现在 prebuild 后?
Expo 的模板可能默认为支持 Apple Pay 的插件(如 expo-payments-stripe)预留了这个能力。如果你:
- 用了
expo-dev-client - 或者启用了其他支付相关插件(即使没用 Apple Pay)
就有可能在 prebuild 时被注入。
suhe注:不认同这点,以前没出现过,原因还是不详。
✅ 最后确认(只使用 IAP 的最小需求)
| 项目 | 是否需要 Apple Pay |
|---|---|
expo-in-app-purchases | ❌ 不需要 |
react-native-iap | ❌ 不需要 |
| App Store Connect 商品配置 | ❌ 不需要 Apple Pay,仅需要开启 IAP 能力 |
merchant.com.xxx | ✅ 仅 Apple Pay 需要,IAP 完全不需要 |
最终我的做法只是在xcode中把Apple Pay删掉了。 但要注意:prebuild后还会出现,要再删。