Unity游戏项目集成Apple Pay遇阻求助:无产品返回错误
解决Unity IAP Apple Pay“无产品返回”问题的排查步骤
检查App Store Connect核心配置
- 确认内购产品已在App Store Connect创建完成,状态为「准备提交」或「已批准」——未审核通过的产品无法被Unity IAP获取
- 产品的SKU必须和Unity IAP配置的完全一致,包括大小写、特殊字符,哪怕一个字母错了都不行
- 确保你的Apple开发者账号已开启内购权限,且对应App ID的「In-App Purchase」选项已勾选
Unity IAP基础配置验证
- 打开Unity菜单
Window > Services > In-App Purchasing,确认服务已启用,且关联了正确的App Store Connect账号 - 核对Codeless Integration的产品列表:Unity IAP面板中添加的产品SKU,要和App Store Connect里的完全匹配,别犯拼写错误
- 升级Unity IAP包到最新版本,旧版本可能存在iOS兼容性问题
- 打开Unity菜单
代码层面的基础确认(Codeless模式也需检查)
- 检查支付按钮的绑定:按钮的OnClick事件是否正确关联了Unity IAP的
PurchaseProduct方法,传入的参数是否是正确的产品SKU - 确认IAP初始化正常:可以手动添加一个初始化脚本确保启动时完成初始化,示例代码如下:
using UnityEngine.Purchasing; public class IAPInit : MonoBehaviour, IStoreListener { private static IStoreController _storeController; private static IExtensionProvider _storeExtensions; void Start() { if (_storeController == null) { InitPurchasing(); } } void InitPurchasing() { if (IsInitialized()) return; var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); // 替换成你的产品SKU,比如builder.AddProduct("gold_100", ProductType.Consumable); builder.AddProduct("your_product_sku", ProductType.Consumable); UnityPurchasing.Initialize(this, builder); } bool IsInitialized() { return _storeController != null && _storeExtensions != null; } // 实现IStoreListener接口的必要方法(空实现即可,Codeless会处理核心逻辑) public void OnInitialized(IStoreController controller, IExtensionProvider extensions) {} public void OnInitializeFailed(InitializationFailureReason error) {} public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason) {} public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) { return PurchaseProcessingResult.Complete; } } - 查看Unity控制台日志:运行时过滤「IAP」相关日志,找初始化失败、产品获取失败的具体错误信息,比如网络问题、账号权限不足等
- 检查支付按钮的绑定:按钮的OnClick事件是否正确关联了Unity IAP的
iOS构建与测试环境检查
- 构建iOS包时,
Player Settings里的Bundle Identifier必须和App Store Connect中的App ID完全一致 - 必须用iOS真机测试,且登录的是App Store Connect中创建的沙箱测试账号,普通Apple ID无法测试内购
- Xcode构建时,确保已在
Signing & Capabilities中添加「In-App Purchase」能力
- 构建iOS包时,
新手易踩的坑
- 不要在Unity编辑器里测试Apple Pay/内购,必须用真机
- 沙箱测试账号需要单独创建,不能用开发者账号直接登录测试
- 新创建的内购产品需要等待一段时间(几分钟到几小时)才能被Unity IAP获取,刚创建就测试大概率会失败
内容的提问来源于stack exchange,提问作者Zisf 98
相关产品推荐
相关产品推荐

