自動再生可能な製品を作成し、サンドボックス環境でテストしました。私の質問は、製品を 1 つ購入したことです。同じ Apple アカウントで同じ製品を購入しようとすると、予想どおり既に購入済みとしてアラートが表示されますが、更新されたトランザクションで失敗状態を実行しているため、そのトランザクションの詳細を取得できませんでした。初期トランザクションで取得した購入の詳細 (少なくとも元のレシート ID) を取得する方法。
3 に答える
ユーザーが購入したトランザクションの詳細を取得するには、次の 2 つの方法があります。
- 領収書を更新
- 完了した取引を復元する
領収書の更新とトランザクションの復元の違いの詳細については、次を確認してください。- SKReceiptRefreshRequest と restoreCompletedTransactions の比較
単に、
- レシートを更新すると、App Store にレシートの最新のコピーが要求されます。
- 完了したトランザクションを復元すると、ユーザーが行った完了したトランザクションごとに新しいトランザクションが作成され、基本的にトランザクション キュー オブザーバーの履歴が再生されます。
質問: 初期トランザクションで取得した購入の詳細 (少なくとも元のレシート ID) を取得するにはどうすればよいですか?
回答:ユーザー トランザクションを検証するために、ユーザー SKReceiptRefreshRequest よりも毎回、元のレシート ID でユーザーを検証する場合。
注: RestoreCompletedTransactions でユーザーを検証すると、いつでも transactionID が変更されます。restoreTransaction 中に変更されるパラメーターのリストを見つけます: https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1
購入した製品をアプリに復元するメカニズムを実装する必要があります。
購入した製品の復元とは何かについての詳細は、購入した製品の復元を参照してください。
実装部分に到達するには、このチュートリアルに従うことができます: In App Purchase チュートリアル
チュートリアルの後半では、復元購入の実装について説明します。
App Store で領収書を検証することにより、どの製品 ID が既に購入されているかを確認できます。購入した製品を見つけるために使用できる Cocoapods ライブラリがあります。
- SwiftyStoreKit
- DHAppleReceiptParser
- IAP検証
お役に立てば幸いです。