アプリ内購入と試用版In-app purchases and trials

Windows SDK に用意されている API を使用して、以下の機能を実装し、ユニバーサル Windows プラットフォーム (UWP) アプリによる収益を向上させることができます。The Windows SDK provides APIs you can use to implement the following features to make more money from your Universal Windows Platform (UWP) app:

  • アプリ内購入   アプリが無料であるかどうかにかかわらず、コンテンツやアプリの新機能 (ゲームの次のレベルのロック解除など) をアプリ内から直接販売できます。In-app purchases  Whether your app is free or not, you can sell content or new app functionality (such as unlocking the next level of a game) from right within the app.

  • 試用版機能  アプリを Windows デベロッパー センター ダッシュボードで無料試用版として構成した場合、試用期間中に一部の機能を除外または制限することによって、アプリの通常版を購入するようユーザーを促すことができます。Trial functionality  If you configure your app as a free trial in the Windows Dev Center dashboard, you can entice your customers to purchase the full version of your app by excluding or limiting some features during the trial period. また、ユーザーがアプリを購入する前の試用期間中にだけバナーや透かしなどを表示する機能を有効にすることもできます。You can also enable features, such as banners or watermarks, that are shown only during the trial, before a customer buys your app.

この記事では、UWP アプリでのアプリ内購入と試用版のしくみについて、その概要を説明します。This article provides an overview of how in-app purchases and trials work in UWP apps.

使用する名前空間を選ぶChoose which namespace to use

UWP アプリにアプリ内購入機能や試用版機能を追加する際に使用できる名前空間は、2 つあります。どちらの名前空間を使用するかは、アプリのターゲットとなる Windows 10 のバージョンによって決まります。There are two different namespaces you can use to add in-app purchases and trial functionality to your UWP apps, depending on which version of Windows 10 your apps target. これらの名前空間の API は同じ目的を果たしますが、その設計は大きく異なります。また、この 2 つの API 間にコードの互換性はありません。Although the APIs in these namespaces serve the same goals, they are designed quite differently, and code is not compatible between the two APIs.

  • Windows.Services.Store  Windows 10 バージョン 1607 以降の場合、アプリはこの名前空間の API を使用して、アプリ内購入および試用版を実装することができます。Windows.Services.Store  Starting in Windows 10, version 1607, apps can use the API in this namespace to implement in-app purchases and trials. Visual Studio でアプリ プロジェクトのターゲットが Windows 10 Anniversary Edition (10.0、ビルド 14393) 以降である場合は、この名前空間のメンバーを使用することをお勧めします。We recommend that you use the members in this namespace if your app project targets Windows 10 Anniversary Edition (10.0; Build 14393) or a later release in Visual Studio. この名前空間は、ストアで管理されるコンシューマブルなアドオンなど、最新の種類のアドオンをサポートしており、Windows デベロッパー センターとストアで今後サポートされる製品および機能の種類と互換性を持つように設計されています。This namespace supports the latest add-on types, such as Store-managed consumable add-ons, and is designed to be compatible with future types of products and features supported by Windows Dev Center and the Store. この名前空間について詳しくは、この記事の「Windows.Services.Store 名前空間を使用するアプリ内購入と試用版」をご覧ください。For more information about this namespace, see the In-app purchases and trials using the Windows.Services.Store namespace section in this article.

  • Windows.ApplicationModel.Store  Windows 10 のすべてのバージョンでは、この名前空間にあるアプリ内購入と試用版向けの以前の API がサポートされています。Windows.ApplicationModel.Store  All versions of Windows 10 also support an older API for in-app purchases and trials in this namespace. Windows.ApplicationModel.Store 名前空間については、「Windows.ApplicationModel.Store 名前空間を使用するアプリ内購入と試用版」をご覧ください。For information about the Windows.ApplicationModel.Store namespace, see In-app purchases and trials using the Windows.ApplicationModel.Store namespace.

重要

Windows.ApplicationModel.Store 名前空間は今後更新されず、新機能も追加されないため、アプリでは、可能であれば代わりに Windows.Services.Store 名前空間を使うことをお勧めします。The Windows.ApplicationModel.Store namespace is no longer being updated with new features, and we recommend that you use the Windows.Services.Store namespace instead if possible for your app. Windows.ApplicationModel.Store 名前空間は、デスクトップ ブリッジを使う Windows デスクトップ アプリケーションや、デベロッパー センターの開発サンドボックスを使うアプリまたはゲーム (たとえば、Xbox Live と統合されるゲームがすべて該当します) ではサポートされません。The Windows.ApplicationModel.Store namespace is not supported in Windows desktop applications that use the Desktop Bridge or in apps or games that use a development sandbox in Dev Center (for example, this is the case for any game that integrates with Xbox Live).

基本的な概念Basic concepts

ストアで提供されるアイテムはすべて、通常、製品と呼ばれます。Every item that is offered in the Store is generally called a product. ほとんどの開発者が扱う製品の種類は、アプリアドオンのみです。Most developers only work with the following types of products: apps and add-ons.

