iTunes 跨平台 IAP 订阅——Netflix 是怎么做到的?
iTunes cross-platform IAP subscriptions - how does Netflix do it?
我正在创建一项服务,允许用户在任意数量的设备(网络、Android、Roku、iOS、Apple TV)上注册,然后按月订阅观看视频内容。订阅提供对整个目录的访问。我在服务器上有自己的订阅管理 API 运行,我想利用它作为真实来源,以便用户可以在他们的 iPad 上购买订阅,登录到应用程序Roku,继续观看他们离开的地方。
基本上,Netflix。
据我所知,以下是我的选择:
自动续订订阅:这是 Netflix 今天使用的,但 Apple 不提供 API 或围绕其支付平台的任何 webhook 集,所以我不知道这个选项如何工作。我的后端服务不知道 Apple 何时自动续订每个月或用户是否取消订阅。
非续订:用户在里面购买订阅
该应用程序通过 IAP。购买完成后,应用程序同步
订阅我的后端系统。该应用程序与我的接口
任何时候需要权利检查的后端。当用户的
订阅即将到期,应用必须出示购买
再次工作流程。
导入 iTunes 报告:不会工作,因为它不是实时的(拉,不是推),也没有告诉我有关取消订阅的任何信息。我只能生成新订阅者的报告。
收据验证并将收据推送到我的服务:不起作用,因为它取决于实际使用我的应用程序的用户。理论上,用户可以在我的应用程序中订阅,然后切换到 Roku,再也不会打开它。
完全跳过 IAP,要求用户通过网络订阅。
我错过了什么吗?我真的很好奇 Netflix 是如何做到这一点的。
首次订阅购买:
- 用户在 iDevice 上发起购买
- 设备联系 Apple,Apple 发出收据并将其发回给设备
- 设备将收据发送到我的服务器
- 服务器通过Apple的收据验证验证收据合法API
- 验证收据后,服务器将其存储在我的数据库中
- 服务器响应应用说一切正常
要使服务器与 iTunes 订阅保持同步:
- 设置一个 cron 作业以每天或其他方式从数据库中检索过期收据
- 使用 Apple 验证每张收据
- Apple 将以更新版本的收据作为回应,其中包含有关订阅是否 canceled/renewed/etc 的详细信息。
- 服务器用数据库中的更新版本替换原始收据
现在,如果有人在 Roku 或其他设备上登录他们的帐户,则可以兑现订阅,因为我的数据库是真实的来源。
我知道这已经过时了,但 Apple 最近推出了 Status Update Notifactions,它实现了 OP 通过 webhook 要求的内容:
- 将 Apple 配置为向您指定的端点发送通知。 (Apple's small guide)
- 处理从 App Store 通过 HTTP POST 发送的 JSON 对象并验证最新的收据。
- Update/save 数据到您的数据库。
- 响应
200
状态代码以报告成功。
您将能够处理以下通知类型:INITIAL_BUY
、CANCEL
、RENEWAL
、INTERACTIVE_RENEWAL
、DID_CHANGE_RENEWAL_PREFERENCE
上面 link 中的文档更详细地解释了实现和类型。
我正在创建一项服务,允许用户在任意数量的设备(网络、Android、Roku、iOS、Apple TV)上注册,然后按月订阅观看视频内容。订阅提供对整个目录的访问。我在服务器上有自己的订阅管理 API 运行,我想利用它作为真实来源,以便用户可以在他们的 iPad 上购买订阅,登录到应用程序Roku,继续观看他们离开的地方。
基本上,Netflix。
据我所知,以下是我的选择:
自动续订订阅:这是 Netflix 今天使用的,但 Apple 不提供 API 或围绕其支付平台的任何 webhook 集,所以我不知道这个选项如何工作。我的后端服务不知道 Apple 何时自动续订每个月或用户是否取消订阅。
非续订:用户在里面购买订阅 该应用程序通过 IAP。购买完成后,应用程序同步 订阅我的后端系统。该应用程序与我的接口 任何时候需要权利检查的后端。当用户的 订阅即将到期,应用必须出示购买 再次工作流程。
导入 iTunes 报告:不会工作,因为它不是实时的(拉,不是推),也没有告诉我有关取消订阅的任何信息。我只能生成新订阅者的报告。
收据验证并将收据推送到我的服务:不起作用,因为它取决于实际使用我的应用程序的用户。理论上,用户可以在我的应用程序中订阅,然后切换到 Roku,再也不会打开它。
完全跳过 IAP,要求用户通过网络订阅。
我错过了什么吗?我真的很好奇 Netflix 是如何做到这一点的。
首次订阅购买:
- 用户在 iDevice 上发起购买
- 设备联系 Apple,Apple 发出收据并将其发回给设备
- 设备将收据发送到我的服务器
- 服务器通过Apple的收据验证验证收据合法API
- 验证收据后,服务器将其存储在我的数据库中
- 服务器响应应用说一切正常
要使服务器与 iTunes 订阅保持同步:
- 设置一个 cron 作业以每天或其他方式从数据库中检索过期收据
- 使用 Apple 验证每张收据
- Apple 将以更新版本的收据作为回应,其中包含有关订阅是否 canceled/renewed/etc 的详细信息。
- 服务器用数据库中的更新版本替换原始收据
现在,如果有人在 Roku 或其他设备上登录他们的帐户,则可以兑现订阅,因为我的数据库是真实的来源。
我知道这已经过时了,但 Apple 最近推出了 Status Update Notifactions,它实现了 OP 通过 webhook 要求的内容:
- 将 Apple 配置为向您指定的端点发送通知。 (Apple's small guide)
- 处理从 App Store 通过 HTTP POST 发送的 JSON 对象并验证最新的收据。
- Update/save 数据到您的数据库。
- 响应
200
状态代码以报告成功。
您将能够处理以下通知类型:INITIAL_BUY
、CANCEL
、RENEWAL
、INTERACTIVE_RENEWAL
、DID_CHANGE_RENEWAL_PREFERENCE
上面 link 中的文档更详细地解释了实现和类型。