Кроссплатформенные подписки IAP на iTunes - как это делает Netflix?

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

В основном, Netflix.

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

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

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

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

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

  5. В целом пропустите IAP и потребуйте, чтобы пользователи подписывались через Интернет.

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

2 ответа

Решение

Я знаю, что это старое, но Apple недавно представила уведомления об обновлении статуса, которые выполняют то, что ОП запрашивало через веб-крючки:

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

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

Документация по ссылке выше объясняет реализацию и типы более подробно.

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

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

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

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

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

Другие вопросы по тегам