Activer les achats de produits consommables dans l’application (HTML)

[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]

Proposez des produits consommables dans l’application—qui peuvent être achetés, utilisés et rachetés — via la plateforme commerciale du Windows Store, afin d’offrir à vos clients une expérience d’achat à la fois solide et fiable au sein de l’application. Cette fonction est particulièrement utile pour différents aspects du jeu, comme les devises (or, pièces, etc.) susceptibles d’être achetées, puis utilisées pour acheter des améliorations spécifiques.

Ce que vous devez savoir

Technologies

Prérequis

  • Cette rubrique porte sur les rapports relatifs aux achats et acquisitions de produits consommables dans l’application. Si vous ne connaissez pas les produits dans l’application, passez en revue la section Activer les achats de produits dans l’application pour en savoir plus sur les informations relatives aux licences et savoir comment répertorier correctement les produits de l’application dans le Windows Store.

  • Lorsque vous codez et testez de nouveaux produits dans l’application pour la première fois, vous devez utiliser l’objet CurrentAppSimulator au lieu de l’objet CurrentApp. Cela vous permet de vérifier votre logique de licence à l’aide d’appels simulés destinés au serveur de licences au lieu d’appels destinés au serveur Windows Live. Pour cela, vous devez personnaliser le fichier nommé « WindowsStoreProxy.xml » dans %userprofile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData. Le simulateur Microsoft Visual Studio crée ce fichier quand vous exécutez votre application pour la première fois. Vous pouvez également charger un fichier personnalisé au moment de l’exécution. Pour plus d’informations, voir la documentation relative à CurrentAppSimulator.

  • Cette rubrique fait également référence à des exemples de code fournis dans Exemple d’application en version d’évaluation et d’achats dans l’application disponible dans MSDN Code Gallery. Cet exemple représente un excellent moyen d’obtenir une expérience pratique avec les différentes options de monétisation fournies pour les applications du Windows Store.

Instructions

Étape 1: Établissement de la demande d’achat

La demande d’achat initiale est effectuée via le paramètre RequestProductPurchaseAsync, comme tout autre achat effectué via le Windows Store. En ce qui concerne les produits dans l’application, la différence réside dans le fait qu’après avoir effectué un achat un client ne peut pas acheter le même produit tant que l’application n’a pas averti le Windows Store que l’achat précédent a été correctement effectué. Il revient à votre application d’acquérir les consommables achetés et d’avertir le Windows Store de l’opération.

L’exemple suivant représente une demande d’achat de produits consommables dans l’application. Vous noterez la présence de commentaires de code indiquant le moment auquel votre application doit effectuer l’acquisition locale du produit consommable dans l’application, selon deux scénarios différents : lorsque la demande aboutit ou lorsqu’elle échoue suite à un achat non effectué du même produit.


function purchaseProduct1() {
    CurrentAppSimulator.requestProductPurchaseAsync("product1").done(
        function (purchaseResults) {
            if (purchaseResults.status === ProductPurchaseStatus.succeeded) {
                tempTransactionId["product1"] = purchaseResults.transactionId;

        // Grant the user their purchase here, and then pass the product ID and transaction ID to currentApp.reportConsumableFulfillment
        // To indicate local fulfillment to the Windows Store.

            } else if (purchaseResults.status === ProductPurchaseStatus.notFulfilled) {
                tempTransactionId["product1"] = purchaseResults.transactionId;
                
        // First check for unfulfilled purchases and grant any unfulfilled purchases from an earlier transaction.
        // Once products are fulfilled pass the product ID and transaction ID to currentApp.reportConsumableFulfillment
        // To indicate local fulfillment to the Windows Store.
            }
        }
    );
}

Étape 2: Suivi de l’acquisition locale du consommable

Quand vous accordez à votre client un accès au produit consommable dans l’application, il est important de garder une trace des produits acquis (productId) et de chaque transaction associée à cette acquisition (transactionId).

Important  Votre application est chargée de signaler correctement l’acquisition au Store. Cette étape est essentielle pour assurer une expérience d’achat juste et fiable à vos clients.

 

L’exemple suivant illustre l’utilisation des propriétés PurchaseResults à partir de l’appel RequestProductPurchaseAsync de l’étape précédente pour identifier le produit acheté à acquérir. Un tableau est utilisé pour stocker les informations sur le produit à un emplacement pouvant être ultérieurement référencé afin de confirmer que l’acquisition locale a abouti.

function grantFeatureLocally(productId, transactionId) {
    var nextIndex = grantedIds[productId].length;
    grantedIds[productId][nextIndex] = transactionId;

    // Grant the user the content, such as by increasing some kind of asset count
}

L’exemple qui suit montre comment utiliser le tableau de l’exemple précédent pour accéder aux associations ID produit/ID de transaction, qui sont utilisées plus tard quand une acquisition est signalée au Store.

Important  Quelle que soit la méthodologie utilisée par votre application pour suivre et confirmer l’acquisition, elle doit faire preuve de la diligence appropriée pour garantir que les clients n’ont pas à payer des articles qu’ils n’ont pas reçus.

 

function isLocallyFulfilled(productId, transactionId) {
    for (var i in grantedIds[productId]) {
        if (grantedIds[productId][i] === transactionId) {
            return true;
        }
    }
    return false;
}

Étape 3: Signalement de l’acquisition de produits au Store

Une fois l’acquisition locale effectuée, votre application doit passer un appel ReportConsumableFulfillmentAsync incluant l’élément productId et la transaction dans laquelle l’achat de produit est inclus.

Important  Tant que vous ne signalerez pas les produits consommables acquis dans l’application au Windows Store, l’utilisateur ne pourra pas racheter ce produit.

 


var result = FulfillmentResult; 
result = CurrentAppSimulator.reportConsumableFulfillmentAsync("product1", tempTransactionId["product1"]);

Étape 4: Identification des achats non acquis

Votre application peut utiliser la méthode GetUnfulfilledConsumablesAsync pour rechercher les produits consommables non acquis dans l’application et ce, à tout moment. Cette méthode doit être appelée régulièrement pour rechercher les consommables non acquis suite à des événements imprévus de l’application (interruption de la connectivité réseau, arrêt de l’application, etc.)

L’exemple suivant montre comment la méthode GetUnfulfilledConsumablesAsync peut être utilisée pour énumérer les consommables non fournis et comment votre application peut parcourir cette liste pour effectuer l’acquisition locale.

CurrentAppSimulator.getUnfulfilledConsumablesAsync().done(
function (unfulfilledList) {

    unfulfilledList.forEach(function (product) {
        logMessage += "\nProduct Id: " + product.productId + " Transaction Id: " + product.transactionId;

        // This is where you would pass the product ID and transaction ID to currentAppSimulator.reportConsumableFulfillment
    // To indicate local fulfillment to the Windows Store.
    });
});

Rubriques associées

Activer les achats de produits dans l’application

Exemple d’application en version d’évaluation et d’achats dans l’application

Windows.ApplicationModel.Store