Ajouter des offres de précommande pour des produits ponctuels

1. Introduction

Dans cet atelier de programmation, vous allez vous concentrer sur la création d'un produit ponctuel et ajouter une offre de précommande pour ce produit.

Remarque : Avant de commencer cet atelier de programmation, vous devez demander l'accès à la fonctionnalité de précommande en remplissant le formulaire de participation au PAA pour les produits ponctuels.

Audience

Cet atelier de programmation s'adresse aux développeurs d'applications Android qui connaissent les produits ponctuels et souhaitent savoir comment ajouter des offres de précommande à leurs produits ponctuels.

Conditions préalables

Si vous débutez avec les produits ponctuels, nous vous recommandons de suivre l'atelier de programmation Débloquez de nouveaux marchés grâce à la tarification régionale des produits.

Ce que vous allez apprendre...

  • Découvrez comment utiliser la Google Play Console pour créer des offres de précommande pour vos produits ponctuels.
  • Comment utiliser les API de la bibliothèque Play Billing pour interroger les produits ponctuels et les informations correspondantes sur les offres de précommande.

Ce dont vous avez besoin...

2. Créer l'application exemple

Cet atelier de programmation utilise une application Android exemple pour vous apprendre à gérer les produits à usage unique. L'application exemple est conçue pour être une application Android entièrement fonctionnelle. Elle dispose d'un code source complet qui montre les aspects suivants :

  • Intégrez l'application à PBL.
  • Récupération des produits ponctuels et des offres de précommande associées.
  • Exécutez des parcours d'achat pour la tarification régionale.

La vidéo de démonstration suivante montre à quoi ressemblera l'application exemple et comment elle se comportera une fois déployée et exécutée.

Si vous connaissez déjà les produits ponctuels et la bibliothèque Play Billing (PBL), vous pouvez télécharger l'application exemple et l'essayer.

Prérequis

Avant de créer et de déployer l'application exemple, procédez comme suit :

Build

L'objectif de cette étape de compilation est de générer un fichier Android App Bundle signé de l'application exemple.

Pour générer l'app bundle Android, procédez comme suit :

  1. Téléchargez l'application exemple depuis GitHub.
  2. Créez l'application exemple. Avant de créer l'application, modifiez le nom du package de l'application exemple, puis créez-la. Si vous avez des packages d'autres applications dans votre Play Console, assurez-vous que le nom de package que vous fournissez pour l'application exemple est unique.

    Remarque : La compilation de l'application exemple ne crée qu'un fichier APK que vous pouvez utiliser pour les tests locaux. Toutefois, l'exécution de l'application ne récupère pas les produits ni les prix, car les produits n'ont pas été configurés dans la Play Console.
  3. Générez un Android App Bundle signé.
    1. Générer une clé d'importation et un keystore
    2. Signer votre application avec votre clé d'importation
    3. Configurer la signature d'application Play

L'étape suivante consiste à importer l'app bundle Android dans la Google Play Console.

3. Créer une offre de précommande avec un code promotionnel dans la Play Console

Pour créer des produits ponctuels dans la Google Play Console, vous devez disposer d'une application dans la Play Console. Créez une application dans la Play Console, puis importez l'app bundle signé que vous avez créé précédemment.

Créer une application

Pour créer une application :

  1. Connectez-vous à la Google Play Console à l'aide de votre compte de développeur.
  2. Cliquez sur Créer une application. La page Créer une application s'ouvre.
  3. Saisissez le nom de l'application, sélectionnez la langue par défaut et indiquez d'autres informations la concernant.
  4. Cliquez sur Create app (Créer une application). Une application est alors créée dans la Google Play Console.

Vous pouvez maintenant importer l'app bundle signé de l'application exemple.

