跳过内容

配置 iOS 沙盒测试

在 iOS 上测试应用内购买需要在 App Store Connect 和测试设备上正确配置。这份指南涵盖了您需要了解的所有内容,以便开始使用沙盒测试。

前提条件

前提条件
  • Apple Developer Program: 每年续费的活跃会员
  • 协议: 已签署的“付费应用程序协议”,并已完成银行和税务信息
  • Xcode 项目: 配置了正确的包标识符和功能

Setup Process

Setup Process
  1. 签署付费应用程序协议

    在 App Store Connect 中,导航到 协议、税务和银行 并完成:

    • 签署付费应用程序协议
    • 添加银行信息
    • 完成税务表格

    等待 Apple 批准您的信息(这可能需要 24-48 小时)。

  2. 创建沙盒测试用户

    In App Store Connect 中,前往 用户和访问 > 沙盒测试者.

    点击 + 按钮创建一个新的沙盒测试者。

    注意:使用一个尚未与 Apple ID 关联的电子邮件地址。您可以使用电子邮件别名:

    • Gmail: youremail+test@gmail.com
    • iCloud: youremail+test@icloud.com

    创建沙盒测试者

  3. 配置测试设备(iOS 12+)

    从 iOS 12 开始,您不再需要退出 iTunes 帐户以测试购买。

    在您的 iOS 设备上:

    1. 打开 设置
    2. 点击 应用商店
    3. 滚动到底部
    4. 点击 沙盒账户
    5. 使用您的沙盒测试账户登录
  4. 配置Xcode项目

    确保您的 Xcode 项目具有:

    包标识符

    • 必须与您的开发者中心中的标识符匹配
    • 必须与 App Store Connect 中的标识符匹配

    内购能力

    1. 在 Xcode 中选择您的项目
    2. 转到 签名 & 能力
    3. 点击 + 能力
    4. 添加 内购
  5. 创建内购产品

    在 App Store Connect 中,导航到您的应用程序并创建您的内购产品(订阅、消耗品等)。

    产品必须至少处于“准备提交”状态才能进行沙盒测试。

  6. 测试您的实现

    在测试设备上构建并运行您的应用程序。当您尝试购买时,您应该看到:

    [环境:沙盒]

    此确认表明您处于沙盒环境中,不会被实际收费。

重要注意事项

标题:重要注意事项

沙盒环境特征

标题:沙盒环境特征
  • 无实际收费:所有购买在沙盒模式中都是免费的
  • 加速订阅: 订阅周期缩短以加快测试
    • 1 周订阅 = 3 分钟
    • 1 个月订阅 = 5 分钟
    • 2 个月订阅 = 10 分钟
    • 3 个月订阅 = 15 分钟
    • 6 个月订阅 = 30 分钟
    • 1 年订阅 = 1 小时
  • 自动续订限制: 在沙盒模式下,订阅自动续订至 6 次
  • 立即取消已取消的订阅立即失效

沙盒账户管理

沙盒账户管理
  • 创建多个用于不同场景的测试账户
  • 仅在测试设备上使用测试账户
  • 不要使用个人Apple ID进行沙盒测试
  • 测试账户可以无论地域都购买任何产品

使用沙盒测试

复制到剪贴板
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
const { isBillingSupported } = await NativePurchases.isBillingSupported();
if (!isBillingSupported) {
throw new Error('StoreKit not supported on this device');
}
// Fetch products (automatically uses sandbox when available)
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['premium_monthly'],
productType: PURCHASE_TYPE.SUBS,
});
// Make test purchase
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'premium_monthly',
productType: PURCHASE_TYPE.SUBS,
});
console.log('Test purchase successful!', transaction.transactionId);

当正确配置时,您应该观察到:

  1. 沙盒标签 在购买期间:“环境:沙盒”
  2. 产品加载 成功
  3. 购买完成 无实际费用
  4. 收据验证 正确
  5. 订阅自动续期 (加速速度)

产品未加载:

  • 确认 App Store Connect 中的包标识符匹配
  • 检查是否已签署和批准协议
  • 确保产品至少处于“准备提交”状态
  • 创建产品后等待 2-3 小时

“Cannot connect to iTunes Store”:

  • Verify sandbox account is configured correctly
  • 确认沙盒账户配置正确
  • 检查设备是否连接到互联网
  • 尝试注销并重新登录沙盒账户

重启应用

  • 检查 Xcode 控制台以查看错误消息
  • 验证 In-App 购买功能是否已启用
  • 确保沙盒账户邮箱不是真实 Apple ID
  • 尝试创建一个新的沙盒测试账户

收据验证错误:

  • 在测试中使用沙盒收据验证端点
  • 生产端点: https://buy.itunes.apple.com/verifyReceipt
  • 沙盒端点: https://sandbox.itunes.apple.com/verifyReceipt
  • native-purchases 插件会自动处理此问题

订阅时长错误:

  • 记住,沙盒中订阅会加速
  • 使用上面的转换表格来预期时长
  • 订阅自动续费最大 6 次在沙盒中

“这个 Apple ID 还没有在 iTunes Store 中使用”:

  • 这是新沙盒账户的正常情况
  • 继续购买以激活账户
  • 只发生在第一次使用
  1. 创建多个测试账户 用于不同的测试场景
  2. 测试所有订阅持续时间 以验证行为
  3. 测试取消和续费 流程
  4. 验证收据验证 正常工作
  5. 测试恢复购买 功能
  6. 检查订阅升级/降级 行为
  7. 测试网络条件差

生产环境 vs. Sandbox

标题:生产环境 vs. Sandbox
功能沙盒生产环境
实时收费
订阅时长加速正常
自动续订限制6 次无限制
取消效果立即期末
收据端点沙盒 URL生产 URL
仅测试帐户

额外资源

额外资源部分

更多详细信息,请参阅 官方 Apple StoreKit 文档 关于沙盒测试的更多信息。

继续从 Configure iOS Sandbox Testing

Configure iOS Sandbox Testing

如果您正在使用 Configure iOS Sandbox Testing 规划商店审批和分发,连接它到 使用 @capgo/native-purchases 在使用 @capgo/native-purchases 中的本机能力中 @capgo/capacitor-in-app-review 在 @capgo/capacitor-in-app-review 中的实现细节中 使用 @capgo/capacitor-in-app-review 在使用 @capgo/capacitor-in-app-review 中的本机能力中 @capgo/capacitor-native-market 对于 @capgo/capacitor-native-market 的实现细节 使用 @capgo/capacitor-native-market 对于 @capgo/capacitor-native-market 的本地能力