Utilisation du service de facturation Google Play In-app Billing
Remonter à Création d'une app Android
Les services de paiement in-app vous permettent de vendre du contenu numérique directement depuis vos applications. Google Play In-app Billing (EN) est le service de paiement in-app de Google pour Android. Cette rubrique explique comment autoriser vos applications à accéder à Google Play In-app Billing en utilisant FireMonkey.
- Remarque : Les informations suivantes complètent la rubrique principale de la documentation relative au développement Android. Lire Développement d'applications mobiles Android avant de continuer.
Sommaire
- 1 Périphériques pris en charge
- 2 Prérequis
- 3 Configuration de votre application pour In-app Billing dans Google Play
- 4 Ajout de la prise en charge de Google Play In-app Billing à vos apps mobiles
- 5 Test de vos produits In-App Purchase
- 6 Voir aussi
Périphériques pris en charge
FireMonkey prend en charge Google Play In-app Billing sur les périphériques exécutant Android 2.2 ou ultérieur et la dernière version du magasin Google Play. Voir aussi Prérequis de plate-forme FireMonkey, Exigences Android.
- Remarque : Les émulateurs Android ne sont pas pris en charge.
Prérequis
Pour pouvoir utiliser le service Google Play In-app Billing, vous devez au préalable :
- Préparer votre environnement de développement Android.
- Faites l'acquisition d'un compte Google Play Developer Console (EN). Vous avez besoin de ce compte pour publier des apps dans Google Play.
- Remarque : Google vous demandera de régler des frais d'inscription uniques d'un montant de 25 $.
- Créer un compte Google Wallet Merchantt (EN). Vous avez besoin de ce compte pour vendre des produits depuis vos applications.
Configuration de votre application pour In-app Billing dans Google Play
Google exige que vous chargiez une première version de l'application avant de pouvoir ajouter des produits in-app.
Avant de commencer l'ajout de la prise en charge de Google Play In-app Billing à votre application, chargez votre application dans son état actuel sur Google Play :
- Préparez votre application pour le déploiement.
- Il est important que vous sélectionniez Projet > Options > Permissions d'utilisation, et que vous activiez la permission d'utilisation Facturation de vente (service In-app Billing).
- Créez un package
.apk
signé pour votre application. - Chargez votre nouvelle application sur Google Play (EN).
Sur la page de votre application, dans Google Play Developer Console (EN), cliquez sur Services and APIs. La page Services and APIs affiche la clé de licence de votre application. Lorsque vous configurez votre instance de TInAppPurchase pour établir une connexion à Google Play, vous devez copier cette clé de licence dans la propriété ApplicationLicenseKey.
TInAppPurchase prend en charge les produits in-app gérés. Pour plus d'informations sur les produits gérés, voir In-app Billing Version 3, Product Types (EN).
- Remarque : Les abonnements ne sont pas pris en charge pour le moment.
Ajout de la prise en charge de Google Play In-app Billing à vos apps mobiles
Vous devez ajouter une instance de ce composant à votre application, et établir une connexion au service de facturation Google Play In-app Billing lorsque votre application démarre ou à tout autre moment. Vous pouvez ensuite utiliser le service. Dès qu'une connexion au service de facturation Google Play In-app Billing est établie, vous pouvez :
- Demander des informations concernant les produits de votre application. Votre application doit le faire au moins une fois après que vous ayez établi la connexion au service de facturation Google Play In-app Billing.
- Acheter des produits.
- Consommer des produits. Traitez les produits consommables dans votre application, et indiquez au service de paiement in-app que votre application les a consommés.
- Restaurer des produits que votre utilisateur a achetés à partir d'un périphérique différent sur le périphérique en cours. Vous devez le faire lorsque votre utilisateur le demande ; par exemple, votre application peut fournir pour cela un bouton "Restaurer".
Etablissement d'une connexion au service de facturation Google Play In-app Billing
Avant de pouvoir utiliser le service de facturation Google Play In-app Billing, vous devez configurer TInAppPurchase pour se connecter au service de facturation Google Play In-app Billing et établir une connexion.
Configuration des données de connexion pour le service de facturation Google Play In-app Billing
Pour établir une connexion au service Google Play In-app Billing sur Android, vous devez copier votre clé de licence dans la propriété ApplicationLicenseKey de TInAppPurchase. Vous obtenez une clé de licence après avoir configuré votre application pour In-app Billing dans Google Play, par exemple :
InAppPurchase1.ApplicationLicenseKey := 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgEAlGKUp9KCAQjzJdrjDaCC2Z2P0K751w1KAL3cBLhDqRSYDnug+nZKzeg2+R3KOIDVpJU7+PXz8jyf07m/30Y0J1CmOBf6NK/MIsXq3BmWb4/UIUW1aKzlHiiVtpcm26n3hOSmnnfkhasbfQo75puBBTbURvumOFfwUAJ2BM9FzAOPWzsAqT1brYI8iu+NHDT+gGQl7uOTgEN3jbBD/la5qAt' +
'evOGbgP1DhfKtsi91+/oyy3+lphWNn2A+RE1KOx4lnHp0wZyOEvDP/CPZneT0YYgqG6MtawM+Mij/75XwhJEdeOSXYya7BN6hg49JX2WJxCRc7JqbgzN9vsRn6hSceQ5MuQIDAQAB';
- Remarque : En raison d'une limitation du compilateur Delphi, les littéraux chaîne ne peuvent pas dépasser 255 caractères. Comme vu ci-dessus, la solution consiste à diviser la chaîne en plusieurs parties.
Connexion au service de facturation Google Play In-app Billing
Pour établir une connexion au service de facturation Google Play In-app Billing, appelez SetupInAppPurchase. Cette procédure est asynchrone, et dès qu'elle prend fin, elle déclenche l'événement OnSetupComplete. Si vous souhaitez associer un gestionnaire d'événement à OnSetupComplete, faites-le avant d'appeler SetupInAppPurchase :
InAppPurchase1.OnSetupComplete := InAppPurchase1SetupComplete;
InAppPurchase1.SetupInAppPurchase;
Généralement, vous associez OnSetupComplete à un gestionnaire d'événement pour demander la liste des produits dès que la connexion au service cible est établie. Sinon, vous pouvez appeler IsSetupComplete pour vérifier que vous pouvez utiliser le service à un moment particulier (True
) ou non (False
).
Utilisation du service de facturation Google Play In-app Billing
Dès que vous avez établi une connexion au service de facturation Google Play In-app Billing, vous pouvez effectuer l'une des opérations suivantes :
Obtention d'informations concernant une liste de produits
Votre application doit conserver une liste des identifiants des produits pouvant être achetés à partir d'elle. Conservez cette liste dans la propriété TInAppPurchase.ProductIDs. Vous pouvez appeler QueryProducts à tout moment pour demander des informations concernant les produits ayant ces identifiants, par exemple pour savoir si ces produits ont été achetés ou non.
Si une erreur se produit, TInAppPurchase.OnError est déclenché avec ProductsRequest en tant que FailureKind
.
Si la requête s'exécute correctement, TInAppPurchase.OnProductsRequestResponse est déclenché à la place. Cet événement fournit deux listes de produits :
Products
, une TList d'instances de TProduct qui fournit la liste des produits valides disponibles et achetés.InvalidProductIDs
, une TStrings qui fournit une liste comportant les identifiants des produits non valides.
Pour distinguer les produits achetés par votre utilisateur de ceux simplement disponibles pour l'achat, vous pouvez appeler IsProductPurchased en fournissant l'identifiant d'un produit :
if InAppPurchase1.IsProductPurchased(ProductID) then { Do something. }
- Remarque : Si la liste des produits contient un produit consommable ayant été acheté, c'est le moment de consommer ce produit.
TProduct fournit de nombreuses propriétés que vous pouvez lire pour obtenir des informations concernant chaque produit.
Achat d'un produit
Avant d'autoriser un utilisateur à acheter des produits, appelez CanMakeInAppPurchases pour vérifier s'il est autorisé à effectuer des achats (True
) ou non (False
) :
if not InAppPurchase1.CanMakeInAppPurchases then { Disable or hide the in-app payments GUI elements of your application. }
Pour demander l'achat d'un produit dans la liste des produits disponibles à partir du service de facturation Google Play In-app Billing, appelez PurchaseProduct avec l'identifiant du produit :
InAppPurchase1.PurchaseProduct(ProductID);
Si une erreur se produit, TInAppPurchase.OnError est déclenché avec Purchase en tant que FailureKind
.
Si l'achat se déroule correctement, TInAppPurchase.OnPurchaseCompleted est déclenché à la place. Cet événement fournit l'identifiant du produit acheté, et son paramètre NewTransaction
est True
si le produit vient d'être acheté ou False
s'il a été restauré. Utilisez ce gestionnaire d'événement pour gérer les produits achetés ; par exemple, si le produit acheté est un produit consommable, consommez-le.
Consommation d'un produit
- Remarque : TInAppPurchase ne fournit aucune méthode pour déterminer si le produit est consommable ou non. Votre application doit pouvoir faire la distinction elle-même. Par exemple, vous pouvez coder en dur une liste d'identifiants de produits consommables et non consommables dans votre application.
Les produits consommables sont des produits qui peuvent être achetés plusieurs fois. Lorsque votre utilisateur achète un produit consommable, vous devez appeler ConsumeProduct pour informer le service de facturation Google Play In-app Billing que ce produit a été consommé :
InAppPurchase1.ConsumeProduct(ProductID);
-
- Remarque : Sinon, vous pouvez appeler ConsumeProducts avec une liste d'identifiants de produits.
Après avoir appelé l'une des méthodes pour consommer un produit, l'un des événements suivants est éventuellement déclenché :
- TInAppPurchase.OnConsumeCompleted si le produit est consommé correctement. Gérez cet événement pour traiter cet achat dans votre application. Par exemple, si votre application intègre un compteur de cookies et que votre utilisateur achète un produit à "5 cookies", vous pouvez accroître de 5 le nombre de cookies dans votre application.
- TInAppPurchase.OnConsumeFailed si une erreur générée empêche la consommation du produit. L'argument
ErrorMessage
de cet événement fournit une description détaillée de l'erreur.
Restauration de produits achetés à partir d'un périphérique différent sur le périphérique en cours
Les produits non consommables d'un utilisateur apparaissent toujours comme achetés quel que soit le périphérique de cet utilisateur. Il n'est pas nécessaire de faire quoi que ce soit pour restaurer ces achats.
- Remarques :
- Si votre utilisateur tente d'acheter à nouveau un produit déjà acheté précédemment, cet achat ne lui coûte rien.
- La restauration des achats nécessite de saisir les identifiants d'accès à l'App Store de l'utilisateur. Il n'est pas conseillé de restaurer automatiquement les achats. Nous vous recommandons plutôt de laisser les utilisateurs démarrer manuellement une opération de restauration, par exemple avec un bouton "Restaurer".
Utilisation d'une chaîne developerPayload pour vérifier les achats
Lorsque vous utilisez le service Google Play In-app Billing, vous pouvez donner à la propriété TInAppPurchase.TransactionPayload une valeur, un certain type de code, associée de façon unique à l'utilisateur de votre application. Cette valeur est envoyée au service Google Play In-app Billing lorsque votre utilisateur achète un produit à partir de votre application.
Pendant l'achat, le service Google Play In-app Billing vous renvoie une chaîne developerPayload devant correspondre à la chaîne que vous avez précédemment définie dans la propriété TransactionPayload. Pour vérifier que les deux chaînes correspondent et donc s'assurer que l'achat a en effet été commandé par votre utilisateur, gérez l'événement OnVerifyPayload :
procedure TForm1.InAppPurchase1VerifyPayload(Sender: TObject; const Payload: string; var PayloadOk: Boolean);
begin
if Payload.Compare(FPayload) <> 0 then
PayloadOk := False;
end;
Si le gestionnaire de cet événement définit PayloadOk
sur False
, l'achat n'est pas validé.
- Avertissement : Le même utilisateur peut utiliser votre application sur différents périphériques. La chaîne developerPayload doit être identique sur les différents périphériques d'un même utilisateur. Par exemple, il ne peut pas s'agir d'une chaîne aléatoire générée par votre application, sinon cette chaîne ne sera pas identique sur tous les périphériques.
Test de vos produits In-App Purchase
Vous pouvez tester vos produits In-App Purchase sans les frais associés à l'utilisation d'utilisateurs test. Voir Testing In-app Billing (EN).