StoreKit 2与App Store Server API实战:iOS应用内购与订阅管理完整指南

作者:API传播员 · 2025-10-20 · 阅读时间:5分钟

苹果在2021年的WWDC大会上推出了全新的StoreKit 2框架,这是专门用于管理iOS应用内购买的工具。随着应用内购和订阅功能的普及,StoreKit 2通过简化集成流程,为开发者提供了更高效的解决方案。本文将从服务器端的角度,介绍如何通过App Store Server API使用StoreKit 2。


API 请求认证

在当前的JSON Web Token (JWT)标准进行认证。

IAP 密钥生成

首先,需要创建一个用于请求授权的私钥。具体步骤如下:

  1. 登录App Store Connect,进入“用户与访问”部分。
  2. 在“密钥”标签页中,选择“应用内购买密钥类型”并下载新密钥。
  3. 记录密钥ID,这可以在App Store Connect的API标签页中找到。

创建令牌

接下来,需要创建一个用于请求授权的JWT令牌。以下是一些关键点:

  • 创建令牌的具体过程可以参考官方文档。
  • 不需要为每次请求生成新的令牌。可以设置最长60分钟的有效期,在此期间重复使用同一令牌。

StoreKit 2 签名交易

新版API中的所有交易均以JSON Web Signature (JWS)格式返回。这种格式由三部分组成,以点号分隔。

  1. Base64头部:包含验证交易真实性所需的信息,例如加密算法(Alg键)和证书链(x5c键)。
  2. 交易负载:苹果对交易格式进行了修改和扩展,新增了以下字段:
    • appAccountToken:包含系统用户ID(UUID格式),在移动端初始化购买时设置。
    • offerIdentifier:用于追踪促销优惠或优惠码的使用情况。
    • inAppOwnershipType:判断用户是直接购买(PURCHASED)还是通过家庭共享获取(FAMILY_SHARED)。
    • type:表示交易类型,例如自动续订订阅、消耗型商品等。
    • revocationDaterevocationReason:记录因退款导致的订阅撤销日期和原因。
    • 所有键名均以camelCase格式返回,日期均以毫秒级Unix时间戳显示。

App Store 用户订阅状态

要查询用户的订阅状态,可以向以下URL发送GET请求:

https://api.storekit.itunes.apple.com/inApps/v1/subscriptions/{originalTransactionId}

其中,{originalTransactionId}为用户任意交易链的ID。返回结果包括:

  • status:显示当前订阅状态,决定是否授予用户付费功能访问权限。
    • 1 表示订阅活跃。
  • SignedTransactionInfo:包含交易链中最后一笔交易的信息。
  • SignedRenewalInfo:提供订阅续订信息,可用于预测下一付费周期的状态。

用户交易历史

通过以下URL获取用户的交易历史:

https://api.storekit.itunes.apple.com/inApps/v1/history/{originalTransactionId}

返回结果是按时间排序的交易数组,每次请求最多返回20笔交易。如果有更多交易,hasMore标志会为true,需要通过携带revision参数再次请求。


服务器交易通知

服务器通知可以帮助开发者实时获取新购买、续订、账单问题等信息,从而简化订阅状态管理。

V2 版服务器通知的改进

相比V1版本,V2版服务器通知的主要改进包括:

  • 单个用户操作仅触发一条通知,避免了多条通知带来的复杂性。
  • 新增事件类型,例如OFFER_REDEEMEDEXPIREDGRACE_PERIOD_EXPIRED,进一步简化了订阅状态管理。
  • 改进了SUBSCRIBEDPRICE_INCREASE事件。


沙盒环境操作

在测试购买时,需要使用沙盒环境的URL:

https://api.storekit-sandbox.itunes.apple.com

目前,新版服务器通知尚不支持沙盒环境,但未来将支持为生产环境和沙盒环境指定不同的URL。此外,App Store Connect还新增了清除沙盒用户购买历史的功能,无需再创建新账号。


结论

苹果通过StoreKit 2显著提升了应用内购和订阅的服务器端处理体验。以下是一些关键改进:

  • 促销优惠和优惠码支持:开发者可以更方便地追踪和分析优惠的使用情况。
  • 内置分析功能:帮助快速掌握应用的核心指标。
  • 迁移简单:只需获取每张收据的originalTransactionId,即可轻松迁移到新API。

StoreKit 2为开发者提供了更高效、更安全的工具,值得尽早采用以优化用户体验。


原文链接: https://adapty.io/blog/storekit-2-api-tutorial/