Importer l'app bundle signé

  1. Importez l'app bundle signé dans le canal de test interne de la console Google Play. Vous ne pourrez configurer les fonctionnalités liées à la monétisation dans la Play Console qu'après l'avoir importée.
    1. Cliquez sur Tester et publier > Tests > Version interne > Créer une version.
    2. Saisissez un nom de release et importez le fichier APK signé.
    3. Cliquez sur Suivant, puis sur Enregistrer et publier.

Vous pouvez maintenant créer les produits ponctuels.

Créer un produit ponctuel

Créez ensuite le produit ponctuel que vous souhaitez que les utilisateurs achètent.

  1. Ouvrez l'application exemple dans la Google Play Console, puis accédez à Monétiser avec Play > Produits > Produits ponctuels.
  2. Cliquez sur Créer un produit ponctuel.
  3. Saisissez les informations suivantes sur le produit :
    • Identifiant produit : saisissez un identifiant unique. Exemple :upcoming_movie_1
    • (Facultatif) Tags : ajoutez des tags pertinents.
    • Nom : saisissez le nom d'un produit. Exemple :Product Movie
    • Description : saisissez une description du produit. Exemple :Product Description
    • (Facultatif) Ajoutez une image d'icône : importez une icône représentant votre produit.
    Remarque : Pour cet atelier de programmation, vous pouvez ignorer la configuration de la section Taxes, conformité et programmes.
  4. Cliquez sur Suivant.
  5. Ajoutez une option d'achat et configurez sa disponibilité selon la région. Un produit ponctuel doit comporter au moins une option d'achat, qui définit comment le droit d'accès est accordé, son prix et sa disponibilité selon la région. Pour cet atelier de programmation, nous allons ajouter l'option standard Acheter pour le produit.Dans la section Option d'achat, saisissez les informations suivantes :
    • ID de l'option d'achat : saisissez un ID unique. Exemple :buy-movie
    • Type d'achat : sélectionnez Acheter.
    • (Facultatif) Tags : ajoutez des tags spécifiques à cette option d'achat.
    • (Facultatif) Cliquez sur Options avancées pour configurer les options avancées. Pour cet atelier de programmation, vous pouvez ignorer la configuration des options avancées.
  6. Vous devez ensuite configurer la disponibilité et le prix régionaux de l'option d'achat. Dans la section "Disponibilité selon la région", vous indiquerez les régions dans lesquelles votre produit est disponible, y compris celles où votre application n'a pas encore été publiée. Par défaut, une option d'achat est disponible dans toutes les régions.Dans la section Disponibilité et prix, cliquez sur Modifier la disponibilité et l'accès.
    1. Sélectionnez Définir comme indisponible.
    Notez que toutes les régions sont automatiquement sélectionnées et définies sur Disponible.
    1. Désélectionnez uniquement le pays United States, puis cliquez sur Définir comme indisponible. Le produit ponctuel ne sera désormais disponible que dans United States.
    2. Dans le menu déroulant Toutes les régions, sélectionnez Pays et régions disponibles. Vous ne devriez voir que United States.
    3. Cliquez sur l'icône Prix. Une boîte de dialogue permettant de définir le prix s'affiche.
    4. Saisissez "10 USD", puis cliquez sur Enregistrer.
  7. Cliquez sur Enregistrer comme brouillon.

Remarque : N'activez pas encore l'option d'achat. Nous l'activerons après avoir configuré l'offre de précommande. En effet, vous ne pouvez pas ajouter d'offre de précommande à une option d'achat active dont la disponibilité régionale est définie.

Ajouter une offre de précommande

Vous allez maintenant ajouter une offre de précommande pour l'option d'achat que vous avez créée précédemment. Une offre de précommande permet aux utilisateurs d'acheter votre article avant sa sortie officielle. Notez que les offres de précommande ne sont disponibles que pour l'option d'achat Acheter et ne peuvent être configurées que pour les nouveaux produits dans une région.

Pour ajouter une offre de précommande, vous devez suivre les deux étapes suivantes :

  1. Préparez l'option d'achat Acheter pour l'offre de précommande.
  2. Ajoutez l'offre de précommande pour l'option d'achat.

