Подписка iOS: как обрабатывать уведомление INTERACTIVE_RENEWAL через 10 минут после INITIAL_BUY?

Мой сервер получил INTERACTIVE_RENEWAL уведомление о (неподдерживаемой) 6-месячной подписке из iOS App Store всего через 10 минут после получения INITIAL_BUY уведомления о 3-месячной подписке.

Как с этим справиться?


Долгая история:

Месяц назад я выпустил новую версию своего приложения с автоматическим продлением подписки. Я создал различные продукты по подписке, например.

  • com.my.app.subscripton.3 месяца
  • com.my.app.subscripton.6months
  • com.my.app.subscripton.12 месяцев

Окончательная версия приложения, выпущенная в магазин, предлагает подписку только на 3 месяца и 12 месяцев. Идентификатор подписки на 6 месяцев все еще существует в коде, но нет элемента пользовательского интерфейса для покупки этой подписки (проверено дважды!)

Теперь мой сервер получил следующие App Store Update Notification сообщения в течение 10 минут:

  • 02:00 - INITIAL_BUY продукта com.my.app.subscripton.3months. Истекает 2020-01-28 02:00:00
  • 02:10 - INTERACTIVE_RENEWAL товара com.my.app.subscripton.6months. Истекает 2020-04-28 02:10:00

Как мне поступить в этом случае? Очевидно, что нет никакого смысла в том, что трехмесячная подписка продлевается через 10 минут...

Согласно документам INTERACTIVE_RENEWAL означает:

Указывает, что клиент продлил подписку в интерактивном режиме либо с помощью интерфейса вашего приложения, либо в App Store в настройках учетной записи. Сделайте услугу доступной немедленно.

Поскольку пользовательский интерфейс приложения не предоставляет возможность приобрести подписку на 6 месяцев, это должно быть сделано account settings. Но где найти функцию покупки в настройках аккаунта?

Даже если такая функция существует где-то в настройках, как 3-месячная подписка может быть продлена на 6 месяцев всего за 10 минут?


EDIT: информация из уведомления верна. Я повторно проверил квитанцию, и магазин ответил последней информацией о квитанции, которая включает товары IAP (подписки на 3 и 6 месяцев), приобретенные в течение 10 минут.

Так что информация верна, но явно не имеет смысла...


person Andrei Herford    schedule 28.10.2019    source источник


Ответы (2)


На странице управления подпиской в App Store пользователи смогут увидеть все параметры продукта. для группы подписки, на которую они подписаны (см. изображение).

Более опытные пользователи iOS нередко переходят на эту страницу вскоре после покупки подписки, чтобы узнать, есть ли доступный вариант по более низкой цене.

Что касается обработки этих событий, что именно вы пытаетесь сделать? Все, что вам действительно нужно, чтобы определить, подписан ли кто-то, это product_id и expiration_date. Если возможно, вы можете где-нибудь записать все тело события (на случай, если оно понадобится вам позже), а затем обновить свою пользовательскую запись любыми значениями, которые вам нужны для события. Это могут быть:

  • Уровень доступа (большинство приложений имеют один уровень доступа, например «премиум»)
  • Идантификационный номер продукта
  • Срок годности
  • Автообновление статуса

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

введите здесь описание изображения

person enc_life    schedule 28.10.2019

Это снова Апхуд. Мы используем Apple Notifications только для запуска дополнительной проверки квитанции. Как поступить в вашем случае? Сделайте проверку квитанции и проверьте, активна ли подписка.

Эти уведомления только сообщают вам, что что-то изменилось в квитанции пользователя. Вы должны вручную проверить, что изменилось, и обновить статус пользовательской подписки после завершения проверки получения.

Подробнее об уведомлениях: https://blog.apphud.com/subscriptions-notifications/

person apphud    schedule 28.10.2019
comment
Спасибо, я уже перепроверил квитанцию, и информация та же: две покупки, которые теперь имеют смысл. Таким образом, вопрос тот же: как справиться с этим и что могло вызвать это? - person Andrei Herford; 28.10.2019