Использовать in_app или last_receipt_info для получения последней квитанции для автоматических возобновляемых транзакций в стиле iOS 7?
Я пытаюсь проверить, что автоматическая возобновляемая покупка в приложении не истекла на стороне сервера (а не на устройстве).
Я использую Apple Grand Unified Receipt (транзакции типа iOS 7). Ответ, возвращаемый Apple, содержит элементы in_app
и latest_receipt_info
с массивом квитанций. Элемент in_app
JSON содержит МЕНЬШЕ квитанции, чем latest_receipt_info
. Я ожидал, что оба элемента будут содержать одинаковое количество или квитанции.
Кроме того, я ожидал, что элемент in_app
будет содержать ВСЕ квитанции. Однако, похоже, что latest_receipt_info
действительно содержит все квитанции. Документация Apple, похоже, предлагает использовать in_app
для поиска последней квитанции.
Я удивлен, увидев latest_receipt_info
, потому что Apple Documentation утверждает, что этот элемент
Msgstr "Только возвращается для квитанций транзакций типа iOS 6 для автоматически возобновляемых подписчиков". (не iOS 7 +).
Какой элемент JSON следует перебирать, чтобы найти самую последнюю квитанцию для транзакций с автоматическим возобновлением iOS 7: in_app
или latest_receipt_info
?
Ответы
Ответ 1
Просто хочу пояснить, что только поле latest_receipt_info
возвращает последнюю обновленную квитанцию. Это основано на том, что мы действительно получаем от Apple.
Соответствующая документация находится здесь на стр. 21.
Хотя он утверждает, что поля latest_receipt
и latest_receipt_info
являются "Возвращены только для транзакций типа iOS 6 для автоматического возобновления
подписки ", мы обнаружили, что они возвращаются в наших квитанциях iOS 7. Поле in_app
внутри объекта receipt
также возвращается с почти идентичными данными, но не содержит самую последнюю информацию о квитанции, которая является вас интересует в случае автообновления.
Ответ 2
Это является самым последним и самым ясным обсуждением этого вопроса. Надеюсь, это поможет.
Ответ 3
Чтобы проверить, что срок действия автоматической возобновляемой подписки не истек, проверьте элемент latest_receipt_info
.
Это то, что в настоящее время (2017-08-09) официально зарегистрировано на элементах in_app
и latest_receipt_info
:
in_app
В файле JSON значение этого ключа представляет собой массив, содержащий все покупки в приложении, основанные на транзакциях покупки в приложении присутствуют во входных данных-64 приема-данных. Для квитанций, содержащих автоматически возобновляемые подписки, проверьте значение last_receipt_info, чтобы получить статус последнего обновления.
(источник)
latest_receipt_info
Только возвращается для квитанций, содержащих автоматически возобновляемые подписки. Для квитанций транзакций типа iOS 6 это представление JSON квитанции о последнем обновлении. Для приложения стиля iOS 7 квитанции, значение этого ключа представляет собой массив, содержащий все входящие приложения покупки. Это исключает транзакции для расходных материалов продукт, отмеченный как завершенный вашим приложением.
(источник)
Ответ 4
Поля приема (документы Apple)
В приведенной выше документации довольно ясно использовать in_app
.
Обратите внимание, что строка "Ключи, не описанные ниже, зарезервированы для использования Apple и должны быть проигнорированы вашим приложением" в документации.
Поэтому, даже если декодированный квитанция имеет latest_receipt_info
, мы должны игнорировать это.
Но я согласен, документации очень не хватает, и это заставляет меня нервничать.
Дайте мне знать, как ваш опыт с использованием проверки поступления в стиле iOS 7 в производстве.