Подтвердить что ты не робот

ITunes кросс-платформенная подписка IAP - как Netflix это делает?

Я создаю службу, которая позволяет пользователям регистрироваться на любом количестве устройств (веб, Android, Roku, iOS, Apple TV), а затем приобретать ежемесячную подписку для просмотра видеоконтента. Подписка обеспечивает доступ ко всему каталогу. У меня есть собственный API управления подписками, который работает на сервере, который я бы хотел использовать в качестве источника правды, чтобы пользователи могли приобрести подписку на своем iPad, войти в приложение на Roku и продолжить просмотр, где они остановились.

В принципе, Netflix.

Вот мои варианты, насколько я могу судить:

  • Автоматическое обновление подписки: это то, что Netflix использует сегодня, но Apple не предоставляет API или любой набор веб-узлов вокруг своей платежной платформы, поэтому я не знаю, как этот вариант может работать. Моя внутренняя служба не имеет понятия, когда Apple автоматически обновляет подписку каждый месяц или если пользователь отменяет свои подписки.

  • Не возобновляемые подписки: пользователи покупают подписку внутри приложение, хотя IAP. После завершения покупки приложение синхронизирует подписка на мою внутреннюю систему. Приложение взаимодействует с моим back-end в любое время, когда требуется проверка прав. Когда пользователи срок действия подписки истекает, приложение должно представить покупку рабочий процесс снова.

  • Импорт отчетов iTunes: не будет работать, потому что это не в реальном времени (тянуть, а не нажимать) и ничего мне не говорит об аннулированных подписках. Я могу генерировать отчеты только о новых подписчиках.

  • Проверка чеков и отправка квитанций на мой сервис: не будет работать, потому что это зависит от пользователя, фактически использующего мое приложение. Пользователи могут теоретически подписываться в моем приложении, переключаться на Roku и никогда не открывать его снова.

  • Пропустите IAP в целом и попросите пользователей подписаться через Интернет.

Я что-то упустил? Мне действительно интересно, как Netflix снимает это.

4b9b3361

Ответ 1

Я знаю, что это устарело, но Apple недавно представила Уведомление об обновлении состояния, которая выполняет то, что OP запросил через webhooks:

  • Настройте Apple для отправки уведомлений на указанную конечную точку. (Малый справочник Apple)
  • Обращайтесь к объекту JSON, который отправлен через HTTP POST из App Store, и подтвердите получение последней квитанции.
  • Обновление/сохранение данных в вашей базе данных.
  • Отвечайте с кодом состояния 200, чтобы сообщить об успешном завершении.

Вы сможете обрабатывать следующие типы уведомлений: INITIAL_BUY, CANCEL, RENEWAL, INTERACTIVE_RENEWAL, DID_CHANGE_RENEWAL_PREFERENCE

В документации, приведенной в ссылке выше, более подробно описывается реализация и типы.

Ответ 2

Для начальной покупки подписки:

  • Пользователь инициирует покупку на iDevice
  • Контакты устройства Apple, Apple выдает квитанцию ​​и отправляет ее обратно на устройство
  • Устройство отправляет квитанцию ​​на мой сервер
  • Сервер подтверждает, что квитанция является законной с помощью API проверки подлинности квитанции Apple
  • После подтверждения квитанции сервер сохраняет его в моей БД
  • Сервер отвечает на приложение, говоря, что все это хорошо

Чтобы синхронизировать сервер с подпиской iTunes:

  • Настройте задание cron для ежедневного получения истекающих квитанций из БД или чего-то типа
  • Подтвердите каждую квитанцию ​​с помощью Apple
  • Apple ответит обновленной версией квитанции, содержащей подробную информацию о том, была ли отменена/обновлена ​​подписка/etc.
  • Сервер заменяет оригинальную квитанцию ​​этой обновленной версией в БД

Теперь, если кто-то войдет в свою учетную запись на Roku или другом устройстве, подписка может быть выполнена, потому что моя БД является источником правды.