应用审核时内购失败求助:SKPaymentTransaction报错code=0无法连接iTunes Store
我来帮你梳理下几个常见的原因,毕竟这种“自己测没问题,审核就挂”的坑真的很头疼:
内购商品区域不匹配:苹果审核团队通常使用美区沙箱账号测试,如果你的内购商品仅在特定区域(比如中国区)上架,美区账号就无法访问,直接触发“无法连接iTunes Store”的错误。去App Store Connect里检查内购商品的「可用区域」,确保包含审核常用的区域(比如美国)。
沙箱账号状态/区域异常:审核用的沙箱账号可能存在禁用、过期情况,或者账号所属区域和内购商品的可用区域不匹配。可以确认下自己在App Store Connect中创建的沙箱账号是否覆盖了审核常用区域。
内购商品状态出错:虽然你测试时商品状态正常,但提交审核后可能不小心改动了状态——比如商品被设置为「等待审核」「拒绝」,而非「已批准」。赶紧去App Store Connect的「内购项目」板块确认状态,必须是已批准且可用的状态。
审核包的配置遗漏:TestFlight测试包和提交审核的包可能配置不一致。比如审核包的
entitlements文件里没正确添加com.apple.developer.in-app-purchase权限,或者签名配置漏掉了内购相关权限。重新检查提交审核包的签名和权限配置。服务器验证的网络限制:如果你的应用购买后会调用自有服务器验证交易,可能是你的服务器无法访问苹果沙箱验证服务器,或者服务器IP被苹果沙箱环境屏蔽(比如服务器有境外IP拦截规则)。可以临时关闭服务器验证,或者调整防火墙规则允许苹果沙箱IP访问。
苹果沙箱服务临时故障:偶尔苹果的沙箱内购服务会出现临时故障,刚好被审核碰到。可以去苹果开发者官网的「系统状态」页面查看In-App Purchase Sandbox的状态,如果有故障,等恢复后重新提交审核即可。
应用内网络配置冲突:如果你的应用内置了代理、VPN或者网络拦截逻辑,可能在审核环境下干扰了和苹果内购服务器的连接。比如应用强制使用特定代理,但审核环境无法访问该代理,就会导致连接失败。
内容的提问来源于stack exchange,提问作者Anton

