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

iOS应用内购问题:显示价格与App Store Connect所选价格档位不匹配

解决Expo内购价格与App Store Connect档位不匹配的问题

我之前用Expo EAS和expo-in-app-purchases集成可消耗内购时,碰到过几乎一模一样的问题!结合我的排查经验,给你几个方向去解决:

1. 检查App Store Connect的价格档位设置模式

首先要确认你在配置价格时,有没有混淆用户支付价和开发者所得价:

  • 在App Store Connect设置内购价格时,有两种模式:一种是直接设置「用户需要支付的金额」,另一种是设置「开发者最终获得的金额」(系统会自动计算用户支付价,包含税费和苹果佣金)。
  • 你提到的档位1设置€0.99但显示€1.09,看起来像是选了「开发者所得价」模式,系统自动加上德国增值税和佣金后,得出了用户实际支付的€1.09。而替代档位A可能刚好在两种模式下金额一致。
  • 解决方法:进入App Store Connect的内购项目价格设置页面,切换到「用户支付价格」模式,重新选择对应档位。

2. 验证Sandbox测试账号的区域设置

Sandbox环境下的价格显示完全依赖测试账号的所属区域:

  • 如果你的测试账号不是德国区的,StoreKit会返回该账号所在区域的对应价格,而非你设置的德国区价格。
  • 解决方法:
    • 退出当前App Store账号,登录德国区的Sandbox测试账号(确保账号注册时地区选的是德国)。
    • 在设备的「设置」-「App Store」里,确认Apple ID的地区是德国。

3. 检查expo-in-app-purchases的API使用是否正确

确保你通过正确的字段获取价格:

  • 使用getProductsAsync获取产品列表后,应该读取localizedPrice字段显示给用户,这个字段是已经本地化并包含税费的最终价格。
  • 如果你错误读取了price字段(该字段是原始不含税价格,单位为美元),就会显示错误金额。
  • 示例代码:
    const { products } = await InAppPurchases.getProductsAsync(['your-product-id']);
    const displayPrice = products[0].localizedPrice; // 正确的本地化价格
    

4. 升级expo-in-app-purchases到最新版本

旧版本的库可能存在区域价格解析的bug:

  • 部分早期版本的expo-in-app-purchases在处理非美元区价格时,会出现计算错误。
  • 解决方法:运行expo install expo-in-app-purchases升级到最新稳定版,然后重新构建EAS包。

5. 确认价格档位的区域同步状态

有时候App Store Connect的价格更新需要时间同步到StoreKit服务器:

  • 虽然你说Sandbox也有问题,但还是建议等待1-2小时,确保价格设置已经完全同步到所有环境。
  • 可以在App Store Connect的「内购项目」页面,检查德国区的价格是否显示为你设置的金额,没有异常标记。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:57:35