Préparer l'option d'achat pour l'offre de précommande

  1. Ouvrez l'application exemple dans la Google Play Console, puis accédez à Monétiser avec Play > Produits > Produits ponctuels.
  2. Sur la page Produits ponctuels, cliquez sur la flèche vers la droite à côté du produit (upcoming_movie_1). La page Modifier le produit ponctuel s'ouvre.
  3. Cliquez sur la flèche vers la droite à côté de l'option d'achat buy-movie que vous avez créée précédemment. La page Modifier l'option d'achat s'ouvre.
  4. Cliquez sur Modifier la disponibilité et l'accès, puis sélectionnez Définir comme disponible et autoriser les utilisateurs à précommander.
  5. Dans le menu déroulant Toutes les régions, sélectionnez Pays et régions disponibles. Seules les United States que vous avez configurées précédemment devraient s'afficher.
  6. Sélectionnez le pays, puis cliquez sur Disponible uniquement en précommande.
  7. Cliquez sur Enregistrer.

Notez que vous n'avez pas encore ajouté d'offre de précommande à votre option d'achat. L'étape suivante consiste à ajouter l'offre de précommande.

Ajouter une offre de précommande

  1. Ouvrez l'application exemple dans la Google Play Console, puis accédez à Monétiser avec Play > Produits > Produits ponctuels.
  2. Sur la page Produits ponctuels, cliquez sur Ajouter une offre > Précommande pour votre produit (upcoming_movie_1). La page Ajouter une précommande s'ouvre.
  3. Saisissez les détails de la précommande :
    • ID de la précommande : saisissez preorder-offer-1.
    • (Facultatif) Ajoutez une remise : vous pouvez sélectionner Aucune, Pourcentage ou Remise absolue. Pour cet atelier de programmation, sélectionnez Aucun.
    • (Facultatif) Tags : ajoutez des tags pertinents.
    • Date et heure de début : définissez une date au moins trois jours dans le futur.
    • Date et heure de fin : définissez une date au moins 24 heures après la date de début.
    • Disponibilité après la période de précommande : indiquez si le produit sera disponible immédiatement après la période de précommande ou à une date/heure ultérieure spécifique.
    • (Facultatif) Garantie du prix le plus bas : sélectionnez cette option si vous souhaitez que les utilisateurs paient le prix le moins élevé entre le prix de leur précommande et le prix à la sortie. Cela peut être une incitation forte pour les premiers acheteurs.
  4. Cliquez sur Enregistrer.
  5. Ouvrez la page Modifier le produit ponctuel pour votre produit ponctuel (upcoming_movie_1).
  6. Cliquez sur Activer pour l'option d'achat "Acheter" (buy-movie).
  7. Cliquez sur Activer pour l'offre de précommande (preorder-offer-1) sous l'option d'achat "Acheter". L'offre de précommande est alors activée et devient disponible à la date que vous avez configurée dans les détails de la précommande.

Vidéo sur la création d'offres de précommande

La vidéo suivante montre les étapes de création d'une offre de précommande décrites précédemment.

4. Intégrer à PBL

