自動更新可能なアプリ内購入がサーバー側(デバイス上ではない)で期限切れになっていないことを確認しようとしています。
AppleのGrand Unified Receipt(iOS 7スタイルのトランザクション)を使用しています。 Appleが含むin_app
およびlatest_receipt_info
領収書の配列を持つ要素。 in_app
JSON要素には[〜#〜] less [〜#〜]領収書はlatest_receipt_info
。両方の要素に同じ番号または領収書が含まれると予想していました。
また、in_app
要素には、すべての領収書が含まれます。ただし、latest_receipt_info
は実際にすべての領収書を含んでいます。 Appleドキュメントではin_app
最新の領収書を見つけるため。
latest_receipt_info
Appleのドキュメントには、この要素は「自動更新可能なサブスクリプションのiOS 6スタイルのトランザクションレシートに対してのみ返される」と記載されているためです。」 。
自動更新可能なiOS 7スタイルのトランザクションの最新の領収書を見つけるために、どのJSON要素を反復する必要があります:in_app
またはlatest_receipt_info
?
latest_receipt_info
フィールドのみが最新の更新された領収書を返すことを明確にしたかっただけです。これは、Appleから実際に戻ってきたことに基づいています。
関連ドキュメントは 21ページ にあります
latest_receipt
およびlatest_receipt_info
フィールドは「自動更新可能なサブスクリプションのiOS 6スタイルのトランザクションレシートに対してのみ返される」と記載されていますが、iOS 7レシートで返されていることがわかりました。 receipt
オブジェクト内のin_app
フィールドもほぼ同一のデータで返されますが、自動更新の場合に気になる最新のレシート情報は含まれていません。
自動更新可能なサブスクリプションの有効期限が切れていないことを確認するには、latest_receipt_info
要素を確認します。
これは、現在(2017-08-09)in_app
およびlatest_receipt_info
要素について公式に文書化されています:
in_app
JSONファイルでは、このキーの値は、入力base-64領収書データに存在するアプリ内購入トランザクションに基づくすべてのアプリ内購入領収書を含む配列です。自動更新可能なサブスクリプションを含む領収書の場合、latest_receipt_infoキーの値をチェックして、最新の更新のステータスを取得します。
( ソース )
latest_receipt_info
自動更新可能なサブスクリプションを含む領収書に対してのみ返されます。 iOS 6スタイルのトランザクション領収書の場合、これは最新の更新の領収書のJSON表現です。 iOS 7スタイルのアプリの領収書の場合、このキーの値はすべてのアプリ内購入トランザクションを含む配列です。これにより、アプリによって終了とマークされた消耗品のトランザクションは除外されます。
( ソース )
This は、これに関する最新かつ最も明確な議論です。お役に立てれば。
Babken Vardanyanは、複数の回答スレッドで、latest_receipt_infoが欠落している場合があると述べました。このスレッドの領収書で私が見た興味深いことの1つ https://forums.developer.Apple.com/thread/922 は、latest_receipt_infoとin_appの違いです。 diffを実行すると、チェーンの最初のレシートが欠落していることに気付きました(is_trial_period = trueを含む)。同等のアプリ内レシートは生成されませんでした。
ドキュメントにリンクされているとおり: https://developer.Apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//Apple_ref/doc/uid/TP40010573-CH104-SW4 latest_receipt_infoを「iOS 7スタイルアプリの領収書の場合、このキーの値はすべてのアプリ内購入トランザクションを含む配列」として使用するように指示します。
サブスクリプションに関しては、in_appは使用せず、latest_receipt_infoのみを使用してください。
https://www.revenuecat.com/2018/09/24/Apple-subscription-notifications-are-almost-useless は、cancel_dateのようなEdgeケースを対象とします。これでApple開発者フォーラムのスレッド: https://forums.developer.Apple.com/thread/9667