アドオンとは、ユーザーがアプリのコンテキストで利用できる製品や機能のことです。たとえば、アプリやゲームで使用される通貨、ゲームの新しい地図や武器、広告を表示せずにアプリを使用できる機能などに加え、音楽やビデオなどのデジタル コンテンツを提供できるアプリなら、そのようなコンテンツのことも表します。An add-on is a product or feature that you make available to your customers in the context of your app: for example, currency to be used in an app or game, new maps or weapons for a game, the ability to use your app without ads, or digital content such as music or videos for apps that have the ability to offer that type of content. すべてのアプリとアドオンは、そのアプリやアドオンを使用する権利がユーザーにあるかどうかを示す関連付けられたライセンスを備えます。Every app and add-on has an associated license that indicates whether the user is entitled to use the app or add-on. アプリまたはアドオンを試用版として使用する権利がユーザーにある場合は、その試用版に関する追加情報もライセンスによって提供されます。If the user is entitled to use the app or add-on as a trial, the license also provides additional info about the trial.

アプリでユーザーにアドオンを提供するには、デベロッパー センター ダッシュボードでアプリのアドオンを定義します。これにより、そのアドオンがストアで認識されます。To offer an add-on to customers in your app, you must define the add-on for your app in the Dev Center dashboard so the Store knows about it. その後で、アプリで Windows.Services.Store または Windows.ApplicationModel.Store 名前空間の API を使用して、アプリ内購入としてユーザーに販売するアドオンを提供することができます。Then, your app can use APIs in the Windows.Services.Store or Windows.ApplicationModel.Store namespace to offer the add-on for sale to the user as an in-app purchase.

UWP アプリでは、次の種類のアドオンを提供できます。UWP apps can offer the following types of add-ons.

アドオンの種類Add-on type 説明Description
永続的Durable Windows デベロッパー センター ダッシュボードで指定した有効期間のあいだ保持されるアドオンです。An add-on that persists for the lifetime that you specify in the Windows Dev Center dashboard.

既定では、永続的なアドオンの有効期限が切れることはありません。この場合、アドオンは 1 回のみ購入することができます。By default, durable add-ons never expire, in which case they can only be purchased once. アドオンで特定の期間を指定している場合、期限が切れた後、ユーザーはアドオンを再購入できます。If you specify a particular duration for the add-on, the user can repurchase the add-on after it expires.

開発者により管理されるコンシューマブルDeveloper-managed consumable 購入して使用し、消費した後でもう一度購入可能なアドオンです。An add-on that can be purchased, used, and then purchased again after it is consumed. アドオンが表すユーザーのアイテムの残量の追跡は開発者が行います。You are responsible for keeping track of the user's balance of items that the add-on represents.

ユーザーがアドオンに関連付けられたアイテムを消費したら、ユーザーの残量を保持し、ユーザーによってすべてのアイテムが消費されたらアドオンの購入をフルフィルメント完了として Microsoft Store に報告する義務が開発者にあります。When the user consumes any items that are associated with the add-on, you are responsible for maintaining the user's balance and for reporting the purchase of the add-on as fulfilled to the Store after the user has consumed all the items. 以前のアドオン購入をフルフィルメント完了としてアプリで報告するまで、ユーザーがそのアドオンを再購入することはできません。The user cannot purchase the add-on again until your app has reported the previous add-on purchase as fulfilled.

たとえば、アドオンがゲーム内の 100 コインを表しており、ユーザーによって 10 コインが消費されている場合、アプリまたはサービスでは、ユーザーの 90 コインの残高を保持する必要があります。For example, if your add-on represents 100 coins in a game and the user consumes 10 coins, your app or service must maintain the new remaining balance of 90 coins for the user. ユーザーによって 100 コインすべてが消費されたら、アプリでそのアドオンをフルフィルメント完了として報告する必要があります。その後、ユーザーは 100 コイン アドオンを再購入できます。After the user has consumed all 100 coins, your app must report the add-on as fulfilled, and then the user can purchase the 100 coin add-on again.

Microsoft Store で管理されるコンシューマブルStore-managed consumable 購入し、使用した後にいつでも再購入できるアドオンです。An add-on that can be purchased, used, and purchased again at any time. アドオンが表すユーザーのアイテムの残量は Microsoft Store で追跡します。The Store keeps track of the user's balance of items that the add-on represents.

アドオンに関連付けられたアイテムがユーザーにより消費されたら、そのアイテムをフルフィルメント完了として Microsoft Store に報告する義務が開発者にあり、Microsoft Store によってユーザーの残量が更新されます。When the user consumes any items that are associated with the add-on, you are responsible for reporting those items as fulfilled to the Store, and the Store updates the user's balance. ユーザーは、必要な回数だけアドオンを購入できます (最初にアイテムを使用する必要はありません)。The user can purchase the add-on as many times as they want (they do not need to consume the items first). アプリでは、ユーザーのアイテムの現在の残量をいつでも照会できます。Your app can query for the current balance for the user at any time.

