iTunes跨平台的IAP订阅 – Netflix如何做到这一点?

我正在创build一项服务,允许用户在任意数量的设备(networking,Android,Roku,iOS,Apple TV)上注册,然后购买每月订阅以观看video内容。 订阅提供对整个目录的访问。 我有我自己的订阅pipe理API运行在服务器上,我想利用作为真相的来源,以便用户可以购买他们的iPad的订阅,在Roku上login到应用程序,并继续看他们离开的地方。

基本上,Netflix。

据我所知,这是我的select:

  1. 自动更新订阅:这是Netflix今天使用的版本,但是Apple不提供API或任何围绕其支付平台的webhook,所以我不知道这个选项是如何工作的。 我的后端服务将不知道每个月苹果自动续订订阅的时间或用户是否取消订阅。

  2. 非续订订阅:用户通过IAP购买应用内的订阅。 购买完成后,应用程序同步将订阅到我的后端系统。 每次需要检查权限时,应用程序都会与我的后端对接。 当用户的订阅即将到期时,应用程序必须再次呈现购买工作stream程。

  3. 导入iTunes报告:不会工作,因为它不是实时(拉,不推),并没有告诉我任何关于取消订阅。 我只能生成新用户的报告。

  4. 收到我的服务validation和推送回执:将无法正常工作,因为它取决于实际使用我的应用程序的用户。 用户理论上可以在我的应用程序中订阅,切换到Roku,而不再打开它。

  5. 完全跳过IAP并要求用户通过networking订阅。

我错过了什么吗? 我非常好奇Netflix是如何把这件事情拉下马的。

对于初次订阅购买:

  1. 用户在iDevice上启动购买
  2. 设备联系人Apple,Apple发出收据并将其发送回设备
  3. 设备将收据发送到我的服务器
  4. 服务器通过Apple的收据validationAPIvalidation收据是否合法
  5. 一旦收据被validation,服务器将其存储在我的数据库中
  6. 服务器响应应用程序说这一切都很好

要使服务器与iTunes订阅保持同步,请执行以下操作:

  1. 设置一个cron作业,以便每天从数据库中检索到期的收据
  2. 用Applevalidation每个收据
  3. 苹果公司将回复收据的更新版本,其中包含有关订阅是否被取消/更新等的详细信息。
  4. 服务器用数据库中的更新版本replace原始收据

现在,如果有人在Roku或其他设备上login他们的帐户,订阅可以被授予,因为我的数据库是真相的来源。

我知道这是旧的,但苹果最近引入了状态更新通知 ,通过webhooks完成OP所要求的:

  1. configurationApple将通知发送到指定的端点。 ( 苹果的小指南 )
  2. 处理从App Store通过HTTP POST发送的JSON对象并validation最新的收据。
  3. 更新/保存数据到您的数据库。
  4. 回复200状态码以报告成功。

您将能够处理以下通知types: INITIAL_BUYCANCELRENEWALINTERACTIVE_RENEWALDID_CHANGE_RENEWAL_PREFERENCE

上面的链接中的文档更详细地解释了实现和types。