サーバーで購入を確認しようとすると、Apple=から2種類の領収書フォーマットが届きます。
違いは何ですか?
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
}
IOS 6では、各IAP(アプリ内購入)トランザクションには独自のレシートがあります(SKPaymentTransaction.transactionReceipt
(StoreKit APIの場合)。この領収書データを検証APIに送信すると、前の応答が返されます。
IOS 7では、Appleが「Grand Unified Receipt」と呼ぶものの使用を開始しました。これは、アプリに1つのレシートがあることを意味しますアプリ自体の購入とIAPに関する情報が含まれています。-[NSBundle appStoreReceiptURL]
APIを使用して、このレシートデータをディスクからロードします(存在しない場合はSKReceiptRefreshRequest
で取得することもできます)。このレシートデータを検証APIに送信すると、後者の応答が返されます。
主な違いは、前者のレシート形式は1つのIAPトランザクションを表し、後者はそれらの配列(およびアプリケーション自体の購入)を表すことです。
詳細は 「領収書を使用してデジタル販売を保護する」WWDC 2013セッション を参照してください。