Покупка в приложении для уведомлений о подписке на автоматическое обновление
Я читал различные потоки в подписках на автоматическое продление подписки на приложения, и я думаю, что собрал большую часть необходимой мне информации, но есть несколько недостающих частей. Я надеюсь, кто-то может мне помочь.
Ситуация:
У меня есть различные пакеты подписки, на которые пользователь может подписаться (например, пакет A за £ 1 в месяц, пакет B за £ 2 в месяц и т.д.). Я сохраняю информацию о подписке пользователя в моей базе данных. Когда пользователь входит в систему, я проверяю, какой пакет он включен, и если он истек или нет. Мой сайт, андроид и iOS используют одну и ту же базу данных, поэтому этот подход имеет смысл.
Подписывание пользователей через покупку через приложение кажется достаточно простым. Я проверяю payQueue, и как только платеж будет очищен, я могу обновить свою базу данных.
Мои вопросы:
1) Мое понимание заключается в том, что пользователь может использовать iTunes для управления своей подпиской. Скажем, они заходят в iTunes и отменяют свою подписку, как я могу получать уведомления, чтобы обновить свою базу данных? Нужен ли мне демон, который проверяет истекшие подписки, чтобы узнать, обновлен ли пользователь?
2) Если пользователь хочет обновить свою подписку из пакета A в пакет B, как мне обрабатывать цены? Скажем, 1 января они покупают пакет A, я беру их в размере 1,00 фунтов стерлингов и устанавливаю дату истечения срока действия до 31 января. 15 января они хотят перейти на пакет B через покупку через приложение. В идеале я бы поручил им 2 фунта за пакет B минус 0,50 доллара за кредит, который у них есть для пакета A, и установил новую дату истечения срока действия 14-го февраля. Тем не менее, Apple заставляет меня связывать каждый пакет с ценой уровня. Как я могу справиться с этим? Я не хочу, чтобы пользователь дождался конца месяца, чтобы разместить их в пакете более высокого уровня... если они обновлены в середине месяца, это означает, что они хотят, чтобы новый пакет контента B доставлял их немедленно.
Любая помощь оценивается!
Спасибо!
Ответы
Ответ 1
1) Да, вам нужно будет повторить проверку квитанции в "Руководство по проверке чеков" в документации. Они упоминают некоторые важные ключи:
-
status
- 0, если квитанция действительна или код ошибки
-
receipt
- ответ JSON на получение
-
latest_receipt
(только для автоматического возобновления) - базовая 64-кодированная квитанция для последнего обновления
-
latest_receipt_info
- версия JSON latest_receipt
С этой информацией при совершении покупки отправьте квитанцию на ваш сервер для проверки, бэкэнд сохранит квитанцию в БД и проверит со статусом = 0, что это действительная квитанция. Оттуда, через каждые x
дней вы можете проверить эту квитанцию с заданием хронометра, демоном и т.д. И повторить проверку. Каждый ответ будет иметь latest_receipt_info
, который вам теперь нужно сохранить в вашей БД, чтобы у вас была современная квитанция для следующей проверки в x
дней. Таким образом, у вас всегда будет самая последняя квитанция. Нет мгновенного уведомления о том, когда пользователь отменяет подписку, но с этим вы будете знать каждый x
дней, если у них еще есть подписка.
2) Ценообразование, подобное этому, к сожалению, невозможно. Он не предназначен для того, чтобы пользователь "обновлял" подписки - каждая подписка имеет доступ к своему собственному эксклюзивному контенту на момент написания этой статьи. Однако, если клиент отправляет жалобы и жалуется на это, вы можете запросить их имя пользователя и выяснить в своей БД, если этот пользователь действительно обновил средний месяц и возместил их соответствующим образом. Очень старая школа, и это невозможно для большой базы пользователей, но, надеюсь, у вас их не будет, и они могут быть счастливы.
Ответ 2
Отвечая на вопрос 1, вы можете проверить подписные квитанции так же, как и другие IAP, но вам нужно периодически проверять его, чтобы узнать, истекло ли срок действия подписки (проверка сообщит вам, истекло ли это).
Более подробную информацию о документах Apple можно найти здесь:
http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/RenewableSubscriptions/RenewableSubscriptions.html
Ответ 3
EDITED
Во втором вопросе система автоматического возобновления подписки Apple технически не предлагает обновляемые планы между различными продуктами.
Каждая подписка является самостоятельным продуктом, и пользователь может автоматически включать/отключать подписки с помощью Менеджера подписки в iTunes Store.
Однако, если пакет A и пакет B содержат то же содержимое, что и разная продолжительность, чем указано ajay_nasa, вы можете создать один продукт автоматической подписки с разными варианты продолжительности. Если пользователь находится на подписке на 1 месяц, а затем пользователь пытается перейти на 2-месячную подписку, у них появится следующее сообщение об ошибке с просьбой перейти в диспетчер подписки на App Store
![введите описание изображения здесь]()
Таким образом, в основном ТОЛЬКО место, на которое пользователь может фактически изменить длину подписки, находится в App Store. Независимо от того, решит ли Apple проголосовать за оставшуюся часть старой подписки или просто добавить ее к текущему, действительно зависит от Apple. Вы должны убедиться, что у пользователя есть доступ к подписке до тех пор, пока он активен, прочитав поле Оригинальная дата покупки и Дата истечения срока подписки из каждой записи квитанции и определяя начало и даты окончания подписки.
Ответ 4
Фактически, автоматическая система подписки Apple делает предлагать обновляемые планы.
Чтобы достичь этого, мы просто должны добавить продолжительность в существующую подписку на автообновление. Каждая автоматическая возобновляемая подписка может быть семейством подписей, поэтому всякий раз, когда разработчик хочет добиться обновления в подписке, он должен добавить продолжительность в существующую автообновляемую подписку с различным идентификатором продукта.
Всякий раз, когда пользователь обновляет свой план в течение месяца, его план обновления будет автоматически работать со следующего месяца.
Ответ 5
Отвечая на ваш вопроС# 1
Недавно Apple запустила функцию включения уведомления о сервере при обновлении подписки. Однако подписка должна быть в приложении.
Смотрите ссылки, приведенные ниже, для справки:
https://help.apple.com/itunes-connect/developer/#/dev0067a330b
&
https://itunespartner.apple.com/en/apps/news/45333106?sc_cid=ITC-AP-ENREC
Ответ 6
Нам нужно проверить дату отмены, предоставленную в квитанции.