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

ehy*_*nds 18 itunes subscriptions in-app-purchase ios

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

基本上,Netflix.

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

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

  2. 非续订订阅:用户通过IAP在应用内购买订阅.购买完成后,应用程序同步订阅我的后端系统.只要需要进行权利检查,应用程序就会与我的后端接口.当用户的订阅即将到期时,应用程序必须再次显示购买工作流程.

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

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

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

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

ehy*_*nds 16

对于初始订阅购买:

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

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

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

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

  • *4.Server用DB*中的更新版本替换原始收据 - 这不是真正需要的,原始收据总是为您提供最新信息.无需将其替换为任何其他未来收据. (3认同)

Joh*_*ner 9

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

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

您可以处理以下通知类型:INITIAL_BUY,CANCEL,RENEWAL,INTERACTIVE_RENEWAL,DID_CHANGE_RENEWAL_PREFERENCE

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