Подтвердить что ты не робот

Использовать 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?

4b9b3361

Ответ 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 в производстве.