たとえば、アドオンがゲーム内の 100 のコインの初期量を表しており、ユーザーによって 50 コインが消費された場合、そのアドオンの 50 ユニットがフルフィルメント完了したことをアプリで Microsoft Store に報告すると、Microsoft Store により残高が更新されます。For example, if your add-on represents an initial quantity of 100 coins in a game and the user consumes 50 coins, your app reports to the Store that 50 units of the add-on were fulfilled, and the Store updates the remaining balance. ユーザーがアドオンを再購入して 100 個以上のコインを獲得した場合、合計で 150 個のコインを手にします。If the user then repurchases your add-on to acquire 100 more coins, they will now have 150 coins total.

注:  Microsoft Store で管理されるコンシューマブルを使用するには、Visual Studio でアプリが Windows 10 Anniversary Edition (10.0、ビルド 14393) 以降をターゲットとし、Windows.ApplicationModel.Store 名前空間ではなく、Windows.Services.Store 名前空間を使用する必要があります。Note  To use Store-managed consumables, your app must target Windows 10 Anniversary Edition (10.0; Build 14393) or a later release in Visual Studio, and it must use the Windows.Services.Store namespace instead of the Windows.ApplicationModel.Store namespace.

サブスクリプションSubscription アドオンを使い続けるために定期的な間隔でユーザーが継続的に課金する永続的なアドオンです。A durable add-on where the customer continues to be charged at recurring intervals in order to keep using the add-on. ユーザーはいつでもサブスクリプションをキャンセルして、それ以降の課金を取り消すことができます。The customer can cancel the subscription at any time to avoid further charges.

  サブスクリプション アドオンを使用するには、Visual Studio でアプリが Windows 10 Anniversary Edition (10.0、ビルド 14393) 以降をターゲットとし、Windows.ApplicationModel.Store 名前空間ではなく、Windows.Services.Store 名前空間を使用する必要があります。Note  To use subscription add-ons, your app must target Windows 10 Anniversary Edition (10.0; Build 14393) or a later release in Visual Studio, and it must use the Windows.Services.Store namespace instead of the Windows.ApplicationModel.Store namespace.

注意

パッケージで使用される永続的なアドオン (ダウンロード コンテンツまたは DLC とも呼ばれます) など、他の種類のアドオンが利用できるのは一部の開発者に限られており、このドキュメントでは説明しません。Other types of add-ons, such as durable add-ons with packages (also known as downloadable content or DLC) are only available to a restricted set of developers, and are not covered in this documentation.

Windows.Services.Store 名前空間を使用するアプリ内購入と試用版In-app purchases and trials using the Windows.Services.Store namespace

このセクションでは、Windows.Services.Store 名前空間の重要なタスクと概念の概要について説明します。This section provides an overview of important tasks and concepts for the Windows.Services.Store namespace. この名前空間は、Visual Studio でWindows 10 Anniversary Edition (10.0、ビルド 14393) 以降 (これは Windows 10 バージョン 1607 に対応) をターゲットとするアプリでのみ利用可能です。This namespace is available only to apps that target Windows 10 Anniversary Edition (10.0; Build 14393) or a later release in Visual Studio (this corresponds to Windows 10, version 1607). 可能であれば、アプリで Windows.ApplicationModel.Store 名前空間ではなく、Windows.Services.Store 名前空間を使用することをお勧めします。We recommend that apps use the Windows.Services.Store namespace instead of the Windows.ApplicationModel.Store namespace if possible. Windows.ApplicationModel.Store 名前空間については、この記事をご覧ください。For information about the Windows.ApplicationModel.Store namespace, see this article.

このセクションの内容In this section

ビデオVideo

Windows.Services.Store 名前空間を使用してアプリにアプリ内購入を実装する方法の概要については、次のビデオをご覧ください。Watch the following video for an overview of how to implement in-app purchases in your app using the Windows.Services.Store namespace.

StoreContext クラスの概要Get started with the StoreContext class

Windows.Services.Store 名前空間のメイン エントリ ポイントは、StoreContext クラスです。The main entry point to the Windows.Services.Store namespace is the StoreContext class. このクラスには、現在のアプリとその利用可能なアドオンに関する情報の取得、現在のアプリまたはそのアドオンに関するライセンス情報の取得、現在のユーザー向けのアプリまたはアドオンの購入、およびその他のタスクを行う際に使用できるメソッドが用意されています。This class provides methods you can use to get info for the current app and its available add-ons, get license info for the current app or its add-ons, purchase an app or add-on for the current user, and perform other tasks. StoreContext オブジェクトを取得するには、次のいずれかを実行します。To get a StoreContext object, do one of the following:

  • シングル ユーザー アプリ (アプリを起動したユーザーのコンテキストのみで実行されるアプリ) では、静的な GetDefault メソッドを使って StoreContext オブジェクトを取得します。このオブジェクトをうと、ユーザーの Microsoft Store 関連のデータにアクセスできます。In a single-user app (that is, an app that runs only in the context of the user that launched the app), use the static GetDefault method to get a StoreContext object that you can use to access Microsoft Store-related data for the user. ほとんどのユニバーサル Windows プラットフォーム アプリ (UWP) アプリはシングル ユーザー アプリです。Most Universal Windows Platform (UWP) apps are single-user apps.

    Windows.Services.Store.StoreContext context = StoreContext.GetDefault();
    
  • マルチユーザー アプリでは、静的な GetForUser メソッドを使って StoreContext オブジェクトを取得します。このオブジェクトを使うと、アプリの使用中に Microsoft アカウントでサインインしていた特定のユーザーに関する Microsoft Store 関連のデータにアクセスできます。In a multi-user app, use the static GetForUser method to get a StoreContext object that you can use to access Microsoft Store-related data for a specific user who is signed in with their Microsoft account while using the app. 次の例は、利用可能な最初のユーザーの StoreContext オブジェクトを取得します。The following example gets a StoreContext object for the first available user.

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

