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

Проверка на стороне сервера iOS - типы квитанций

Я получаю 2 вида форматов получения от Apple, когда я пытаюсь проверить покупки на сервере.

Любая идея какая разница?

1)

  content: {
    status: 0,
    receipt: {
      item_id: "662554154",
      original_purchase_date: "2012-10-12 08:32:12 Etc/GMT",
      purchase_date_pst: "2012-10-12 01:32:12 America/Los_Angeles",
      purchase_date: "2012-10-12 08:32:12 Etc/GMT",
      product_id: "com.example.mygame.tool1",
      bid: "com.example.mygame",
      version_external_identifier: "5647854",
      bvrs: "1.0",
      quantity: "1",
      transaction_id: "8844567822225544",
      app_item_id: "659563252",
      original_purchase_date_ms: "1350030732000",
      original_transaction_id: "8844567822225544",
      purchase_date_ms: "1350030732000",
      original_purchase_date_pst: "2012-10-12 01:32:12 America/Los_Angeles"
    }
  }

2)

content: {
  receipt: {
    in_app: [
      {
        is_trial_period: "false",
        original_purchase_date_pst: "2013-10-09 20:55:27 America/Los_Angeles",
        original_purchase_date_ms: "1386571707000",
        original_purchase_date: "2013-10-09 04:55:27 Etc/GMT",
        purchase_date_pst: "2013-10-09 20:55:27 America/Los_Angeles",
        purchase_date_ms: "1386571707000",
        purchase_date: "2013-10-09 04:55:27 Etc/GMT",
        original_transaction_id: "654888452251325",
        transaction_id: "654888452251325",
        product_id: "com.example.mygame.tool1",
        quantity: "1"
      }
    ],
    original_application_version: "1.0",
    original_purchase_date_pst: "2013-10-09 20:55:27 America/Los_Angeles",
    original_purchase_date_ms: "1386569706000",
    original_purchase_date: "2013-10-09 04:55:27 Etc/GMT",
    request_date_pst: "2013-10-09 20:55:27 America/Los_Angeles",
    request_date_ms: "1386571710087",
    request_date: "2013-10-09 04:55:27 Etc/GMT",
    download_id: 215425636588954,
    application_version: "1.0",
    bundle_id: "com.example.mygame",
    adam_id: 654225311,
    receipt_type: "Sandbox"
  },
  environment: "Sandbox",
  status: 0
}
4b9b3361

Ответ 1

В iOS 6 каждая транзакция IAP (покупка в приложении) будет иметь собственную квитанцию ​​ (SKPaymentTransaction.transactionReceipt в StoreKit API). Когда вы отправляете данные квитанции в их API проверки, вы получаете прежний ответ.

В iOS 7 Apple начала использовать то, что они называют "Grand Unified Receipt". Это означает, что приложения имеют одну квитанцию ​​, которая содержит информацию о покупке самого приложения, а также IAP. Вы используете API -[NSBundle appStoreReceiptURL] для загрузки данных квитанции с диска (и, возможно, SKReceiptRefreshRequest, чтобы получить его, если он не существует). Когда вы отправляете данные квитанции в их API проверки, вы получаете последний ответ.

Основное отличие состоит в том, что прежний формат получения представляет собой одну транзакцию IAP, а последняя представляет собой массив из них (а также покупку самого приложения).

Дополнительную информацию см. в "Использование квитанций для защиты ваших цифровых продаж" в разделе WWDC 2013.