1. Introduction
Dans cet atelier de programmation, vous allez vous concentrer sur la création d'un produit ponctuel, définir son option d'achat, définir des prix spécifiques à une région et tester le parcours d'achat des produits ponctuels.
Audience
Cet atelier de programmation s'adresse aux développeurs d'applications Android qui souhaitent utiliser la Play Console pour gérer leur catalogue de produits ponctuels.
Ce que vous allez apprendre...
- Le modèle d'objet "produit ponctuel".
- Découvrez comment parcourir et utiliser la Google Play Console pour gérer votre catalogue de produits ponctuels.
- Découvrez comment traduire sans frais les informations sur les produits ponctuels dans différentes langues.
- Configurer la disponibilité et la tarification régionales pour les produits ponctuels
- Comment utiliser les API de la bibliothèque Play Billing pour interroger les informations détaillées sur les produits ponctuels.
- Découvrez comment tester les produits ponctuels à l'aide de Play Billing Lab.
Ce dont vous avez besoin...
- Accès à la Google Play Console avec un compte de développeur. Si vous n'avez pas de compte de développeur, vous devez en créer un.
- Un exemple d'application pour cet atelier de programmation que vous pouvez télécharger depuis GitHub.
- Android Studio
2. Première d'un produit ponctuel
Le modèle d'objet de produit ponctuel vous offre une plus grande flexibilité pour vendre vos produits et simplifie leur gestion. Le modèle d'objet sépare ce qui est vendu de la façon dont il est vendu, ce qui permet à un même droit d'accès d'avoir plusieurs prix et d'être commercialisé de différentes manières auprès des utilisateurs. Le modèle objet comporte trois niveaux de hiérarchie :
- Produit ponctuel : un objet produit définit ce que l'utilisateur achète.
- Option d'achat : une option d'achat définit comment le droit d'accès est accordé à l'utilisateur, son prix et la région dans laquelle le produit sera disponible. Un même produit peut être associé à plusieurs options d'achat, qui peuvent représenter des prix différents dans différentes régions.
- Offre : les offres peuvent affecter le prix de l'option d'achat à laquelle elles sont associées. Elles peuvent servir à modéliser des remises ou une précommande. Une même option d'achat peut comporter plusieurs offres.
Le diagramme suivant montre le modèle d'objet de produit ponctuel.
Figure 1 : Modèle d'objet ponctuel.
Pour en savoir plus, consultez la présentation des produits ponctuels.
3. Créer l'application exemple
Cet atelier de programmation utilise une application Android exemple pour vous montrer comment gérer les produits ponctuels. 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égrer l'application à PBL
- Récupération des produits ponctuels et des options d'achat associées
- Exécuter des parcours d'achat avec des prix régionaux
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 :
- Créez un compte de développeur Google Play Console. Si vous disposez déjà d'un compte de développeur, ignorez cette étape.
- Créez une application dans la Play Console. Lorsque vous créez une application, vous pouvez spécifier n'importe quel nom pour l'application exemple.
- Installez Android Studio.
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 :
- Téléchargez l'application exemple depuis GitHub.
- 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. - Générez un Android App Bundle signé.
L'étape suivante consiste à importer l'app bundle Android dans la Google Play Console.
4. Créer un produit ponctuel 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 :
- Connectez-vous à la Google Play Console à l'aide de votre compte de développeur.
- Cliquez sur Créer une application. La page Créer une application s'ouvre.
- Saisissez le nom de l'application, sélectionnez la langue par défaut et indiquez d'autres informations la concernant.
- 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é
- Importez l'app bundle signé dans le canal de test interne de la Google Play Console. Vous ne pourrez configurer les fonctionnalités liées à la monétisation dans la Play Console qu'après l'avoir importée.
- Cliquez sur Tester et publier > Tests > Version interne > Créer une version.
- Saisissez un nom de release et importez le fichier APK signé.
- Cliquez sur Suivant, puis sur Enregistrer et publier.
Vous pouvez maintenant créer vos produits ponctuels.
Créer un produit ponctuel
Pour créer un produit ponctuel :
- Dans la Play Console, accédez au menu de navigation de gauche, puis cliquez sur Monétiser avec Play > Produits > Produits ponctuels.
- Cliquez sur Créer un produit ponctuel.
- Saisissez les informations suivantes sur le produit :
- Identifiant produit : saisissez un identifiant unique. Exemple :
trending_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
Par défaut, le nom et la description du produit sont en anglais (États-Unis) – en-US. Vous pouvez également saisir manuellement le nom et la description dans d'autres langues. Pour saisir les informations, cliquez sur Gérer les traductions, sélectionnez les langues pour lesquelles vous souhaitez saisir le texte traduit, puis cliquez sur Appliquer. L'image suivante montre l'option Gérer les traductions :
Figure 2 : Gérer les traductions.
Les langues que vous avez sélectionnées s'affichent dans le menu déroulant des langues. Sélectionnez chaque langue, puis saisissez le nom et la description correspondants. Vous pouvez également traduire automatiquement le nom et la description du produit sans frais. Pour en savoir plus, consultez la section Traduire les produits ponctuels de cet atelier de programmation.
Remarque : Pour cet atelier de programmation, vous pouvez ignorer la configuration du champ Icône et de la section Taxes, conformité et programmes. - Identifiant produit : saisissez un identifiant unique. Exemple :
- Cliquez sur Suivant.
- 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.
- ID de l'option d'achat : saisissez un ID unique. Exemple :
- 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 > Définir comme indisponible. Notez que toutes les régions sont définies sur Disponible par défaut.- Sélectionnez tous les pays, sauf
France,SpainetUnited States, puis cliquez sur Définir comme indisponible. - Dans le menu déroulant Toutes les régions, sélectionnez Pays et régions disponibles. Seuls les pays que vous avez sélectionnés à l'étape précédente s'affichent.
- Pour chacun des pays disponibles, cliquez sur l'icône Modifier dans la colonne Prix. Une boîte de dialogue permettant de modifier le prix s'affiche. Saisissez et enregistrez les prix suivants :
- Pour
France, saisissez 10 EUR. - Pour
Spain, saisissez "8 EUR". - Pour
United States, saisissez 13 USD.
- Pour
- Sélectionnez tous les pays, sauf
- Cliquez sur Activer. Votre produit ponctuel est alors disponible avec l'option d'achat Acheter.
Remarque : La devise du prix régional est visible en fonction du pays défini par l'utilisateur dans Play. Par exemple, si le pays Play de l'utilisateur est défini sur la France, le prix du produit ponctuel s'affiche en euros.
Vidéo sur la création de produits ponctuels
La vidéo suivante montre les étapes de création d'un produit unique décrites précédemment.
Ajouter une option d'achat "Louer"
Ajoutez maintenant une option d'achat de location au produit ponctuel créé précédemment.
- Dans la Play Console, accédez au menu de navigation de gauche, puis cliquez sur Monétiser avec Play > Produits > Produits ponctuels.
- Cliquez sur la flèche vers la droite à côté du produit avec l'ID produit
trending_movie_1que vous avez créé à l'étape précédente. - Cliquez sur Ajouter une option d'achat.
- Dans la section Option d'achat, saisissez les informations suivantes :
- ID de l'option d'achat : saisissez
rent-movie. - Type d'achat : sélectionnez Louer.
- Période de location : sélectionnez "48 heures".
- Délai pour commencer à utiliser le produit loué : sélectionnez 24 heures.
- (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.
- ID de l'option d'achat : saisissez
- Ensuite, comme pour l'option d'achat, configurez la disponibilité régionale pour l'option de location. Consultez les étapes 6 et 7 de la section précédente. Lorsque vous définissez des prix régionaux, définissez un prix différent pour les locations. Exemple :
France: 5 EURSpain: 4 EURUnited States: 7 USD
5. Traduire les informations sur un produit ponctuel
Vous pouvez traduire le nom et la description de votre produit sans frais supplémentaires à l'aide de la fonctionnalité de traduction automatique disponible dans la Google Play Console.
Pour traduire le titre et la description, procédez comme suit :
- Dans la Google Play Console, accédez à Développer votre base d'utilisateurs > Traductions > Fiche Play Store et produits intégrés à l'application dans le menu de navigation de gauche.
- Cliquez sur Créer une commande.
- Sélectionnez l'option Traduction automatique sans frais, puis cliquez sur Suivant.
- Dans la liste des langues Traduire vers, sélectionnez Français – fr-FR et Espagnol – es-ES, puis cliquez sur Suivant.
- Sélectionnez Produits ponctuels et abonnements, puis cliquez sur Traduire et afficher les traductions. Une bannière de clause de non-responsabilité s'affiche. Acceptez la clause de non-responsabilité.
- La liste des langues traduites s'affiche. Cliquez sur Examiner et appliquer pour une langue. Vérifiez le texte, puis cliquez sur Appliquer toutes les traductions. Répétez cette étape pour toutes les langues que vous avez choisies pour la traduction.
Une fois la traduction effectuée, vous pouvez modifier le texte traduit dans la Play Console. Pour modifier le texte traduit :
- Ouvrez la page Produits ponctuels > [votre produit ponctuel] > Modifier le produit ponctuel > Modifier les infos sur le produit ponctuel.
- Sélectionnez la langue requise dans le menu déroulant. Le texte s'affiche dans la langue sélectionnée. L'image suivante montre la sélection d'une langue pour modifier le texte traduit :
Figure 3 : Modifier le texte traduit. - Modifiez le texte selon vos besoins, puis cliquez sur Enregistrer les modifications.
Le texte traduit est visible par l'utilisateur en fonction des préférences linguistiques de son téléphone. Par exemple, si la langue du téléphone de l'utilisateur est définie sur le français, le titre et la description du produit ponctuel s'affichent en français. L'exemple d'image suivant montre comment et où le texte traduit s'affichera dans différentes langues.
Figure 4 : Texte traduit dans votre application.
Vidéo sur la configuration de la traduction
La vidéo suivante présente les étapes de configuration de la traduction décrites précédemment.
6. Intégrer à PBL
Pour intégrer votre application à la bibliothèque Play Billing (PBL), procédez comme suit :
- Ajoutez la dépendance de la bibliothèque Play Billing à l'application exemple.
dependencies { val billing_version = "8.0.0" implementation("com.android.billingclient:billing-ktx:$billing_version") } - 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(); } - 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"); } }); } - 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.
Récupérer le produit unique (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()); } } }); }trending_movie_1dans cet exemple) dansProductDetailsrenvoie une réponse semblable à la suivante : Notez que les options d'achat "Acheter" et "Louer" sont disponibles dans{ "productId": "trending_movie_1", "type": "inapp", "title": "Purrfect Mayhem: The Rewind Protocol (Movies All Day | Play Samples)", "name": "Purrfect Mayhem: The Rewind Protocol", "description": "Dr. Arid Thorne and a smart tiger named Yolo find a mysterious tape. It's a \"Rewind Protocol\" to fix time. A shadowy group, the Clockinator, hunts them to seize the tape's power.", "skuDetailsToken": "<---skuDetailsToken--->", "oneTimePurchaseOfferDetails": {}, "oneTimePurchaseOfferDetailsList": [ { "priceAmountMicros": 13000000, "priceCurrencyCode": "USD", "formattedPrice": "$13.00", "offerIdToken": "<---buy offerIdToken --->", "purchaseOptionId": "buy-option", "offerTags": [ "adventure", "mystery" ] }, { "priceAmountMicros": 7000000, "priceCurrencyCode": "USD", "formattedPrice": "$7.00", "offerIdToken": "<---rent offerIdToken--->", "purchaseOptionId": "rent-option", "offerTags": [ "adventure", "mystery" ], "rentalDetails": { "rentalPeriod": "P30D", "rentalExpirationPeriod": "PT24H" } } ] }oneTimePurchaseOfferDetailsList. Cette liste comporte deux options d'achat (buy-option et rent-option) qui ont été configurées dans la Play Console. Vous pouvez identifier chaque option d'achat de manière unique grâce à son offerIdToken. - Récupérez les jetons d'offre pour les offres de location et d'achat. Vous avez besoin des jetons d'offre pour lancer le processus de facturation à l'étape 6.
@Override public void onProductDetailsResponse(List<ProductDetails> productDetailsList) { if (productDetailsList != null && !productDetailsList.isEmpty()) { // Iterate over all details of the queried product in step 4. for (ProductDetails productDetails : productDetailsList) { // Get the list of all the offers associated with the product. List<ProductDetails.OneTimePurchaseOfferDetails> offerDetailsList = productDetails.getOneTimePurchaseOfferDetailsList(); // Iterate over the offer details for (ProductDetails.OneTimePurchaseOfferDetails offerDetails : offerDetailsList) { // For a Rent purchase option, the // offerDetails.getRentalDetails() method returns // the rent information. If this information is present, // the offer corresponds to a Rent purchsae option. if (offerDetails.getRentalDetails() != null) { rentFormattedPrice = offerDetails.getFormattedPrice(); // Get the offerIdToken for the Rent purchase option rentOfferToken = offerDetails.getOfferToken(); rentMovieTags = offerDetails.getOfferTags(); } // If the offerDetails.getRentalDetails() returns // null, the offer corresponds to a Buy purchsae option. else { buyFormattedPrice = offerDetails.getFormattedPrice(); // Get the offerIdToken for the Buy purchase option buyOfferToken = offerDetails.getOfferToken(); buyMovieTags = offerDetails.getOfferTags(); } } updateUIButtons(); return; } } else { Log.e(TAG, "No product details found for " + productId); } } - 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); }
Conseil : Vous pouvez également configurer des notifications en temps réel pour les développeurs (RTDN) afin d'implémenter des campagnes de récupération et d'autres stratégies de gestion du cycle de vie des achats. Pour savoir comment configurer les NTRD et gérer les notifications avec un suivi et des droits d'accès précis, nous vous recommandons de suivre l'atelier de programmation Maximiser votre intégration de Google Play Billing.
7. 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.
Vous apprendrez à tester la localisation des prix et la disponibilité de l'application, qui n'est disponible que dans certaines régions avec un prix différent pour chacune d'elles.
Prérequis
- Ajoutez un testeur de licence dans la Google Play Console, puis activez-le pour les tests internes.
- Téléchargez et installez l'application Play Billing Lab sur votre téléphone ou votre émulateur.
- Exécutez l'application exemple que vous avez créée précédemment sur votre téléphone ou votre émulateur.
Tester la tarification régionale pour les options d'achat
Pour tester la tarification régionale des options d'achat :
- Ouvrez l'application Play Billing Lab, puis connectez-vous en tant que testeur de licence.
- Dans Paramètres de configuration, cliquez sur Modifier, sélectionnez le pays
France, puis cliquez sur Appliquer. Ici, nous sélectionnons le pays Play, qui détermine la devise qui sera affichée dans l'application. - Fermez et rouvrez l'application exemple. Elle devrait maintenant afficher la devise d'achat et de location pour
Franceen euros.
Pour effectuer un test dans un autre pays, sélectionnez Spain à l'étape 2, puis suivez l'étape 3.
Vidéo de test Play Billing Lab
La vidéo suivante montre comment tester les prix régionaux à l'aide de l'application exemple.
8. Étapes suivantes
- Découvrez comment maximiser votre intégration de la facturation Play.
- Découvrez comment analyser les abandons d'achat de produits.
- N'oubliez pas de suivre les bonnes pratiques pour valider et traiter les achats sur votre backend sécurisé une fois que les utilisateurs commencent à acheter ces produits.
Documents de référence
9. Félicitations !
Félicitations ! Vous avez réussi à parcourir la Google Play Console pour créer un produit ponctuel, configurer une option d'achat et tester le parcours d'achat à l'aide de Play Billing Lab. 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.