注意

デスクトップ ブリッジ を使用する Windows デスクトップ アプリケーションでは、StoreContext オブジェクトを使用する前に、追加の手順を実行してこのオブジェクトを構成する必要があります。Windows desktop applications that use the Desktop Bridge must perform additional steps to configure the StoreContext object before they can use this object. 詳しくは、このセクションをご覧ください。For more information, see this section.

StoreContext オブジェクトを構成すると、このオブジェクトのメソッドを呼び出して、現在のアプリやアドオンに関するストア製品情報の取得、現在のアプリとそのアドオンに関するライセンス情報の取得、現在のユーザー向けのアプリやアドオンの購入、およびその他のタスクを実行できます。After you have a StoreContext object, you can start calling methods of this object to get Store product info for the current app and its add-ons, retrieve license info for the current app and its add-ons, purchase an app or add-on for the current user, and perform other tasks. このオブジェクトを使用して実行できる一般的なタスクについて詳しくは、次の記事をご覧ください。For more information about common tasks you can perform using this object, see the following articles:

StoreContext および Windows.Services.Store 名前空間にある他の型を使用する方法を示すサンプル アプリについては、ストア サンプルをご覧ください。For a sample app that demonstrates how to use StoreContext and other types in the Windows.Services.Store namespace, see the Store sample.

アプリ内購入の実装Implement in-app purchases

Windows.Services.Store 名前空間を使用して、アプリでアプリ内購入をユーザーに提供するには:To offer an in-app purchase to customers in your app using the Windows.Services.Store namespace:

  1. ユーザーが購入できるアドオンをアプリで提供する場合、デベロッパー センター ダッシュ ボードで、アプリに関するアドオンの申請を作成します。If your app offers add-ons that customers can purchase, create add-on submissions for your app in the Dev Center dashboard.

  2. アプリで提供されるアプリやアドオンの製品情報を取得してから、ライセンスがアクティブになっているかどうかを判断する (つまり、アプリやアドオンを使用するためのライセンスをユーザーが所有しているかどうかを判断する) ようにアプリのコードを記述します。Write code in your app to retrieve product info for your app or an add-on offered by your app and then determine whether the license is active (that is, whether the user has a license to use the app or add-on). ライセンスがアクティブになっていない場合、ユーザーに販売するためのアプリやアドオンをアプリ内購入として提供する UI を表示します。If the license isn't active, display a UI that offers the app or add-on for sale to the user as an in-app purchase.

  3. ユーザーがアプリやアドオンの購入を選んだ場合、製品を購入するための適切なメソッドを使用します。If the user chooses to purchase your app or add-on, use the appropriate method to purchase the product:

  4. この記事に記載されているテスト ガイダンスに従って、実装をテストします。Test your implementation by following the testing guidance in this article.

試用版機能の実装Implement trial functionality

Windows.Services.Store 名前空間を使用して、アプリの試用版の機能を除外または制限するには:To exclude or limit features in a trial version of your app using the Windows.Services.Store namespace:

  1. Windows デベロッパー センター ダッシュ ボードで、アプリを無料試用版として構成しますConfigure your app as a free trial in the Windows Dev Center dashboard.

  2. アプリで提供されるアプリやアドオンの製品情報を取得してから、アプリに関連付けられているライセンスが試用版ライセンスになっているかどうかを判断するようにアプリのコードを記述します。Write code in your app to retrieve product info for your app or an add-on offered by your app and then determine whether the license associated with the app is a trial license.

  3. 試用版である場合は、アプリの特定の機能を除外または制限します。ユーザーが完全なライセンスを購入した場合は、その機能を有効にします。Exclude or limit certain features in your app if it is a trial, and then enable the features when the user purchases a full license. 詳細とコード例については、「アプリの試用版の実装」をご覧ください。For more information and a code example, see Implement a trial version of your app.

  4. この記事に記載されているテスト ガイダンスに従って、実装をテストします。Test your implementation by following the testing guidance in this article.

アプリ内購入や試用版の実装のテストTest your in-app purchase or trial implementation

