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

如何在TestFlight中测试订阅优惠码?StoreKit2沙箱异常问题

解决StoreKit 2沙箱环境下优惠码测试问题的方案

核心问题原因

激活优惠码的流程在沙箱环境下需要绑定沙箱测试账号,但当前操作未让优惠码激活流程走沙箱通道,导致调用了真实账号的支付链路。

具体测试步骤

  • 使用沙箱专属优惠码
    不要用真实环境的优惠码,必须在App Store Connect中进入「功能」>「促销码」,选择「沙箱测试用」生成专属沙箱优惠码。真实环境优惠码无法在沙箱中使用,会直接触发真实扣费。

  • 强制绑定沙箱账号到激活流程
    在测试设备上按以下步骤操作:

    1. 打开设置 -> [你的名字] -> 媒体与购买项目 -> 查看账户 -> 退出真实Apple ID登录
    2. 打开开发/TestFlight版本的App,触发优惠码激活流程,当弹出Apple ID登录框时,输入沙箱测试账号(非真实ID)
    3. 完成登录后再激活沙箱优惠码,此时流程会走沙箱通道,不会产生真实扣费
  • 优化收据获取逻辑
    激活成功后,通过StoreKit 2接口同步交易记录,沙箱环境下的优惠码激活交易应被正确捕获。如果仍无法获取收据,检查代码中是否在激活完成后主动触发收据同步:

    Task {
        do {
            let result = try await AppStore.redeemOfferCode("你的沙箱优惠码")
            switch result {
            case .success(let transaction):
                // 同步并处理沙箱交易收据
                let receiptURL = Bundle.main.appStoreReceiptURL
                if let url = receiptURL, FileManager.default.fileExists(atPath: url.path) {
                    // 读取沙箱收据并完成后续校验逻辑
                }
            case .failure(let error):
                // 处理激活失败逻辑
            }
        } catch {
            // 捕获异常
        }
    }
    
  • 清除设备App Store缓存
    TestFlight默认强制沙箱模式,但如果之前登录过真实ID,系统可能缓存凭证。可通过以下方式重置:

    1. 进入设置 -> 通用 -> 传输或还原iPhone -> 还原 -> 还原所有设置(不会删除设备数据)
    2. 重启设备后,重新登录沙箱测试账号,再打开TestFlight版本App测试优惠码激活

额外注意事项

  • 沙箱优惠码的使用规则与真实环境一致,但仅对沙箱测试账号生效,可根据App Store Connect设置的限制重复使用
  • 测试时必须完全退出真实Apple ID,避免系统混淆支付通道

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:02:39