Кроссплатформенные подписки IAP на iTunes - как это делает Netflix?
Я создаю сервис, который позволяет пользователям регистрироваться на любом количестве устройств (веб, Android, Roku, iOS, Apple TV), а затем приобретать ежемесячную подписку для просмотра видеоконтента. Подписка обеспечивает доступ ко всему каталогу. У меня есть собственный API управления подпиской, работающий на сервере, который я хотел бы использовать в качестве источника правды, чтобы пользователи могли приобрести подписку на своем iPad, войти в приложение на Roku и продолжить смотреть, где они остановились.
В основном, Netflix.
Вот мои варианты, насколько я могу сказать:
Автообновление подписок: это то, что Netflix использует сегодня, но Apple не предоставляет API или какой-либо набор веб-хуков вокруг своей платежной платформы, поэтому я не знаю, как этот вариант может работать. Моя внутренняя служба не будет знать, когда Apple автоматически продлевает подписку каждый месяц или пользователь отменяет свои подписки.
Невозобновляющиеся подписки: пользователи приобретают подписку внутри приложения через IAP. После завершения покупки приложение синхронизирует подписку с моей серверной системой. Приложение взаимодействует с моим бэкэндом в любое время, когда требуется проверка прав. Когда срок действия подписки пользователя истекает, приложение должно снова представить рабочий процесс покупки.
Импортируйте отчеты iTunes: не будет работать, потому что это не в режиме реального времени (тянуть, а не нажимать) и ничего не говорит мне об отмененных подписках. Я могу генерировать отчеты только о новых подписчиках.
Проверка получения и отправка квитанций в мой сервис: не сработает, потому что это зависит от пользователя, который на самом деле использует мое приложение. Теоретически пользователи могут подписаться на мое приложение, переключиться на Roku и больше никогда не открывать его.
В целом пропустите IAP и потребуйте, чтобы пользователи подписывались через Интернет.
Я что-то пропустил? Мне действительно любопытно, как Netflix справляется с этим.
2 ответа
Я знаю, что это старое, но Apple недавно представила уведомления об обновлении статуса, которые выполняют то, что ОП запрашивало через веб-крючки:
- Настройте Apple для отправки уведомлений на указанную конечную точку. ( Небольшое руководство Apple)
- Обработайте объект JSON, отправленный через HTTP POST из App Store, и проверьте последнюю квитанцию.
- Обновить / сохранить данные в вашей базе данных.
- Ответить с
200
код состояния, чтобы сообщить об успехе.
Вы сможете обрабатывать следующие типы уведомлений: INITIAL_BUY
, CANCEL
, RENEWAL
, INTERACTIVE_RENEWAL
, DID_CHANGE_RENEWAL_PREFERENCE
Документация по ссылке выше объясняет реализацию и типы более подробно.
Для первоначальной покупки по подписке:
- Пользователь инициирует покупку на iDevice
- Устройство связывается с Apple, Apple выдает квитанцию и отправляет ее обратно на устройство
- Устройство отправляет квитанцию на мой сервер
- Сервер подтверждает, что квитанция является законной через API проверки квитанции Apple.
- Как только квитанция подтверждена, сервер сохраняет ее в моей БД
- Сервер отвечает на приложение, говоря, что это все хорошо
Чтобы синхронизировать сервер с подпиской iTunes:
- Настроить задание cron для ежедневного получения устаревших квитанций из БД.
- Подтвердите каждую квитанцию с Apple
- Apple ответит обновленной версией квитанции, содержащей подробности относительно того, была ли подписка отменена / продлена / и т.д.
- Сервер заменяет исходную квитанцию этой обновленной версией в БД
Теперь, если кто-то входит в свою учетную запись на Roku или другом устройстве, подписка может быть принята, потому что моя БД является источником правды.