アプリ内購入と試用版

Windows SDK には、次の機能を実装してユニバーサル Windows プラットフォーム (UWP) アプリによる収益を増やすために使用できる API が用意されています。

  • アプリ内購入 アプリが無料であるかどうかにかかわらず、コンテンツやアプリの新機能 (ゲームの次のレベルのロック解除など) をアプリ内から直接販売できます。

  • 試用版機能アプリをパートナー センターで無料試用版として構成した場合、試用期間中に一部の機能を除外または制限することによって、アプリの通常版を購入するようユーザーを促すことができます。 また、ユーザーがアプリを購入する前の試用期間中にだけバナーや透かしなどを表示する機能を有効にすることもできます。

この記事では、UWP アプリでのアプリ内購入と試用版のしくみについて、その概要を説明します。

使用する名前空間を選ぶ

アプリ内購入と試用版機能を UWP アプリに追加するために使用できる 2 つの異なる名前空間があり、どちらを使用するかは、アプリの対象となる Windows 10 または Windows 11 のバージョンによって決まります。 これらの名前空間内の API は同じ目的を果たしますが、その設計は大きく異なり、この 2 つの API の間にコードの互換性はありません。

  • Windows.Services.Store Windows 10 バージョン 1607 以降の場合、アプリはこの名前空間の API を使用して、アプリ内購入および試用版を実装することができます。 アプリ プロジェクトの対象が Windows 10 Anniversary Edition (10.0、ビルド 14393) 以降のリリースである場合は、Visual Studio で、この名前空間のメンバーを使用することをお勧めします。 この名前空間は、Microsoft Store で管理される消費型のアドオンなど、最新の種類のアドオンをサポートしており、パートナー センターと Microsoft Store で今後サポートされる製品および機能の種類と互換性を持つように設計されています。 この名前空間の詳細については、この記事の「Windows.Services.Store 名前空間を使用するアプリ内購入と試用版」セクションを参照してください。

  • Windows.ApplicationModel.Store Windows 10 と Windows 11 のすべてのバージョンでは、この名前空間内にあるアプリ内購入と試用版向けの以前の API もサポートされています。 Windows.ApplicationModel.Store 名前空間については、「Windows.ApplicationModel.Store 名前空間を使用するアプリ内購入と試用版」を参照してください。

重要

Windows.ApplicationModel.Store 名前空間は今後更新されず、新機能も追加されないため、可能な場合、アプリでは、代わりに Windows.Services.Store 名前空間を使用することをお勧めします。 Windows.ApplicationModel.Store 名前空間は、デスクトップ ブリッジを使う Windows デスクトップ アプリケーションや、パートナー センターの開発サンドボックスを使うアプリまたはゲーム (たとえば、Xbox Live と統合されるゲームがすべて該当します) ではサポートされません。

基本的な概念

Microsoft Store で提供されるアイテムはすべて、通常、"製品" と呼ばれます。 ほとんどの開発者が扱う製品の種類は、アプリアドオンのみです。

アドオンは、アプリのコンテキストで顧客が利用できる製品や機能です。たとえば、アプリやゲームで使用される通貨、ゲームの新しい地図や武器、広告を表示せずにアプリを使用できる機能、デジタル コンテンツを提供できるアプリの音楽や動画などのコンテンツ、などがあります。 すべてのアプリおよびアドオンには、ユーザーがアプリまたはアドオンを使用する権利があるかどうかを示すライセンスが関連付けられています。 アプリまたはアドオンを試用版として使用する権利がユーザーにある場合は、その試用版に関する追加情報もライセンスで提供されます。

アプリでユーザーにアドオンを提供するには、パートナー センターでアプリのアドオンを定義し、Microsoft Store でそれが認識されるようにする必要があります。 その後、アプリで Windows.Services.Store または Windows.ApplicationModel.Store 名前空間内の API を使用して、アプリ内購入としてユーザーに販売するアドオンを提供することができます。

UWP アプリでは、次の種類のアドオンを提供できます。

アドオンの種類 説明
Durable パートナー センターで指定した有効期間のあいだ保持されるアドオンです。

既定では、非消費型アドオンの有効期限が切れることはなく、アドオンは 1 回だけ購入できます。 アドオンに特定の期間を指定した場合、ユーザーは、期限が切れた後にアドオンを再購入できます。
開発者が管理する消費型 購入して使用し、消費した後でもう一度購入できるアドオンです。 アドオンで表わされるユーザーのアイテム残高を追跡する責任があります。

