構造体


Transaction


顧客があなたのアプリ内で製品を購入したことを示す情報。


iOS 15.0+ iPadOS 15.0+ macOS 12.0+

tvOS 15.0+ visionOS 1.0+ watchOS 8.0+

struct Transaction





以下で言及


あなたのアプリでサブスクリプション提供コードをサポート
(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 型を使用して、以下の取引関連のタスクを実行します。


  • 顧客の取引履歴、最新の取引、現在の権利を取得して、コンテンツやサービスのロックを解除します。

  • 取引のプロパティにアクセスします。

  • あなたのアプリが購入したコンテンツまたはサービスを提供したら、取引を完了します。

  • 生の JSON Web 署名 (JWS) 文字列とサポート値にアクセスして、取引情報を確認します。

  • アプリの実行中に新しい取引に注目します。

  • あなたのアプリ内から払い戻し要求を開始します。


  • 取引履歴と現在の権利にアクセス


    あなたのアプリは取引オブジェクトを作成しません。代わりに、StoreKit は、ユーザが初めてアプリを起動したときなど、最新の取引を自動的にあなたのアプリで利用できるようにします。


    WWDC22 の関連セッション

    セッション 110404: プロアクティブなApp内課金の復元機能を実装する

    取引にアクセスするには、いくつかの方法があります。


  • 静的な all シーケンスにアクセスして、いつでも取引履歴を取得するか、ProductlatestTransaction プロパティを使用して製品の最新の取引のみを取得します。

  • 取引注目者の updates を通じて、顧客がアプリの外部 (別のデバイスを含む) で購入を完了すると、あなたのアプリの実行中に新しい取引の通知を受け取ります。

  • サブスクリプションステータス API を通じて、transaction を使用してサブスクリプショングループの最新の取引にアクセスします。

  • アプリ内購入が成功すると、StoreKit は Product.PurchaseResult.success(_:) を通じて取引を返します。

  • 取引情報の最も重要な用途は、顧客がどのアプリ内購入に有料アクセスしたかを判断し、あなたのアプリでコンテンツやサービスのロックを解除できるようにすることです。currentEntitlements API は、あなたのアプリ内の顧客のすべての有料コンテンツのロックを解除するために必要な情報を提供します。currentEntitlements を使用して、非消費型アプリ内購入や現在アクティブなサブスクリプションなど、顧客が現在権利を持つすべての製品の取引のリストを取得します。



    取引の確認


    App Store は、JWS 形式の取引情報を暗号で署名します。StoreKit は署名された情報を自動的に検証し、VerificationResult に包み込んで返します。VerificationResultTransaction 値を包み込む場合、jwsRepresentation プロパティに生の JWS 文字列が提供されます。VerificationResult.verified(_:) を通じて取引を取得した場合、情報は検証に合格しています。VerificationResult.unverified(_:_:) を通じて取得した場合、情報は StoreKit の自動検証に合格していません。あなたのアプリは、Transaction プロパティ 内の取引情報にすぐにアクセスできます。


    デバイス上であなた独自の検証を実行するには、検証結果の jwsRepresentation 文字列を使用し、提供されている便利なプロパティ headerDatapayloadDatasignatureData を使用します。制御とセキュリティを強化するには、jwsRepresentation をあなたのサーバに送信して検証します。検証を実装するには、App Store Server Library の使用を検討してください。このライブラリは、ライブラリがサポートする各言語で、verifyAndDecodeTransaction 関数と verifyAndDecodeRenewalInfo 関数を提供します。詳細については、App Store サーバー ライブラリを使用して実装を簡素化する を参照してください。


    ヒント

    jwsRepresentation は、App Store Server API が返す JWSTransaction や、App Store Server Notifications V2 であなたが受信する JWSTransaction と同じです。同じ方法であなたのサーバ上で検証できます。

    StoreKit が取引を検証済みとして返した場合、その取引はデバイスに対して有効です。デバイスに対してあなた独自の検証を実行する方法については、deviceVerification を参照してください。


    JWS の詳細については、IETF RFC 7515 仕様 を参照してください。



    オリジナルの API で行われた購入にアクセス


    顧客が行うすべてのアプリ内購入は、この取引 API と、アプリ内購入用のオリジナル API を使用したレシートで、以下のようにあなたのアプリに同じように提供されます。


  • 顧客がオリジナルの API で行った新しい購入は、Transaction API を使用してすぐに利用できます。

  • 顧客が purchase(options:) メソッドで行った購入は、あなたのアプリがレシートを更新するとオリジナルの API で利用できます。詳細については、
    SKReceiptRefreshRequest (   廃止  ) を参照してください。




  • トピックス


    Transaction properties (取引プロパティ)


      Transaction properties

    ID、購入日と取り消し日、詳細、ステータス、オファーの詳細など、トランザクション (取引) のプロパティ。


    var appTransactionID: String

    アプリのダウンロード取引の一意の ID。



    取引関連の変更の監視


    static var updates: Transaction.Transactions

    システムがアプリ外部または他のデバイスで発生する取引を作成または更新するときに取引を発行する非同期シーケンス。


    struct 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>?

    指定された製品に対する顧客の権限を与える最新の取引を取得します。

      廃止  



    取引の終了


    func finish() async

    アプリが購入されたコンテンツを配信したか、取引を完了するためのサービスを有効にしたことを App Store に示します。


    static var unfinished: Transaction.Transactions

    顧客の未完了の取引を発行するシーケンス。



    取引の検証


    let deviceVerification: Data

    取引がデバイスに属しているかどうかを検証するためにあなたが使用するデバイス検証値。


    let deviceVerificationNonce: UUID

    デバイス検証値を計算するための UUID。


    let signedDate: Date

    App Store が JWS 取引に署名した日付。



    JSON 形式で取引情報を取得


    var jsonRepresentation: Data

    取引情報の JSON 表現。



    払い戻しの要求


    払い戻し要求のテスト

    アプリの払い戻し要求の実装と、承認された払い戻しと拒否された払い戻しのあなたのアプリとサーバーによる処理をテストします。


    func beginRefundRequest(in: UIWindowScene) async throws -> Transaction.RefundRequestStatus

    取引の払い戻し要求シートをウィンドウシーンに表示します。


    func beginRefundRequest(in: NSViewController) async throws -> Transaction.RefundRequestStatus

    ビューコントローラで取引の払い戻し要求シートを表示します。


    static func beginRefundRequest(for: UInt64, in: UIWindowScene) async throws -> Transaction.RefundRequestStatus

    指定された取引の払い戻し要求シートをウィンドウシーンに表示します。


    static func beginRefundRequest(for: UInt64, in: NSViewController) async throws -> Transaction.RefundRequestStatus

    指定された取引の払い戻し要求シートをビューコントローラに表示します。


    enum RefundRequestError

    払い戻し要求のエラーコード。


    enum RefundRequestStatus

    払い戻し要求のステータスコード。



    構造体


    struct AdvancedCommerceInfo

    Advanced Commerce API を使用する取引のメタデータ。

      Beta  


    struct OfferType

    自動更新サブスクリプションのサブスクリプション提供のタイプ。



    インスタンスプロパティ


    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

    CustomDebugStringConvertible

    Decodable

    Hashable

    Identifiable

    Sendable





    以下も見よ


    static var updates: Transaction.Transactions

    システムがアプリ外部または他のデバイスで発生する取引を作成または更新するときに取引を発行する非同期シーケンス。


    static var all: Transaction.Transactions

    あなたのアプリのすべての顧客の取引を発行するシーケンス。


    static var currentEntitlements: Transaction.Transactions

    顧客にアプリ内購入とサブスクリプションの権限を与える最新の取引のシーケンス。














    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