アプリで Windows.Services.Store 名前空間の API を使用してアプリ内購入や試用版機能を実装する場合は、アプリを Store に公開してからそのアプリを開発デバイスにダウンロードし、そのライセンスを使用してテストを行う必要があります。If your app uses APIs in the Windows.Services.Store namespace to implement in-app purchase or trial functionality, you must publish your app to the Store and download the app to your development device to use its license for testing. コードをテストするには次のプロセスに従います。Follow this process to test your code:

  1. アプリがまだ公開されておらず、Microsoft Store で利用できない場合、アプリが Windows アプリ認定キットの最低限の要件を満たしていることを確認し、Windows デベロッパー センター ダッシュボードにそのアプリを申請します。その後で、アプリが認定プロセスに合格したことを確認します。If your app is not yet published and available in the Store, make sure your app meets the minimum Windows App Certification Kit requirements, submit your app to the Windows Dev Center dashboard, and make sure your app passes the certification process. テスト中にストアでアプリを検索できないようにアプリを構成することも可能です。You can configure your app so it is not discoverable in the Store while you test it.

  2. 次に、以下の操作が完了していることを確認します。Next, make sure you have completed the following:

  3. プロジェクトを Visual Studio で開き、[プロジェクト] メニューをクリックし、[ストア] をポイントして、[アプリケーションをストアと関連付ける] をクリックします。With your project open in Visual Studio, click the Project menu, point to Store, and then click Associate App with the Store. ウィザードの手順を完了し、テストに使用する Windows デベロッパー センター アカウントのアプリとアプリ プロジェクトを関連付けます。Complete the instructions in the wizard to associate the app project with the app in your Windows Dev Center account that you want to use for testing.

    注意

    プロジェクトとストアのアプリを関連付けていない場合、StoreContext メソッドにより、戻り値の ExtendedError プロパティがエラー コード値 0x803F6107 に設定されます。If you do not associate your project with an app in the Store, the StoreContext methods set the ExtendedError property of their return values to the error code value 0x803F6107. この値は、ストアにそのアプリに関する情報がないことを示します。This value indicates that the Store doesn't have any knowledge about the app.

  4. まだ前の手順で指定したストアのアプリをインストールしていない場合は、アプリをインストールし、アプリを一度実行してから閉じます。If you have not done so already, install the app from the Store that you specified in the previous step, run the app once, and then close this app. これにより、アプリの有効なライセンスが開発用デバイスにインストールされます。This ensures that a valid license for the app is installed to your development device.

  5. Visual Studio で、プロジェクトの実行またはデバッグを開始します。In Visual Studio, start running or debugging your project. コードによって、ローカルのプロジェクトと関連付けたストア アプリからアプリおよびアドオンのデータが取得されます。Your code should retrieve app and add-on data from the Store app that you associated with your local project. アプリを再インストールするように求められた場合は、その指示に従った後、プロジェクトを実行またはデバッグします。If you are prompted to reinstall the app, follow the instructions and then run or debug your project.

    注意

    上記の手順を実行すると、ストアに新しいアプリ パッケージを提出しなくても、引き続きアプリのコードを更新し、更新されたプロジェクトを開発用コンピューターでデバッグできます。After you complete these steps, you can continue to update your app's code and then debug your updated project on your development computer without submitting new app packages to the Store. テストで使用するローカル ライセンスを取得するため、開発用コンピューターにストア バージョンのアプリを 1 度だけダウンロードする必要があります。You only need to download the Store version of your app to your development computer once to obtain the local license that will be used for testing. テストが完了し、ユーザーがアプリのアプリ内購入や試用版に関連する機能を利用できるようにするには、ストアに新しいアプリ パッケージを申請するだけで済みます。You only need to submit new app packages to the Store after you complete your testing and you want to make the in-app purchase or trial-related features in your app available to your customers.

アプリで Windows.ApplicationModel.Store 名前空間を使用している場合は、アプリで CurrentAppSimulator クラスを使用することで、アプリをストアに提出する前に、ライセンス情報をテスト中にシミュレートできます。If your app uses the Windows.ApplicationModel.Store namespace, you can use the CurrentAppSimulator class in your app to simulate license info during testing before you submit your app to the Store. 詳しくは、「CurrentApp クラスと CurrentAppSimulator クラスの概要」をご覧ください。For more information, see Get started with the CurrentApp and CurrentAppSimulator classes.

注意

Windows.Services.Store 名前空間には、テスト中にライセンス情報をシミュレートするために使用できるクラスが用意されていません。The Windows.Services.Store namespace does not provide a class that you can use to simulate license info during testing. Windows.Services.Store 名前空間を使用してアプリ内購入または試用版を実装する場合は、上記のように、アプリをストアに公開してからそのアプリを開発デバイスにダウンロードし、そのライセンスを使用してテストを行う必要があります。If you use the Windows.Services.Store namespace to implement in-app purchases or trials, you must publish your app to the Store and download the app to your development device to use its license for testing as described above.

アプリ内購入の受領通知Receipts for in-app purchases

Windows.Services.Store 名前空間には、購入が成功した場合の取引の受領通知をアプリのコードで取得する際に使用できる API が用意されていません。The Windows.Services.Store namespace does not provide an API you can use to obtain a transaction receipt for successful purchases in your app's code. これは、Windows.ApplicationModel.Store 名前空間を使用するアプリの場合とは異なります。このようなアプリでは、クライアント側の API を使用して、取引の受領通知を取得することができます。This is a different experience from apps that use the Windows.ApplicationModel.Store namespace, which can use a client-side API to retrieve a transaction receipt.

