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

时间:2015-10-06 13:25:30

标签: ios in-app-purchase itunes subscriptions

我正在创建一项服务,允许用户在任意数量的设备(网络,Android,Roku,iOS,Apple TV)上注册,然后购买每月订阅以观看视频内容。订阅提供对整个目录的访问。我在服务器上运行自己的订阅管理API,我想利用它作为事实的来源,这样用户就可以在iPad上购买订阅,登录Roku上的应用程序,并继续观察他们中断的位置。

基本上,Netflix。

据我所知,以下是我的选择:

  1. 自动续订订阅:这是Netflix今天使用的,但Apple并未在其付款平台周围提供API或任何一组webhook,因此我不知道此选项如何工作。我的后端服务不知道Apple每个月会自动续订订阅,或者用户是否取消订阅。

  2. 非续订订阅:用户在内部购买订阅 该应用程序虽然IAP。购买完成后,应用同步即可 订阅我的后端系统。该应用程序与我的接口 任何时候需要权利检查的后端。当用户的时候 订阅即将到期,应用必须提出购买 工作流程再次。

  3. 导入iTunes报告:因为它不是实时的(拉,不推)而无法工作,也没有告诉我有关取消订阅的任何信息。我只能生成新订阅者的报告。

  4. 收据验证&将收据推送到我的服务:赢了,因为它取决于用户实际使用我的应用程序。理论上,用户可以在我的应用程序中订阅,切换到Roku,永远不会再打开它。

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

  6. 我错过了什么吗?我非常好奇Netflix是如何解决这个问题的。

2 个答案:

答案 0 :(得分:15)

对于初始订阅购买:

  1. 用户在iDevice
  2. 上发起购买
  3. 设备联系人Apple,Apple发出收据并将其发送回设备
  4. 设备将收据发送到我的服务器
  5. 服务器通过Apple的收据验证API
  6. 验证收据是否合法
  7. 验证收据后,服务器会将其存储在我的数据库
  8. 服务器响应应用程序说它一切都很好
  9. 使服务器与iTunes订阅保持同步:

    1. 设置一个cron作业,以便每天从数据库中检索到期收据
    2. 使用Apple
    3. 验证每张收据
    4. Apple将回复收据的更新版本,其中包含有关订阅是否被取消/续订/等的详细信息。
    5. 服务器用DB中的此更新版本替换原始收据
    6. 现在如果有人在Roku或其他设备上登录他们的帐户,可以尊重订阅,因为我的数据库是真相的来源。

答案 1 :(得分:8)

我知道这已经过时了,但Apple最近推出了Status Update Notifactions来完成OP通过webhooks要求的内容:

  1. 配置Apple以向指定的端点发送通知。 (Apple's small guide
  2. 处理从App Store通过HTTP POST发送的JSON对象并验证最新收据。
  3. 更新/保存数据到您的数据库。
  4. 使用200状态代码回复以报告成功。
  5. 您将能够处理以下通知类型:INITIAL_BUYCANCELRENEWALINTERACTIVE_RENEWALDID_CHANGE_RENEWAL_PREFERENCE

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