ios - iTunes 跨平台 IAP 订阅——Netflix 是怎么做到的?

标签 ios in-app-purchase itunes subscriptions

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

基本上,Netflix。

据我所知,这是我的选择:

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

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

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

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

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

我错过了什么吗?我真的很好奇 Netflix 如何做到这一点。

最佳答案

对于初始订阅购买:

  1. 用户在 iDevice 上发起购买
  2. 设备联系 Apple,Apple 发出收据并将其发回给设备
  3. 设备将收据发送到我的服务器
  4. 服务器通过Apple的收据验证API验证收据是否合法
  5. 验证收据后,服务器将其存储在我的数据库中
  6. 服务器响应应用说一切正常

要使服务器与 iTunes 订阅保持同步:

  1. 设置一个 cron 作业以每天从数据库中检索过期收据或其他内容
  2. 通过 Apple 验证每张收据
  3. Apple 将以更新版本的收据作为回应,其中包含有关订阅是否被取消/续订等的详细信息。
  4. 服务器用数据库中的更新版本替换原始收据

现在,如果有人在 Roku 或其他设备上登录他们的帐户,则可以兑现订阅,因为我的数据库是真实的来源。

关于ios - iTunes 跨平台 IAP 订阅——Netflix 是怎么做到的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32971193/

相关文章:

ios - 为什么即使经过苹果验证,通用链接仍然不起作用?

android - flutter中有支持rowspan和colspan的widget吗?

python - 在 iTunes 上搜索轨道

stream - 在 OSX 上通过 AppleScript 使用 iTunes 打开 URL

ios - 如何检查fileURL(withPath :)的返回值是否失败?

ios - 当我得到以下内容时,为什么必须输入?

java - 如何在android中实现应用内支付?

java - In-App Billing V3 - 购买 3 个月后过期的对象 - Android

java - 在对话框打开时显示 toast ?

ios - Ad Hoc 分发失败