Windows.Services.Store 名前空間を使ってアプリ内購入を実装しているとき、特定のユーザーがアプリまたはアドオンを購入したかどうかを確認する必要がある場合は、Microsoft Store コレクション REST API製品の照会メソッドを使用できます。If you implement in-app purchases using the Windows.Services.Store namespace and you want to validate whether a given customer has purchased an app or add-on, you can use the query for products method in the Microsoft Store collection REST API. このメソッドで返されるデータによって、指定されたユーザーが特定の製品に対する資格を持っているかどうかを確認し、ユーザーが購入した製品の取引に関するデータを取得することができます。The return data for this method confirms whether the specified customer has an entitlement for a given product, and provides data for the transaction in which the user acquired the product. Microsoft Store コレクション API では、Azure AD Authentication を使ってこの情報を取得します。The Microsoft Store collection API uses Azure AD authentication to retrieve this information.

デスクトップ ブリッジでの StoreContext クラスの使用Using the StoreContext class with the Desktop Bridge

デスクトップ ブリッジを使用するデスクトップ アプリケーションでは、StoreContext クラスを使用してアプリ内購入と試用版を実装できます。Desktop applications that use the Desktop Bridge can use the StoreContext class to implement in-app purchases and trials. ただし、Win32 デスクトップ アプリケーション、またはレンダリング フレームワーク (WPF アプリケーションなど) に関連付けられているウィンドウ ハンドル (HWND) を含んだデスクトップ アプリケーションがある場合、アプリケーションでは、オブジェクトによって表示されるモーダル ダイアログのオーナー ウィンドウとなるアプリケーション ウィンドウを指定するように、StoreContext オブジェクトを構成する必要があります。However, if you have a Win32 desktop application or a desktop application that has a window handle (HWND) that is associated with the rendering framework (such as a WPF application), your application must configure the StoreContext object to specify which application window is the owner window for modal dialogs that are shown by the object.

多くの StoreContext メンバー (および StoreContext オブジェクトを介してアクセスされる他の関連する型のメンバー) では、製品購入などのストアに関連する操作を行うために、モーダル ダイアログがユーザーに表示されます。Many StoreContext members (and members of other related types that are accessed through the StoreContext object) display a modal dialog to the user for Store-related operations such as purchasing a product. デスクトップ アプリケーションで、モーダル ダイアログのオーナー ウィンドウを指定するように StoreContext オブジェクトが構成されていない場合、このオブジェクトは不正確なデータまたはエラーを返します。If a desktop application does not configure the StoreContext object to specify the owner window for modal dialogs, this object will return inaccurate data or errors.

デスクトップ ブリッジを使用するデスクトップ アプリケーションで StoreContext オブジェクトを構成するには、次の手順を実行します。To configure a StoreContext object in a desktop application that uses the Desktop Bridge, follow these steps.

  1. 次のいずれかを実行して、アプリで IInitializeWithWindow インターフェイスにアクセスできるようにします。Do one of the following to enable your app to access the IInitializeWithWindow interface:

    • アプリケーションが C# や Visual Basic などのマネージ言語で記述されている場合、次の C# の例に示すように、アプリのコードで ComImport 属性を使用して、IInitializeWithWindow インターフェイスを宣言します。If your application is written in a managed language such as C# or Visual Basic, declare the IInitializeWithWindow interface in your app's code with the ComImport attribute as shown in the following C# example. この例では、コード ファイルに System.Runtime.InteropServices 名前空間の using ステートメントが指定されていることを前提としています。This example assumes that your code file has a using statement for the System.Runtime.InteropServices namespace.

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

  2. この記事で既に説明したように、GetDefault メソッド (マルチ ユーザー アプリの場合は GetForUser メソッド) を使用して、StoreContext オブジェクトを取得します。次に、このオブジェクトを IInitializeWithWindow オブジェクトにキャストします。Get a StoreContext object by using the GetDefault method (or GetForUser if your app is a multi-user app) as described earlier in this article, and cast this object to an IInitializeWithWindow object. その後で、IInitializeWithWindow.Initialize メソッドを呼び出し、StoreContext メソッドによって表示されるモーダル ダイアログのオーナーにするウィンドウのハンドルを渡します。Then, call the IInitializeWithWindow.Initialize method, and pass the handle of the window that you want to be the owner for any modal dialogs that are shown by StoreContext methods. 次の C# の例は、アプリのメイン ウィンドウのハンドルをメソッドに渡す方法を示しています。The following C# example shows how to pass the handle of your app's main window to the method.

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

製品、SKU、および可用性Products, SKUs, and availabilities

ストア内のすべての製品には少なくとも 1 つの SKU があり、各 SKU ごとに少なくとも 1 つの可用性があります。Every product in the Store has at least one SKU, and each SKU has at least one availability. Windows デベロッパー センター ダッシュボードでは、ほとんどの場合、これらの概念は開発者から抽象化されており、多くの開発者はアプリまたはアドオンの SKU や可用性を定義することはありません。These concepts are abstracted away from most developers in the Windows Dev Center dashboard, and most developers will never define SKUs or availabilities for their apps or add-ons. ただし、Windows.Services.Store 名前空間のストア製品のオブジェクト モデルには SKU と可用性が含まれているため、シナリオによっては、これらの概念の基本的な知識があると役に立つことがあります。However, because the object model for Store products in the Windows.Services.Store namespace includes SKUs and availabilities, a basic understanding of these concepts can be helpful for some scenarios.

