web-dev-qa-db-ja.com

自動更新可能なiOS 7スタイルのトランザクションの最新領収書を取得するには、in_appまたはlatest_receipt_infoを使用しますか?

自動更新可能なアプリ内購入がサーバー側(デバイス上ではない)で期限切れになっていないことを確認しようとしています。

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

49
Chris

latest_receipt_infoフィールドのみが最新の更新された領収書を返すことを明確にしたかっただけです。これは、Appleから実際に戻ってきたことに基づいています。

関連ドキュメントは 21ページ にあります

latest_receiptおよびlatest_receipt_infoフィールドは「自動更新可能なサブスクリプションのiOS 6スタイルのトランザクションレシートに対してのみ返される」と記載されていますが、iOS 7レシートで返されていることがわかりました。 receiptオブジェクト内のin_appフィールドもほぼ同一のデータで返されますが、自動更新の場合に気になる最新のレシート情報は含まれていません。

11
Samir Uppaluru

自動更新可能なサブスクリプションの有効期限が切れていないことを確認するには、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スタイルのアプリの領収書の場合、このキーの値はすべてのアプリ内購入トランザクションを含む配列です。これにより、アプリによって終了とマークされた消耗品のトランザクションは除外されます。

ソース

10
jox

This は、これに関する最新かつ最も明確な議論です。お役に立てれば。

3

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

1
Kevin King