Есть ли уведомление, которое iOS отправляет для автоматически возобновляемых подписок, когда регулярный платеж обрабатывается и подписка продлевается? Это то, как следует интерпретировать веб-перехватчик RENEWAL?
iOS Webhook / Уведомление о регулярном платеже для автоматически возобновляемых подписок
- См. мой ответ в этом вопросе: возобновляемая подписка"> stackoverflow.com/questions/50947948/ 30.01.2019
Ответы:
Я разговаривал с представителем Apple, и они сказали, что Apple отправляет уведомления только о первоначальной покупке. Последующие обновления должны опрашиваться как обычная транзакция.
RENEWAL фактически отправляется, когда «происходит сбой в обслуживании и восстановление с помощью продукта Apple для повторной попытки выставления счетов».
Это реальный ответ, и его НИГДЕ нет в документации Apple. Я надеюсь, что это поможет другим людям.
Вот что говорится в документации:
Уведомления об обновлении статуса
StatusUpdateNotification — это межсерверная служба уведомлений для автоматически возобновляемых подписок. В уведомлении указывается состояние подписки на момент отправки уведомления.
Чтобы получать актуальную информацию по мере обработки событий, ваше приложение должно подтвердить последнее получение в App Store. Рекомендуется использовать службу уведомления об обновлении статуса вместе с проверкой квитанции, чтобы проверить текущий статус подписки пользователя и предоставить ему услугу. Информацию о проверке получения см. в Руководстве по программированию проверки получения.
Чтобы получать уведомления об обновлении статуса, настройте URL-адрес статуса подписки для своего приложения в iTunes Connect. App Store будет доставлять объекты JSON через HTTP POST на ваш сервер для ключевых событий подписки, перечисленных в таблице 6-3. Ваш сервер отвечает за анализ, интерпретацию и реагирование на все сообщения statusUpdateNotification.
Затем он продолжается ниже, перечисляя условия для уведомления:
INITIAL_BUY Первоначальная покупка подписки. Сохраните last_receipt на своем сервере в качестве токена, чтобы в любое время проверить статус подписки пользователя, проверив его в App Store.
ОТМЕНА Подписка была отменена службой поддержки Apple. Проверьте дату отмены, чтобы узнать дату и время отмены подписки.
- ПРОДЛЕНИЕ Автоматическое продление подписки с истекшим сроком действия прошло успешно. Проверьте дату истечения срока действия подписки, чтобы определить дату и время следующего продления.
- INTERACTIVE_RENEWAL Клиент продлил подписку в интерактивном режиме после истечения срока ее действия либо с помощью интерфейса вашего приложения, либо в App Store в настройках учетной записи. Услуга становится доступной немедленно.
- DID_CHANGE_RENEWAL_PREFERENCE Клиент изменил план, который вступит в силу при следующем продлении подписки. Текущий активный план не затрагивается.
Итак, чтобы ответить на ваш вопрос: да, успешное продление означает, что Apple получила платеж от вашего пользователя (и что вам также будет заплачено).
Однако он не отправляется на iOS, а только на сервер. Вам необходимо зарегистрировать URL-адрес в Apple, по которому они затем будут размещать эти уведомления. Затем ваш сервер и экземпляр приложения iOS должны взаимодействовать через ваш веб-API, чтобы приложение уведомлялось.
INITIAL_BUY
никогда не приходит. 28.02.2019 Да, согласно документации, RENEWAL отправляется после автоматического продления подписки с истекшим сроком действия (обратите внимание, что это отличается от INTERACTIVE_RENEWAL тем, что RENEWAL запускается автоматически по истечении срока действия автоматического продления подписки, а не действия пользователя).
Однако среда Sandbox немного отличается (см. «Среда тестирования» в документация):
Поведение автоматически возобновляемых подписок различается в среде тестирования и рабочей среде.
В тестовой среде продление подписки происходит в ускоренном режиме, а автоматически продлеваемые подписки обновляются не более шести раз в день. Это позволяет вам проверить, как ваше приложение обрабатывает продление подписки, истечение срока действия подписки и историю подписки, которая включает пробелы. См. Тестирование автоматически возобновляемых подписок в Руководстве по настройке покупок в приложении для iTunes Connect, чтобы узнать о продолжительности подписки для тестирования.
Из-за ускоренного истечения срока действия и скорости продления подписка может истечь до того, как система попытается продлить подписку, что приведет к небольшому промежутку в периоде подписки. Такие упущения также возможны в рабочей среде по разным причинам — убедитесь, что ваше приложение корректно их обрабатывает.
Таким образом, для каждого productId, который у вас есть, он будет автоматически обновляться до шести раз в день в песочнице. После этого вы перестанете получать уведомления RENEWAL от Apple.
Вы можете использовать следующие шаги для настройки уведомлений между серверами:
- Войдите в App Store Connect и выберите свое приложение.
- Перейдите в раздел «Информация о приложении».
- Вставьте URL-адрес API в поле URL-адрес для уведомлений сервера App Store.
- Нажмите Сохранить в верхней части страницы.