オブジェクトObject 説明Description
製品Product 製品は、アプリやアドオンなど、ストアで利用できるすべての製品の種類を指します。A product refers to any type of product that is available in the Store, including an app or add-on.

ストアの各製品には対応する StoreProduct オブジェクトがあります。Each product in the Store has a corresponding StoreProduct object. このクラスには、製品のストア ID、ストア登録情報の画像と動画、価格情報などのデータにアクセスするために使用できるプロパティが用意されています。This class provides properties you can use to access data such as the Store ID of the product, the images and videos for the Store listing, and pricing info. また、製品を購入するために使用できるメソッドも提供されます。It also provides methods you can use to purchase the product.

SKUSKU SKU によって、独自の説明や価格など、製品固有の詳細情報に基づいて特定のバージョンの製品が示されます。A SKU is a specific version of a product with its own description, price, and other unique product details. 各アプリまたはアドオンには既定の SKU があります。Each app or add-on has a default SKU. ほとんどの開発者は、アプリの通常版と試用版を公開している場合を除いて (ストア カタログでは、通常版と試用版は同じアプリの別の SKU になります)、1 つのアプリに複数の SKU を用意することはありません。The only time most developers will ever have multiple SKUs for an app is if they publish a full version of their app and a trial version (in the Store catalog, each of these versions is a different SKU of the same app).

一部の発行元は、独自の SKU を定義することができます。Some publishers have the ability to define their own SKUs. たとえば、大規模なゲームの発行元の場合、赤い血が許可されない市場では緑の血が表示される SKU でゲームをリリースし、それ以外のすべての市場では赤い血が表示される別の SKU でゲームをリリースすることがあります。For example, a large game publisher might release a game with one SKU that shows green blood in markets that don't allow red blood and a different SKU that shows red blood in all other markets. または、デジタル ビデオ コンテンツを販売している発行元が、1 つのビデオに対して、高解像度版の SKU と通常解像度版の SKU という、2 つの SKU を公開する場合もあります。Alternatively, a publisher who sells digital video content might publish two SKUs for a video, one SKU for the high-definition version and a different SKU for the standard-definition version.

ストアの各 SKU には対応する StoreSku オブジェクトがあります。Each SKU in the Store has a corresponding StoreSku object. すべての StoreProduct には、製品の SKU にアクセスするために使用できる Skus プロパティがあります。Every StoreProduct has a Skus property you can use to access the SKUs for the product.

可用性Availability 可用性によって、固有の価格情報に基づいて特定のバージョンの SKU が示されます。An availability is a specific version of a SKU with its own unique pricing info. 各 SKU には、既定の可用性があります。Each SKU has a default availability. 一部の発行元は独自の可用性を定義でき、特定の SKU にさまざまな価格オプションを導入できます。Some publishers have the ability to define their own availabilities to introduce different price options for a given SKU.

ストアの各可用性には対応する StoreAvailability オブジェクトがあります。Each availability in the Store has a corresponding StoreAvailability object. すべての StoreSku には、SKU の可用性にアクセスするために使用できる Availabilities プロパティがあります。Every StoreSku has an Availabilities property you can use to access the availabilities for the SKU. ほとんどの開発者の場合、SKU ごとに 1 つの既定の可用性があります。For most developers, each SKU has a single default availability.

ストア IDStore IDs

アプリやアドオンなど、ストアのすべての製品には関連付けられたストア ID があります (これは製品ストア ID と呼ばれることもあります)。Every app, add-on, or other product in the Store has an associated Store ID (this is also sometimes called a product Store ID). 多くの API は、アプリまたはアドオンで操作を実行するためにストア ID を必要とします。Many APIs require the Store ID in order to perform an operation on an app or add-on.

ストア内の製品のストア ID は 12 文字の英数字文字列です。たとえば、9NBLGGH4R315 のようになります。The Store ID of any product in the Store is 12-character alpha-numeric string, such as 9NBLGGH4R315. ストア内の製品のストア ID は、次のようにさまざまな方法で取得できます。There are several different ways to get the Store ID for a product in the Store:

  • アプリの場合、ストア ID は、デベロッパー センター ダッシュボードの [アプリ ID] ページで取得できます。For an app, you can get the Store ID on the App identity page of the Dev Center dashboard.
  • アドオンの場合、ストア ID はダッシュボードのアドオンの概要ページで取得できます。For an add-on, you can get the Store ID on the add-on's overview page in the dashboard.
  • 製品の場合、その製品を表す StoreProduct オブジェクトの StoreId プロパティを使用するにより、ストア ID をプログラムで取得することもできます。For any product, you can also get the Store ID programmatically by using the StoreId property of the StoreProduct object that represents the product.

製品の SKU と可用性の場合は、その SKU と可用性にも形式の異なる固有のストア ID が用意されています。For products with SKUs and availabilities, the SKUs and availabilities also have their own Store IDs with different formats.

