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

Apple Silicon Mac上应用内购买失败问题求助

解决Apple Silicon Mac上macOS Ventura 13.2中iOS/iPadOS应用内购买收据写入权限问题

问题背景

在Apple Silicon Mac上测试iPhone/iPad应用时,沙盒环境下的应用内购买出现异常:调用SKPaymentQueue::addPayment发起购买后,收到paymentQueue:updatedTransactions回调且交易状态为SKPaymentTransactionStatePurchased(表明支付成功),但本地收据未生成,导致后续流程失败。

控制台输出权限错误日志:

storekitagent  [6913DE38_SK1] Error writing receipt (5095 bytes) to file:///Users/XXXX/Library/Containers/90FE2A60-9FDF-4ECF-848F-CE3D396322CA/Data/StoreKit/sandboxReceipt: Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “sandboxReceipt” in the folder “StoreKit”" UserInfo={NSFilePath=/Users/XXXX/Library/Containers/90FE2A60-9FDF-4ECF-848F-CE3D396322CA/Data/StoreKit/sandboxReceipt, NSUnderlyingError=0x14202c920 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}

经多次验证,该问题仅出现在macOS Ventura 13.2系统中,macOS Monterey 12.2可正常生成收据,推测是Ventura系统的权限管控或StoreKit组件行为变化导致。苹果开发者论坛上也存在同类未解决问题,用户反馈在Ventura下遭遇相同的收据写入权限错误,目前官方尚未给出正式修复方案。

解决方案建议

1. 手动修复StoreKit目录权限

找到应用对应的容器目录,手动创建并修复StoreKit文件夹权限:

# 替换为你的容器ID和用户名
rm -rf /Users/XXXX/Library/Containers/90FE2A60-9FDF-4ECF-848F-CE3D396322CA/Data/StoreKit
mkdir -p /Users/XXXX/Library/Containers/90FE2A60-9FDF-4ECF-848F-CE3D396322CA/Data/StoreKit
chmod 755 /Users/XXXX/Library/Containers/90FE2A60-9FDF-4ECF-848F-CE3D396322CA/Data/StoreKit

操作完成后重启应用,重新测试内购流程。

2. 重置沙盒环境

  • 打开Mac系统“设置”→“App Store”→“沙盒账户”,退出当前登录的沙盒测试账户,重新登录
  • 重启应用和Mac,清除应用缓存后再次发起内购测试

3. 升级至最新Ventura版本

苹果可能在后续系统更新中修复该权限问题,建议升级到macOS Ventura 13.4及以上版本后重新验证内购流程。

4. 测试阶段临时绕过本地收据验证

若仅需验证内购流程的核心逻辑,可临时跳过本地收据读取步骤,直接使用SKPaymentTransaction对象中的交易信息完成后续处理(上线前务必恢复标准收据验证流程):

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions {
    for (SKPaymentTransaction *transaction in transactions) {
        switch (transaction.transactionState) {
            case SKPaymentTransactionStatePurchased:
                // 临时处理:基于交易对象完成流程,跳过本地收据读取
                [self processPurchasedTransaction:transaction];
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                // 处理失败逻辑
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                break;
            // 其他状态处理
            default:
                break;
        }
    }
}

5. 向苹果提交Bug报告

收集完整的复现步骤、系统日志、应用容器权限信息,通过苹果开发者后台提交Bug报告,帮助官方定位并修复该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:20:22