ユーザーがアドオンに関連付けられたアイテムを消費する場合、ユーザーの残高を保持する責任と、ユーザーによってすべてのアイテムが消費された後にアドオンの購入をフルフィルメント済みとして Microsoft Store に報告する責任があります。 以前のアドオン購入をフルフィルメント完了としてアプリで報告するまで、ユーザーがそのアドオンを再購入することはできません。

たとえば、アドオンがゲーム内の 100 コインを表しており、ユーザーによって 10 コインが消費されている場合、アプリまたはサービスでは、ユーザーの 90 コインの残高を保持する必要があります。 ユーザーによって 100 コインすべてが消費されたら、アプリでそのアドオンをフルフィルメント完了として報告する必要があります。その後、ユーザーは 100 コイン アドオンを再購入できます。
Microsoft Store によって管理される消費型 購入して使用し、いつでも再購入できるアドオン。 Microsoft Store により、アドオンで表わされるユーザーのアイテム残高が追跡されます。

ユーザーがアドオンに関連付けられたアイテムを消費すると、それらのアイテムをフルフィルメント済みとして Microsoft Store に報告する責任があり、Microsoft Store によってユーザーの残高が更新されます。 ユーザーは、必要な回数だけアドオンを購入できます (最初にアイテムを使用する必要はありません)。 ユーザーの現在の残高は、アプリからいつでも照会できます。

たとえば、アドオンがゲーム内の 100 のコインの初期量を表しており、ユーザーによって 50 コインが消費された場合、そのアドオンの 50 ユニットがフルフィルメント完了したことをアプリで Microsoft Store に報告すると、Microsoft Store により残高が更新されます。 ユーザーがアドオンを再購入して 100 個以上のコインを獲得した場合、合計で 150 個のコインを手にします。

Microsoft Store で管理される消費型を使用するには、Visual Studio でアプリが Windows 10 Anniversary Edition (10.0、ビルド 14393) 以降のリリースをターゲットとし、Windows.ApplicationModel.Store 名前空間ではなく、Windows.Services.Store 名前空間を使用する必要があります。
サブスクリプション 顧客がアドオンを使い続けるために定期的な間隔で継続的に課金する非消費型アドオン。 顧客は、いつでもサブスクリプションを取り消して、以降の請求を回避できます。

サブスクリプション アドオンを使用するには、Visual Studio でアプリが Windows 10 Anniversary Edition (10.0、ビルド 14393) 以降のリリースをターゲットとし、Windows.ApplicationModel.Store 名前空間ではなく、Windows.Services.Store 名前空間を使用する必要があります。

Note

パッケージ付きの非消費型アドオン (ダウンロード可能なコンテンツ (DLC) とも呼ばれます) などの他の種類のアドオンは、限られた開発者しか利用できないため、このドキュメントでは説明しません。

Windows.Services.Store 名前空間を使用するアプリ内購入と試用版

このセクションでは、Windows.Services.Store 名前空間の重要なタスクと概念の概要を説明します。 この名前空間は、Visual Studio で Windows 10 Anniversary Edition (10.0、ビルド 14393) 以降のリリース (これは Windows 10 バージョン 1607 に相当します) を対象とするアプリでのみ使用できます。 可能な場合は、Windows.ApplicationModel.Store 名前空間ではなく Windows.Services.Store 名前空間を使用することをお勧めします。 Windows.ApplicationModel.Store 名前空間については、こちらの記事を参照してください。

このセクションの内容

StoreContext クラスの概要

Windows.Services.Store 名前空間へのメイン エントリ ポイントは、StoreContext クラスです。 このクラスには、現在のアプリとその利用可能なアドオンに関する情報の取得、現在のアプリまたはそのアドオンに関するライセンス情報の取得、現在のユーザー向けのアプリまたはアドオンの購入、その他のタスクの実行に使用できるメソッドが用意されています。 StoreContext オブジェクトを取得するには、次のいずれかを実行します。

  • シングルユーザー アプリ (つまり、アプリを起動したユーザーのコンテキストでのみ実行されるアプリ) では、静的な GetDefault メソッドを使用して StoreContext オブジェクトを取得します。これは、ユーザーの Microsoft Store 関連のデータにアクセスするために使用することができます。 ほとんどのユニバーサル Windows プラットフォーム (UWP) アプリは、シングルユーザー アプリです。

    Windows.Services.Store.StoreContext context = StoreContext.GetDefault();
    
  • マルチユーザー アプリでは、静的な GetForUser メソッドを使用して、StoreContext オブジェクトを取得します。これは、アプリの使用中、Microsoft アカウントでサインインしている特定のユーザーの Microsoft Store 関連データにアクセスするために使用できます。 次の例では、最初に使用可能なユーザーの StoreContext オブジェクトを取得します。

    var users = await Windows.System.User.FindAllAsync();
    Windows.Services.Store.StoreContext context = StoreContext.GetForUser(users[0]);
    