オブジェクトObject ストア ID の形式Store ID format
SKUSKU SKU の場合、ストア ID の形式は <product Store ID>/xxxx のようになります。ここで、xxxx は製品の SKU を識別する 4 文字の英数字文字列です。The Store ID for a SKU has the format <product Store ID>/xxxx, where xxxx is a 4-character alpha-numeric string that identifies a SKU for the product. たとえば、9NBLGGH4R315/000N と記述します。For example, 9NBLGGH4R315/000N. この ID は、StoreSku オブジェクトの StoreId プロパティによって返され、SKU ストア ID と呼ばれることもあります。This ID is returned by the StoreId property of a StoreSku object, and it is sometimes called the SKU Store ID.
可用性Availability 可用性の場合、ストア ID の形式は <product Store ID>/xxxx/yyyyyyyyyyyy のようになります。ここで、xxxx は製品の SKU を識別する 4 文字の英数字文字列で、yyyyyyyyyyyy は SKU の可用性を識別する 12 文字の英数字文字列です。The Store ID for an availability has the format <product Store ID>/xxxx/yyyyyyyyyyyy, where xxxx is a 4-character alpha-numeric string that identifies a SKU for the product and yyyyyyyyyyyy is a 12-character alpha-numeric string that identifies an availability for the SKU. たとえば、9NBLGGH4R315/000N/4KW6QZD2VN6X と記述します。For example, 9NBLGGH4R315/000N/4KW6QZD2VN6X. この ID は、StoreAvailability オブジェクトの StoreId プロパティによって返され、可用性ストア ID と呼ばれることもあります。This ID is returned by the StoreId property of a StoreAvailability object, and it is sometimes called the availability Store ID.

コードでアドオンの製品 ID を使用する方法How to use product IDs for add-ons in your code

アプリのコンテキストでユーザーがアドオンを利用できるようにするには、デベロッパー センター ダッシュボードでアドオンの申請を作成するときに、アドオン用の固有の製品 ID を入力しなければなりません。If you want to make an add-on available to your customers in the context of your app, you must enter a unique product ID for your add-on when you create your add-on submission in the Dev Center dashboard. この製品 ID を使用することでコード内でアドオンを参照できます。ただし、製品 ID を使用できる特定のシナリオは、アプリのアプリ内購入に使用する名前空間によって異なります。You can use this product ID to refer to the add-on in your code, although the specific scenarios in which you can use the product ID depend on which namespace you use for in-app purchases in your app.

注意

デベロッパー センター ダッシュボードでアドオン用に入力する製品 ID は、アドオンのストア ID とは異なります。The product ID that you enter in the Dev Center dashboard for an add-on is different than the add-on's Store ID. ストア ID はデベロッパー センターによって生成されます。The Store ID is generated by Dev Center.

Windows.Services.Store 名前空間を使うアプリApps that use the Windows.Services.Store namespace

アプリで Windows.Services.Store 名前空間を使用している場合、製品 ID を使用することで、アドオンを表す StoreProduct や、アドオンのライセンスを表す StoreLicense を簡単に識別できます。If your app uses the Windows.Services.Store namespace, you can use the product ID to easily identify the StoreProduct that represents your add-on or the StoreLicense that represents your add-on's license. 製品 ID は、StoreProduct.InAppOfferToken プロパティおよび StoreLicense.InAppOfferToken プロパティにより公開されます。The product ID is exposed by the StoreProduct.InAppOfferToken and StoreLicense.InAppOfferToken properties.

注意

製品 ID はコードでアドオンを識別する便利な方法ですが、Windows.Services.Store 名前空間のほとんどの操作では、製品 ID の代わりにアドオンのストア ID を使用します。Although the product ID is a useful way to identify an add-on in your code, most operations in the Windows.Services.Store namespace use the Store ID of an add-on instead of the product ID. たとえば、アプリの 1 つ以上の既知のアドオンをプログラムで取得するには、アドオンの (製品 ID ではなく) ストア ID を GetStoreProductsAsync メソッドに渡します。For example, to programmatically retrieve one or more known add-ons for an app, pass the Store IDs (rather than the product IDs) of the add-ons to the GetStoreProductsAsync method. 同様に、コンシューマブルなアドオンをフルフィルメント完了として報告するには、アドオンの (製品 ID ではなく) ストア ID を ReportConsumableFulfillmentAsync メソッドに渡します。Similarly, to report a consumable add-on as fulfilled, pass the Store ID of the add-on (rather than the product ID) to the ReportConsumableFulfillmentAsync method.

Windows.ApplicationModel.Store 名前空間を使うアプリApps that use the Windows.ApplicationModel.Store namespace

アプリで Windows.ApplicationModel.Store 名前空間を使用している場合は、ほとんどの操作に、デベロッパー センター ダッシュボードでアドオンに割り当てた製品 ID を使用する必要があります。If your app uses the Windows.ApplicationModel.Store namespace, you'll need to use the product ID that you assign to an add-on in the Dev Center dashboard for most operations. 次に、例を示します。For example: