構造体


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)


あなたのアプリ外での購入のテスト
(Testing purchases made outside your app)


アプリ内購入用の 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 Server Library を使用して実装を簡素化する (Simplifying your implementation by using the App Store Server Library) を参照してください。


    ヒント

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




    @@@@@@@@@@@@@@
    2025/02/18:ここまで
    @@@@@@@@@@@@@@





    関連


    以下に準拠


    CustomDebugStringConvertible

    CustomReflectable

    CustomStringConvertible

    Decodable

    Encodable

    Hashable

    ReferenceConvertible

    Sendable





    以下も見よ


    暦の計算


    struct DateComponents

    カレンダーシステムとタイムゾーンで評価される単位 (年、月、日、時間、分など) で指定された日付または時刻。


    struct Calendar

    カレンダー単位と絶対時点の関係の定義。日付の計算と比較の機能を提供します。














    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