Необходимо понимать квитанцию ​​о покупке iOS InApp

Я копаюсь в проверке покупки в приложении iOS (на стороне сервера) и очень сильно запутался в полях квитанции, возвращаемых сервером проверки Apple. Доступная документация здесь не очень понятно (по крайней мере, для меня)

Итак, вот реальная (запутанная) квитанция о покупке в приложении, возвращенная сервером проверки Apple.

{
  "receipt": {
    "receipt_type": "Production",
    "adam_id": XXXXXXX,
    "app_item_id": XXXXXXXXX,
    "bundle_id": "com.XXXXX.XXXXX",
    "application_version": "XXXXXXXXX",
    "download_id": XXXXXXXXXXXX,
    "version_external_identifier": XXXXXXXXXXX,
    "receipt_creation_date": "2019-10-15 14:01:41 Etc/GMT",
    "receipt_creation_date_ms": "1571148101000",
    "receipt_creation_date_pst": "2019-10-15 07:01:41 America/Los_Angeles",
    "request_date": "2019-10-15 14:04:20 Etc/GMT",
    "request_date_ms": "1571148260390",
    "request_date_pst": "2019-10-15 07:04:20 America/Los_Angeles",
    "original_purchase_date": "2018-11-27 18:28:48 Etc/GMT",
    "original_purchase_date_ms": "1543343328000",
    "original_purchase_date_pst": "2018-11-27 10:28:48 America/Los_Angeles",
    "original_application_version": "XXXXXXXXX",
    "in_app": [
      {
        "quantity": "1",
        "product_id": "com.XXXXXXXXXX.XXXXX.XXXXXX",
        "transaction_id": "XXXXXXXXXXX",
        "original_transaction_id": "XXXXXXXXXX",
        "purchase_date": "2019-10-15 14:01:41 Etc/GMT",
        "purchase_date_ms": "1571148101000",
        "purchase_date_pst": "2019-10-15 07:01:41 America/Los_Angeles",
        "original_purchase_date": "2019-10-15 14:01:41 Etc/GMT",
        "original_purchase_date_ms": "1571148101000",
        "original_purchase_date_pst": "2019-10-15 07:01:41 America/Los_Angeles",
        "is_trial_period": "false"
      }
    ]
  },
  "status": 0,
  "environment": "Production"
}

Итак, мои вопросы:

  1. Поля, начинающиеся с «original_purchase_date», представляют дату и время, но почему они имеют разные значения в двух частях квитанции?
  2. В части квитанции in_app могут быть разные значения полей, начинающихся с «purchase_date», и значения полей, начинающихся с «original_purchase_date»? И если да, то в каком случае?
  3. Содержит ли поле «application_version» значение текущей опубликованной версии сборки приложения, поскольку поле «original_application_version», согласно документации, представляет версию сборки приложения, которое пользователь использовал для совершения покупки?

Большое спасибо за вашу помощь и ответы.


person R.E.B Hernandez    schedule 15.10.2019    source источник


Ответы (1)


РЭБ Эрнандес!

  1. original_purchase_date внутри in_app — это время совершения покупки в приложении, а за пределами этого массива — дата первой установки приложения.
  2. Если вы используете нерасходуемые и непродлеваемые подписки, то purchase_date будет таким же, как original_purchase_date. Однако, если вы используете автоматически возобновляемые подписки, вам следует проверить массив latest_receipt_info вместо in_app. А в случае подписки original_purchase_date будет представлять только дату первой транзакции.
  3. Да, application_version — это текущая версия приложения на устройстве. original_application_version — это версия приложения, которую изначально приобрел пользователь.

Вот документация ссылка

person apphud    schedule 15.10.2019
comment
Спасибо за ваш ответ ! И отдельное спасибо за эту ссылку, я не знал, что использую заархивированную версию документации iOS! - person R.E.B Hernandez; 15.10.2019