XCode 16.2 日本語化計画:
顧客があなたのアプリ内で製品を購入したことを示す情報。
あなたのアプリでサブスクリプション提供コードをサポート
(Supporting subscription offer codes in your app)
あなたのアプリで再獲得提供をサポート
(Supporting win-back offers in your app)
サンドボックス環境での再獲得提供のテスト
(Testing win-back offers in the sandbox environment)
アプリ内購入用の StoreKit API の選択
(Choosing a StoreKit API for In-App Purchases)
transaction (取引) は、成功したアプリ内購入を表します。App Store は、顧客がアプリ内購入製品を購入したり、サブスクリプションを更新したりするたびに取引を生成します。現在の購入を表す取引ごとに、あなたのアプリは購入したコンテンツまたはサービスのロックを解除し、取引を終了します。
Transaction 型を使用して、以下の取引関連のタスクを実行します。
あなたのアプリは取引オブジェクトを作成しません。代わりに、StoreKit は、ユーザが初めてアプリを起動したときなど、最新の取引を自動的にあなたのアプリで利用できるようにします。
取引にアクセスするには、いくつかの方法があります。
取引情報の最も重要な用途は、顧客がどのアプリ内購入に有料アクセスしたかを判断し、あなたのアプリでコンテンツやサービスのロックを解除できるようにすることです。currentEntitlements API は、あなたのアプリ内の顧客のすべての有料コンテンツのロックを解除するために必要な情報を提供します。currentEntitlements を使用して、非消費型アプリ内購入や現在アクティブなサブスクリプションなど、顧客が現在権利を持つすべての製品の取引のリストを取得します。
App Store は、JWS 形式の取引情報を暗号で署名します。StoreKit は署名された情報を自動的に検証し、VerificationResult に包み込んで返します。VerificationResult が Transaction 値を包み込む場合、jwsRepresentation プロパティに生の JWS 文字列が提供されます。VerificationResult.verified(_:) を通じて取引を取得した場合、情報は検証に合格しています。VerificationResult.unverified(_:_:) を通じて取得した場合、情報は StoreKit の自動検証に合格していません。あなたのアプリは、Transaction プロパティ 内の取引情報にすぐにアクセスできます。
デバイス上であなた独自の検証を実行するには、検証結果の jwsRepresentation 文字列を使用し、提供されている便利なプロパティ headerData、payloadData、signatureData を使用します。制御とセキュリティを強化するには、jwsRepresentation をあなたのサーバに送信して検証します。検証を実装するには、App Store Server Library の使用を検討してください。このライブラリは、ライブラリがサポートする各言語で、verifyAndDecodeTransaction 関数と verifyAndDecodeRenewalInfo 関数を提供します。詳細については、App Store サーバー ライブラリを使用して実装を簡素化する を参照してください。
StoreKit が取引を検証済みとして返した場合、その取引はデバイスに対して有効です。デバイスに対してあなた独自の検証を実行する方法については、deviceVerification を参照してください。
JWS の詳細については、IETF RFC 7515 仕様 を参照してください。
顧客が行うすべてのアプリ内購入は、この取引 API と、アプリ内購入用のオリジナル API を使用したレシートで、以下のようにあなたのアプリに同じように提供されます。
  Transaction properties
ID、購入日と取り消し日、詳細、ステータス、オファーの詳細など、トランザクション (取引) のプロパティ。
アプリのダウンロード取引の一意の ID。
static var updates: Transaction.Transactions
システムがアプリ外部または他のデバイスで発生する取引を作成または更新するときに取引を発行する非同期シーケンス。
取引の非同期シーケンス。
static func latest(for: String) async -> VerificationResult<Transaction>?
アプリ内購入に関する顧客の最新の取引を取得します。
static var all: Transaction.Transactions
あなたのアプリのすべての顧客の取引を発行するシーケンス。
static var unfinished: Transaction.Transactions
顧客の未完了の取引を発行するシーケンス。
SKIncludeConsumableInAppPurchaseHistory
StoreKit が取引情報に、終了した消耗品アプリ内購入を含めるかどうかを決定するブール値。
static var currentEntitlements: Transaction.Transactions
顧客にアプリ内購入とサブスクリプションの権限を与える最新の取引のシーケンス。
static func currentEntitlement(for: String) async -> VerificationResult<Transaction>?
指定された製品に対する顧客の権限を与える最新の取引を取得します。
  廃止  
アプリが購入されたコンテンツを配信したか、取引を完了するためのサービスを有効にしたことを App Store に示します。
static var unfinished: Transaction.Transactions
顧客の未完了の取引を発行するシーケンス。
取引がデバイスに属しているかどうかを検証するためにあなたが使用するデバイス検証値。
let deviceVerificationNonce: UUID
デバイス検証値を計算するための UUID。
App Store が JWS 取引に署名した日付。
取引情報の JSON 表現。
アプリの払い戻し要求の実装と、承認された払い戻しと拒否された払い戻しのあなたのアプリとサーバーによる処理をテストします。
func beginRefundRequest(in: UIWindowScene) async throws -> Transaction.RefundRequestStatus
取引の払い戻し要求シートをウィンドウシーンに表示します。
func beginRefundRequest(in: NSViewController) async throws -> Transaction.RefundRequestStatus
ビューコントローラで取引の払い戻し要求シートを表示します。
指定された取引の払い戻し要求シートをウィンドウシーンに表示します。
指定された取引の払い戻し要求シートをビューコントローラに表示します。
払い戻し要求のエラーコード。
払い戻し要求のステータスコード。
Advanced Commerce API を使用する取引のメタデータ。
  Beta  
自動更新サブスクリプションのサブスクリプション提供のタイプ。
let advancedCommerceInfo: Transaction.AdvancedCommerceInfo?
Advanced Commerce API を使用する取引のメタデータ。
  Beta  
var offerPeriodStringRepresentation: String?
この取引のサブスクリプションオファーに適用されるオファー期間の文字列表現。
  廃止  
static func all(for: String) -> Transaction.Transactions
この製品 ID に関連したすべての取引を取得します。
  Beta  
static func currentEntitlements(for: String) -> Transaction.Transactions
製品 ID で購入したアイテムをユーザに権利付けする取引を取得します。
  Beta  
Copyable
Identifiable
static var updates: Transaction.Transactions
システムがアプリ外部または他のデバイスで発生する取引を作成または更新するときに取引を発行する非同期シーケンス。
static var all: Transaction.Transactions
あなたのアプリのすべての顧客の取引を発行するシーケンス。
static var currentEntitlements: Transaction.Transactions
顧客にアプリ内購入とサブスクリプションの権限を与える最新の取引のシーケンス。