Note

デスクトップ ブリッジを使用する Windows デスクトップ アプリケーションでは、StoreContext オブジェクトを使用する前に、このオブジェクトを構成するための追加の手順を行う必要があります。 詳細については、こちらのセクションをご覧ください。

StoreContext オブジェクトを構成すると、このオブジェクトのメソッドを呼び出して、現在のアプリやそのアドオンに関するストア製品情報の取得、現在のアプリとそのアドオンに関するライセンス情報の取得、現在のユーザー向けのアプリやアドオンの購入、その他のタスクを実行できます。 このオブジェクトを使用して実行できる一般的なタスクの詳細については、次の記事を参照してください。

StoreContext および Windows.Services.Store 名前空間内のその他の型を使用する方法を示すサンプル アプリについては、「Microsoft Store のサンプル」を参照してください。

アプリ内購を実装する

Windows.Services.Store 名前空間を使用してアプリで顧客にアプリ内購入を提供するには、次の手順を行います。

  1. ユーザーが購入できるアドオンをアプリで提供する場合、パートナー センターで、アプリに関するアドオンの申請を作成します。

  2. アプリまたはアプリで提供されるアドオンの製品情報を取得し、ライセンスがアクティブであるかどうかを確認する (つまり、ユーザーが、アプリまたはアドオンを使用するライセンスを持っているかどうかを確認する) ためのアプリのコードを記述します。 ライセンスがアクティブでない場合は、アプリ内購入としてユーザーに販売するためのアプリまたはアドオンを提供する UI を表示します。

  3. ユーザーがアプリまたはアドオンの購入を選んだ場合、製品を購入するための適切なメソッドを使用します。

  4. この記事のテストのガイダンスに従って、実装をテストします。

試用版機能を実装する

Windows.Services.Store 名前空間を使用して、アプリの試用版で機能を除外または制限するには、次の手順を行います。

  1. パートナー センターでアプリを無料試用版として構成します

  2. アプリまたはアプリで提供されるアドオンの製品情報を取得し、アプリに関連付けられているライセンスが試用版ライセンスであるかどうかを確認するためのアプリのコードを記述します。

  3. 試用版の場合は、アプリ内の特定の機能を除外または制限し、ユーザーがフル ライセンスを購入したときに、その機能を有効にします。 詳細とコード例については、「アプリの試用版の実装」を参照してください。

  4. この記事のテストのガイダンスに従って、実装をテストします。

アプリ内購入または試用版の実装をテストする

アプリで Windows.Services.Store 名前空間内の API を使用してアプリ内購入または試用版機能を実装する場合、アプリを Microsoft Store に発行し、そのアプリを開発用デバイスにダウンロードし、そのライセンスを使用してテストを行う必要があります。 次のプロセスに従ってコードをテストします。

  1. アプリがまだ公開されておらず、Microsoft Store で利用できない場合、アプリが Windows アプリ認定キットの最低限の要件を満たしていることを確認し、パートナー センターにそのアプリを申請します。その後で、アプリが認定プロセスに合格したことを確認します。 テスト中は Microsoft Store で検索できないようにアプリを構成することができます。 パッケージ フライトの適切な構成をご確認ください。 正しく構成されていないパッケージ フライトは、ダウンロードできない可能性があります。

  2. 次に、以下の手順が完了していることを確認します。

  3. Visual Studio でプロジェクトを開き、[プロジェクト] メニューをクリックし、[Microsoft Store] をポイントして、[アプリを Microsoft Store に関連付ける] をクリックします。 ウィザードの手順を完了し、テストに使用するパートナー センター アカウントのアプリとアプリ プロジェクトを関連付けます。

    Note

    プロジェクトを Microsoft Store 内のアプリと関連付けない場合、StoreContext メソッドによって、戻り値の ExtendedError プロパティがエラー コード値 0x803F6107 に設定されます。 この値は、Microsoft Store でアプリが認識されていないことを示します。

  4. 前の手順で指定したアプリを Microsoft Store からまだインストールしていない場合は、アプリを 1 回実行し、そのアプリを閉じます。 これにより、アプリの有効なライセンスが開発用デバイスにインストールされます。

  5. Visual Studio で、プロジェクトの実行またはデバッグを開始します。 コードでは、ローカル プロジェクトに関連付けられたアプリとアドオンの情報を Microsoft Store アプリから取得する必要があります。 アプリを再インストールするように求められたら、指示に従ってプロジェクトを実行またはデバッグします。

    Note

    これらの手順を完了すると、新しいパッケージを Microsoft Store に申請しなくても、引き続き開発用コンピューターでアプリのコードを更新し、更新されたプロジェクトをデバッグできます。 テストに使用するローカル ライセンスを取得するために、アプリの Microsoft Store バージョンを開発用コンピューターにダウンロードする必要があるのは 1 回だけです。 新しいアプリ パッケージを Microsoft Store に申請する必要があるのは、テストが完了した後、顧客がアプリ内でアプリ内購入または試用版関連の機能を利用できるようにするときだけです。