Pour intégrer votre application à la bibliothèque Play Billing (PBL), procédez comme suit :

  1. Ajoutez la dépendance de la bibliothèque Play Billing à l'application exemple.
    dependencies {
    val billing_version = "8.1.0"
    
    implementation("com.android.billingclient:billing-ktx:$billing_version")
    }
    
  2. Initialisez le BillingClient. BillingClient est le SDK client qui réside dans votre application et communique avec la bibliothèque Play Billing. L'extrait de code suivant montre comment initialiser le client de facturation.
    private BillingClient createBillingClient() {
    return BillingClient.newBuilder(activity)
        .enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
        // For one-time products, add a listener to process and acknowledge the purchases. This will notify
        // Google the purchase was processed.
        // For client-only apps, use billingClient.acknowledgePurchase().
        // If you have a secure backend, you must acknowledge purchases on your server using the
        // server-side API.
        // See https://developer.android.com/google/play/billing/security#acknowledge
        // In this sample snippet purchases aren't processed. You must
        // implement your business logic to process and acknowledge the purchases.
        .setListener((billingResult, purchases) -> {})
        .enableAutoServiceReconnection()
        .build();
     }
    
  3. Connectez-vous à Google Play.L'extrait de code suivant montre comment se connecter à Google Play.
    /**
    * Starts the billing connection with Google Play. This method should be called exactly once
    * before any other methods in this class.
    *
    * @param productList The list of products to query for after the connection is established.
    */
    public void startBillingConnection(List<Product> productList) {
        billingClient.startConnection(
            new BillingClientStateListener() {
            @Override
            public void onBillingSetupFinished(BillingResult billingResult) {
                if (billingResult.getResponseCode() == BillingResponseCode.OK) {
                Log.d(TAG, "Billing Client Connection Successful");
                queryProductDetails(productList);
                } else {
                Log.e(TAG, "Billing Client Connection Failed: " + billingResult.getDebugMessage());
                listener.onBillingSetupFailed(billingResult); // Propagate the error to the listener to show a message to the user.
                }
            }
    
            @Override
            public void onBillingServiceDisconnected() {
                Log.e(TAG, "Billing Client Connection Lost");
                listener.onBillingError("Billing Connection Lost");
            }
            });
    }
    
  4. Récupérez les informations détaillées sur le produit ponctuel.Après avoir intégré votre application à PBL, vous devez récupérer les informations détaillées sur le produit ponctuel dans votre application. L'extrait de code suivant montre comment récupérer les informations détaillées sur le produit ponctuel dans votre application.
    private void queryProductDetails(List<Product> productList) {
        QueryProductDetailsParams queryProductDetailsParams =
            QueryProductDetailsParams.newBuilder().setProductList(productList).build();
    
        billingClient.queryProductDetailsAsync(
            queryProductDetailsParams,
            new ProductDetailsResponseListener() {
            @Override
            public void onProductDetailsResponse(
                BillingResult billingResult, QueryProductDetailsResult productDetailsResponse) {
                if (billingResult.getResponseCode() == BillingResponseCode.OK) {
                List<ProductDetails> productDetailsList =
                    productDetailsResponse.getProductDetailsList();
                    listener.onProductDetailsResponse(productDetailsList);
                } else {
                Log.e(TAG, "QueryProductDetailsAsync Failed: " + billingResult.getDebugMessage());
                listener.onBillingError("Query Products Failed: " + billingResult.getResponseCode());
                }
            }
            });
    }
    
    Récupérer le produit unique (upcoming_movie_1 dans cet exemple) dans ProductDetails renvoie une réponse semblable à la suivante :
    {
        "productId": "upcoming_movie_1",
        "type": "inapp",
        "title": "Purrfect Mayhem: The Final Playback (Movies All Day | Play Samples)",
        "name": "Purrfect Mayhem: The Final Playback",
        "description": "Yolo and Thorne must reach the original broadcasting site to initiate the \"Final Playback\" and save the timeline. Follow them through their race against the Clockinators.",
        "skuDetailsToken": "<---skuDetailsToken--->",
        "oneTimePurchaseOfferDetails": {},
        "oneTimePurchaseOfferDetailsList": [
            {
                "priceAmountMicros": 8500000,
                "priceCurrencyCode": "USD",
                "formattedPrice": "$8.50",
                "offerIdToken": "<---offerIdToken--->",
                "offerId": "preorder",
                "purchaseOptionId": "buy-option",
                "offerTags": [],
                "validTimeWindow": {
                    "startTimeMillis": 1756771200000,
                    "endTimeMillis": 1785542400000
                },
                "preorderDetails": {
                    "preorderReleaseTimeMillis": 1785542400000,
                    "preorderPresaleEndTimeMillis": 1785542400000
                }
            }
        ]
    }
    
    Notez que les détails de l'offre de précommande sont disponibles dans oneTimePurchaseOfferDetailsList. Cette liste comporte une option d'achat (buy-option) pour laquelle une offre de précommande a été configurée dans la Play Console. Vous pouvez identifier chaque option d'achat de manière unique grâce à son offerIdToken.
  5. Récupérez le jeton de l'offre ainsi que les détails de l'offre de précommande. Vous avez besoin du jeton de l'offre pour lancer le flux de facturation à l'étape 6.
    @Override
    public void onProductDetailsResponse(List<ProductDetails> productDetailsList) {
    
    if (productDetailsList != null && !productDetailsList.isEmpty()) {
    
    // Process productDetailsList returned by QueryProductDetailsResult
    for (ProductDetails productDetails : productDetailsResult.getProductDetailsList()) {
      for (OneTimePurchaseOfferDetails oneTimePurchaseOfferDetails :
          productDetails.getOneTimePurchaseOfferDetailsList()) {
        // Checks if the offer is a preorder offer.
        if (oneTimePurchaseOfferDetails.getPreorderDetails() != null) {
          // Process the returned PreorderDetails
          OneTimePurchaseOfferDetails.PreorderDetails preorderDetails =
              oneTimePurchaseOfferDetails.getPreorderDetails();
          // Get preorder release time in millis.
          long preorderReleaseTimeMillis = preorderDetails.getPreorderReleaseTimeMillis();
          // Get preorder presale end time in millis.
          long preorderPresaleEndTimeMillis = preorderDetails.getPreorderPresaleEndTimeMillis();
          // Get offer ID
            String offerId = oneTimePurchaseOfferDetails.getOfferId();
          // Get the associated purchase option ID
          if (oneTimePurchaseOfferDetails.getPurchaseOptionId() != null) {
            String purchaseOptionId = oneTimePurchaseOfferDetails.getPurchaseOptionId();
          }
        }
      }
      }
      } else {
            Log.e(TAG, "No product details found for " + productId);
        }
    }
    
  6. Lancez le parcours de facturation.
    /**
     * Launches the billing flow for the product with the given offer token.
    *
    * @param activity The activity instance from which the billing flow will be launched.
    * @param productDetails The product details of the product to purchase.
    * @param offerToken The offer token of the product to purchase.
    * @return The result of the billing flow.
    */
    public void launchPurchase(Activity activity, ProductDetails productDetails, String offerToken) {
        ImmutableList<BillingFlowParams.ProductDetailsParams> productDetailsParamsList =
            ImmutableList.of(
                BillingFlowParams.ProductDetailsParams.newBuilder()
                    .setProductDetails(productDetails)
                    .setOfferToken(offerToken)
                    .build());
        BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
            .setProductDetailsParamsList(productDetailsParamsList)
            .build();
        billingClient.launchBillingFlow(activity, billingFlowParams);
    }
    

5. Tester les options d'achat

Avant de rendre vos produits ponctuels disponibles dans votre application en production, vous pouvez tester votre intégration PBL à l'aide de testeurs de licence et de Play Billing Lab.

Pour savoir comment tester vos options d'achat à l'aide de Play Billing Lab, consultez l'atelier de programmation Débloquer de nouveaux marchés grâce à la tarification régionale des produits.

6. Étapes suivantes

Documents de référence

7. Félicitations !

Félicitations ! Vous avez réussi à parcourir la Google Play Console pour créer une offre de précommande pour un produit ponctuel. Vous avez maintenant une meilleure compréhension du catalogue de produits flexibles de Google Play pour les achats ponctuels.

Enquête

Vos commentaires sur cet atelier de programmation sont très importants. Prenez quelques minutes pour répondre à notre enquête.