Activer les achats in-app d’applications et de modules complémentairesEnable in-app purchases of apps and add-ons

Cet article montre comment utiliser des membres dans l’espace de noms Windows. services. Store pour demander l’achat de l’application actuelle ou de l’un de ses composants additionnels pour l’utilisateur.This article demonstrates how to use members in the Windows.Services.Store namespace to request the purchase the current app or one of its add-ons for the user. Par exemple, si l’utilisateur possède actuellement une version d’évaluation de l’application, vous pouvez utiliser ce processus pour acheter une licence complète pour cet utilisateur.For example, if the user currently has a trial version of the app, you can use this process to purchase a full license for the user. Vous pouvez aussi utiliser ce processus pour acheter une extension, comme un nouveau niveau de jeu pour l’utilisateur.Alternatively, you can use this process to purchase an add-on, such as a new game level for the user.

Pour demander l’achat d’une application ou d’un module complémentaire, l’espace de noms Windows. services. Store fournit plusieurs méthodes différentes :To request the purchase of an app or add-on, the Windows.Services.Store namespace provides several different methods:

Chaque méthode présente une interface utilisateur d’achat standard à l’utilisateur et s’exécute de manière asynchrone une fois la transaction terminée.Each method presents a standard purchase UI to the user and then completes asynchronously after the transaction is complete. La méthode retourne un objet qui indique si la transaction a réussi.The method returns an object that indicates whether the transaction was successful.

Notes

L’espace de noms Windows. services. Store a été introduit dans Windows 10, version 1607, et il ne peut être utilisé que dans les projets qui ciblent l' édition anniversaire windows 10 (10,0 ; Build 14393) ou une version ultérieure dans Visual Studio.The Windows.Services.Store namespace was introduced in Windows 10, version 1607, and it can only be used in projects that target Windows 10 Anniversary Edition (10.0; Build 14393) or a later release in Visual Studio. Si votre application cible une version antérieure de Windows 10, vous devez utiliser l’espace de noms Windows.ApplicationModel.Store à la place de l’espace de noms Windows.Services.Store.If your app targets an earlier version of Windows 10, you must use the Windows.ApplicationModel.Store namespace instead of the Windows.Services.Store namespace. Pour plus d’informations, consultez cet article.For more information, see this article.

PrérequisPrerequisites

La configuration requise pour cet exemple est la suivante :This example has the following prerequisites:

  • Projet Visual Studio pour une application plateforme Windows universelle (UWP) qui cible Windows 10 édition anniversaire (10,0 ; Build 14393) ou version ultérieure.A Visual Studio project for a Universal Windows Platform (UWP) app that targets Windows 10 Anniversary Edition (10.0; Build 14393) or a later release.
  • Vous avez créé une soumission d’application dans l’espace partenaires et cette application est publiée dans le Windows Store.You have created an app submission in Partner Center and this app is published in the Store. Vous pouvez éventuellement configurer l’application afin qu’elle ne soit pas détectable dans le magasin pendant que vous la Testez.You can optionally configure the app so it is not discoverable in the Store while you test it. Pour plus d’informations, consultez notre Guide de test.For more information, see our testing guidance.
  • Si vous souhaitez activer des achats dans l’application pour un module complémentaire pour l’application, vous devez également créer le module complémentaire dans l’espace partenaires.If you want to enable in-app purchases for an add-on for the app, you must also create the add-on in Partner Center.

Le code de cet exemple se base sur les hypothèses suivantes :The code in this example assumes:

  • Le code s’exécute dans le contexte d’une Page qui contient un ProgressRing nommé workingProgressRing et un TextBlock nommé textBlock.The code runs in the context of a Page that contains a ProgressRing named workingProgressRing and a TextBlock named textBlock. Ces objets sont utilisés pour respectivement indiquer qu’une opération asynchrone est en cours et afficher les messages de sortie.These objects are used to indicate that an asynchronous operation is occurring and to display output messages, respectively.
  • Le fichier de code contient une instruction using pour l’espace de noms Windows.Services.Store.The code file has a using statement for the Windows.Services.Store namespace.
  • Cette application mono-utilisateur ne s’exécute que dans le contexte de l’utilisateur qui l’a lancée.The app is a single-user app that runs only in the context of the user that launched the app. Pour plus d’informations, consultez Versions d’évaluation et achats in-app.For more information, see In-app purchases and trials.

Notes

Si vous disposez d’une application de bureau qui utilise le pont Desktop, vous devrez peut-être ajouter du code supplémentaire non présenté dans cet exemple pour configurer l’objet StoreContext .If you have a desktop application that uses the Desktop Bridge, you may need to add additional code not shown in this example to configure the StoreContext object. Pour plus d’informations, voir Utilisation de la classe StoreContext dans une application de bureau qui utilise Desktop Bridge.For more information, see Using the StoreContext class in a desktop application that uses the Desktop Bridge.

Exemple de codeCode example

Cet exemple montre comment utiliser la méthode RequestPurchaseAsync de la classe StoreContext pour acheter une application ou une extension avec un ID Windows Store connu.This example demonstrates how to use the RequestPurchaseAsync method of the StoreContext class to purchase an app or add-on with a known Store ID. Pour obtenir un exemple d’application complète, consultez Exemple Windows Store.For a complete sample application, see the Store sample.

private StoreContext context = null;

public async void PurchaseAddOn(string storeId)
{
    if (context == null)
    {
        context = StoreContext.GetDefault();
        // If your app is a desktop app that uses the Desktop Bridge, you
        // may need additional code to configure the StoreContext object.
        // For more info, see https://aka.ms/storecontext-for-desktop.
    }

    workingProgressRing.IsActive = true;
    StorePurchaseResult result = await context.RequestPurchaseAsync(storeId);
    workingProgressRing.IsActive = false;

    // Capture the error message for the operation, if any.
    string extendedError = string.Empty;
    if (result.ExtendedError != null)
    {
        extendedError = result.ExtendedError.Message;
    }

    switch (result.Status)
    {
        case StorePurchaseStatus.AlreadyPurchased:
            textBlock.Text = "The user has already purchased the product.";
            break;

        case StorePurchaseStatus.Succeeded:
            textBlock.Text = "The purchase was successful.";
            break;

        case StorePurchaseStatus.NotPurchased:
            textBlock.Text = "The purchase did not complete. " +
                "The user may have cancelled the purchase. ExtendedError: " + extendedError;
            break;

        case StorePurchaseStatus.NetworkError:
            textBlock.Text = "The purchase was unsuccessful due to a network error. " +
                "ExtendedError: " + extendedError;
            break;

        case StorePurchaseStatus.ServerError:
            textBlock.Text = "The purchase was unsuccessful due to a server error. " +
                "ExtendedError: " + extendedError;
            break;

        default:
            textBlock.Text = "The purchase was unsuccessful due to an unknown error. " +
                "ExtendedError: " + extendedError;
            break;
    }
}

VidéoVideo

Regardez la vidéo suivante pour obtenir une vue d’ensemble de l’implémentation des achats dans l’application dans votre application.Watch the following video for an overview of how to implement in-app purchases in your app.