アプリで Windows.ApplicationModel.Store 名前空間を使用すると、アプリを Microsoft Store に申請する前に、テスト中にアプリで CurrentAppSimulator クラスを使用して、ライセンス情報をシミュレートできます。 詳細については、「CurrentApp クラスと CurrentAppSimulator クラスの概要」を参照してください。

Note

Windows.Services.Store 名前空間には、テスト中にライセンス情報をシミュレートするために使用できるクラスは用意されていません。 Windows.Services.Store 名前空間を使用してアプリ内購入または試用版を実装する場合、前述のとおり、アプリを Microsoft Store に発行し、そのアプリを開発用デバイスにダウンロードし、そのライセンスを使用してテストを行う必要があります。

アプリ内購入の領収書

Windows.Services.Store 名前空間には、アプリのコードで正常な購入の取引領収書を取得するために使用できる API は用意されていません。 これは、クライアント側の API を使用して取引領収書を取得できる Windows.ApplicationModel.Store 名前空間を使用するアプリのエクスペリエンスと異なる点です。

Windows.Services.Store 名前空間を使用してアプリ内購入を実装し、特定の顧客がアプリまたはアドオンを購入したかどうかを検証する必要がある場合は、Microsoft Store コレクション REST API製品のクエリ メソッド を使用できます。 このメソッドで返されるデータによって、指定された顧客に特定の製品に対する権利があるかどうかを確認し、そのユーザーが取得した製品の取引に関するデータを取得できます。 Microsoft Store コレクション API では、Azure AD 認証を使用してこの情報を取得します。

デスクトップ ブリッジでの StoreContext クラスの使用

デスクトップ ブリッジを使用するデスクトップ アプリケーションでは、StoreContext クラスを使用してアプリ内購入と試用版を実装できます。 ただし、Win32 デスクトップ アプリケーション、またはレンダリング フレームワーク (WPF や Windows App SDK アプリケーションなど) に関連付けられているウィンドウ ハンドル (HWND) を含んだデスクトップ アプリケーションがある場合、アプリケーションでは、オブジェクトによって表示されるモーダル ダイアログのオーナー ウィンドウとなるアプリケーション ウィンドウを指定するように、StoreContext オブジェクトを構成する必要があります。

多くの StoreContext メンバー (および StoreContext オブジェクトを介してアクセスされる他の関連する型のメンバー) では、製品の購入など、Microsoft Store に関連する操作を行うためのモーダル ダイアログがユーザーに表示されます。 デスクトップ アプリケーションで、モーダル ダイアログの所有者ウィンドウを指定するように StoreContext オブジェクトを構成しない場合、このオブジェクトによって、不正確なデータまたはエラーが返されます。

デスクトップ ブリッジを使用するデスクトップ アプリケーションで StoreContext オブジェクトを構成するには、次の手順に従います。

.NET 6 以降の場合

アプリケーションが、.NET 6 以降を使用して C# で記述されている場合、次の手順に従います。

  1. プロジェクト ファイルの TargetFramework プロパティが、WinRT.Interop 名前空間へのアクセスを提供する Windows ランタイム API にアクセスする特定の Windows SDK バージョンに設定されていることを確認します。 次に例を示します。

    <PropertyGroup>
      <!-- You can also target other versions of the Windows SDK and .NET, e.g. "net6.0-windows10.0.19041.0" -->
      <TargetFramework>net6.0-windows10.0.22000.0</TargetFramework>
    </PropertyGroup>
    
  2. この記事で既に説明したように、GetDefault メソッド (アプリがマルチユーザー アプリの場合は GetForUser) を使用して、StoreContext オブジェクトを取得します。 指定したウィンドウ ハンドルを使用してダイアログを初期化するには、WinRT.Interop.WindowNative.GetWindowHandle メソッドと WinRT.Interop.InitializeWithWindow.Initialize メソッドを使用します (「ウィンドウ ハンドルを取得する (HWND)」および「CoreWindow に依存する WinRT UI オブジェクトを表示する」を参照)。

    StoreContext context = StoreContext.GetDefault();
    // Obtain window handle by passing in pointer to the window object
    var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(windowObject);
    // Initialize the dialog using wrapper funcion for IInitializeWithWindow
    WinRT.Interop.InitializeWithWindow.Initialize(context, hwnd); 
    

以前のバージョンの .NET または C++ の場合

アプリケーションが以前のバージョンの .NET または C++ で記述されている場合は、次の手順に従います。

  1. 次のいずれかを実行して、アプリで IInitializeWithWindow インターフェイスにアクセスできるようにします。

    • アプリケーションが、C# や Visual Basic (.NET 6 以降) などのマネージド言語で記述されている場合 (.NET 6 以降)、次の C# の例に示すように、アプリのコードで ComImport 属性を使用して IInitializeWithWindow インターフェイスを宣言します。 この例では、コード ファイルに System.Runtime.InteropServices 名前空間の using ステートメントが含まれていることを前提としています。

      [ComImport]
      [Guid("3E68D4BD-7135-4D10-8018-9FB6D9F33FA1")]
      [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
      public interface IInitializeWithWindow
      {
          void Initialize(IntPtr hwnd);
      }
      
    • アプリケーションが C++ で記述されている場合、コードに shobjidl.h ヘッダー ファイルへの参照を追加します。 このヘッダー ファイルには、IInitializeWithWindow インターフェイスの宣言が含まれています。

  2. この記事で既に説明したように、GetDefault メソッド (アプリがマルチユーザー アプリの場合は GetForUser) を使用して、StoreContext オブジェクトを取得し、このオブジェクトを IInitializeWithWindow オブジェクトにキャストします。 次に、IInitializeWithWindow.Initialize メソッドを呼び出し、StoreContext メソッドによって表示されるモーダル ダイアログの所有者にするウィンドウのハンドルを渡します。 次の C# の例は、アプリのメイン ウィンドウをメソッドに渡す方法を示しています。 「ウィンドウ ハンドルを取得する (HWND)」および「CoreWindow に依存する WinRT UI オブジェクトを表示する」も参照してください。

    StoreContext context = StoreContext.GetDefault();
    IInitializeWithWindow initWindow = (IInitializeWithWindow)(object)context;
    initWindow.Initialize(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle);
    

製品、SKU、可用性

Microsoft Store 内のすべての製品には、少なくとも 1 つの "SKU" があり、各 SKU には、少なくとも 1 つの "可用性" があります。 パートナー センターでは、ほとんどの場合、これらの概念は開発者から抽象化されており、多くの開発者はアプリまたはアドオンの SKU や可用性を定義することはありません。 ただし、Windows.Services.Store 名前空間内の Microsoft Store 製品のオブジェクト モデルには、SKU と可用性が含まれているため、これらの概念の基本を理解しておくと、一部のシナリオで役立ちます。

オブジェクト 説明
Product "製品" は、アプリやアドオンなど、Microsoft Store で入手できるあらゆる種類の製品を指します。

Microsoft Store 内の各製品には、対応する StoreProductオブジェクトがあります。 このクラスには、製品の Store ID、Store 登録情報の画像と動画、価格情報などのデータにアクセスするために使用できるプロパティが用意されています。 また、製品を購入するために使用できるメソッドも提供されます。
SKU "SKU" とは、独自の説明、価格、その他の製品固有の情報製品を持つ特定のバージョンのことです。 各アプリまたはアドオンには、既定の SKU があります。 ほとんどの開発者は、アプリの通常版と試用版を発行する場合のみ、1 つのアプリに複数の SKU を用意します (Microsoft Store カタログでは、通常版と試用版は同じアプリの別の SKU です)。

一部の発行元は、独自の SKU を定義できます。 たとえば、大手のゲーム発行元は、赤い血が許可されていない市場では緑の血が表示される SKU を持つゲームをリリースし、他のすべての市場では赤い血が表示される別の SKU を持つゲームをリリースする場合があります。 また、デジタル ビデオ コンテンツを販売する発行元は、動画用の 2 つの SKU (一方の SKU は高解像度バージョン用で、別の SKU は標準解像度バージョン用) を発行する場合があります。

Microsoft Store 内の SKU には、対応する StoreSku オブジェクトがあります。 すべての StoreProduct には、製品の SKU にアクセスするために使用できる Skus プロパティがあります。
可用性 "可用性" とは、固有の価格情報を持つ SKU の特定のバージョンです。 各 SKU には、既定の可用性があります。 一部の発行元は、独自の可用性を定義して特定の SKU にさまざまな価格オプションを導入できます。

Microsoft Store 内の各可用性には、対応する StoreAvailability オブジェクトがあります。 すべての StoreSku には、SKU の可用性にアクセスするために使用できる Availabilities プロパティがあります。 ほとんどの開発者の場合、各 SKU に既定の可用性を 1 つだけ用意します。

ストア ID

Microsoft Store 内のすべてのアプリ、アドオン、またはその他の製品には、Store ID (これは、"製品 Store ID" と呼ばれる場合もあります) が関連付けられています。 多くの API では、アプリまたはアドオンに対して操作を実行するために Store ID が必要です。

Microsoft Store 内の製品の Store ID は、12 文字の英数字文字列です (例: 9NBLGGH4R315)。 Microsoft Store 内の製品の Store ID を取得するには、いくつかの異なる方法があります。

  • アプリの場合、Store ID は、パートナー センターの [アプリ ID] ページで取得できます。
  • アドオンの場合、Store ID はパートナー センターのアドオンの概要ページで取得できます。
  • どの製品についても、製品を表す StoreProduct オブジェクトの StoreId プロパティを使用して、プログラムで Store ID を取得することもできます。

SKU と可用性を持つ製品の場合、SKU と可用性にも、形式が異なる独自の Store ID があります。

オブジェクト Store ID の形式
SKU SKU の Store ID の形式は <product Store ID>/xxxx です。ここで、xxxx は、製品の SKU を識別する 4 文字の英数字文字列です。 たとえば、9NBLGGH4R315/000N のようにします。 この ID は、StoreSku オブジェクトの StoreId プロパティによって返され、SKU Store ID と呼ばれることもあります。
可用性 可用性の Store ID の形式は <product Store ID>/xxxx/yyyyyyyyyyyy です。ここで、xxxx は、製品の SKU を識別する 4 文字の英数字文字列で、yyyyyyyyyyyy は、SKU の可用性を識別する 12 文字の英数字文字列です。 たとえば、9NBLGGH4R315/000N/4KW6QZD2VN6X のようにします。 この ID は、StoreAvailability オブジェクトの StoreId プロパティによって返され、"可用性 Store ID" と呼ばれることもあります。

コードでアドオンの製品 ID を使用する方法

アプリのコンテキストでユーザーがアドオンを利用できるようにするには、パートナー センターでアドオンの申請を作成するときに、アドオン用の固有の製品 ID を入力しなければなりません。 この製品 ID を使用して、コード内でアドオンを参照できますが、製品 ID を使用できる特定のシナリオは、アプリ内のアプリ内購入に使用する名前空間によって異なります。

Note

パートナー センターでアドオン用に入力する製品 ID は、アドオンの Store ID とは異なります。 Store ID はパートナー センターによって生成されます。

Windows.Services.Store 名前空間を使用するアプリ

アプリで Windows.Services.Store 名前空間を使用している場合、製品 ID を使用すると、アドオンを表す StoreProduct、またはアドオンのライセンスを表す StoreLicense を簡単に識別できます。 製品 ID は、StoreProduct.InAppOfferToken プロパティおよび StoreLicense.InAppOfferToken プロパティによって公開されます。

Note

製品 ID は、コードでアドオンを識別するのに便利な方法ですが、Windows.Services.Store 名前空間のほとんどの操作では、製品 ID の代わりにアドオンの Store ID を使用します。 たとえば、アプリの 1 つ以上の既知のアドオンをプログラムで取得するには、GetStoreProductsAsync メソッドにアドオンの (製品 ID ではなく) Store ID を渡します。 同様に、消費型アドオンをフルフィルメント済みとして報告するには、ReportConsumableFulfillmentAsync メソッドにアドオンの (製品 ID ではなく) Store ID を渡します。

Windows.ApplicationModel.Store 名前空間を使用するアプリ

アプリで Windows.ApplicationModel.Store 名前空間を使用している場合は、ほとんどの操作に、パートナー センターでアドオンに割り当てた製品 ID を使用する必要があります。 次に例を示します。