Cet article contient des notes de version pour la bibliothèque Google Play Billing.
Bibliothèque Google Play Billing version 7.0.0 (14/05/2024)
La version 7.0.0 de la bibliothèque Google Play Billing et les extensions Kotlin sont désormais disponibles.
Résumé des modifications
Ajout d'API pour la prise en charge des abonnements échelonnés.
- A ajouté
ProductDetails.InstallmentPlanDetails
pour les plans de base en plusieurs versements que les utilisateurs peuvent acheter. Cette API aide votre application à identifier le plan de versement et la configuration de son engagement ; pour fournir des informations associées à l'utilisateur. Pour en savoir plus, consultez notre guide des versements pour les abonnements.
- A ajouté
A ajouté
PendingPurchasesParams
etBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
pour remplacerBillingClient.Builder.enablePendingPurchases()
, qui est obsolète dans cette version.- D'un point de vue fonctionnel, le
enablePendingPurchases()
obsolète est équivalent àenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
- D'un point de vue fonctionnel, le
Ajout d'API pour prendre en charge les transactions en attente pour les abonnements prépayés:
- Utiliser
PendingPurchasesParams.Builder.enablePrepaidPlans()
avecBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
pour activer les transactions en attente pour les abonnements prépayés. Lors de l'ajout assurez-vous que votre application gère aussi correctement cycles de vie. Pour en savoir plus, consultez notre guide des achats en attente. - A ajouté
Purchase.PendingPurchaseUpdate
etPurchase.getPendingPurchaseUpdate()
pour récupérer la recharge de forfait en attente, ou passer à un forfait supérieur ou inférieur abonnement.
- Utiliser
Suppression de
BillingClient.Builder.enableAlternativeBilling()
,AlternativeBillingListener
, etAlternativeChoiceDetails
.- Les développeurs doivent utiliser
BillingClient.Builder.enableUserChoiceBilling()
avecUserChoiceBillingListener
etUserChoiceDetails
dans le rappel de l'écouteur.
- Les développeurs doivent utiliser
Suppression de
BillingFlowParams.ProrationMode
,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
, etBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
.- Les développeurs doivent utiliser
BillingFlowParams.SubscriptionUpdateParams.ReplacementMode
avecBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)
à la place. BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
.BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
.
- Les développeurs doivent utiliser
Suppression de
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()
.- Les développeurs doivent utiliser
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)
à la place.
- Les développeurs doivent utiliser
BillingClient.queryPurchaseHistoryAsync()
est obsolète et sera supprimée dans une prochaine version. Les développeurs doivent utilisez plutôt les alternatives suivantes:- Achats confirmés et en attente: utiliser
BillingClient.queryPurchasesAsync()
pour récupérer les achats actifs. - Achats consommés: les développeurs doivent effectuer le suivi des achats consommés sur leurs propres serveurs.
- Achats annulés: utilisez le achats-annulations API Developer.
- Pour en savoir plus, consultez Interroger l'historique des achats
- Achats confirmés et en attente: utiliser
BillingFlowParams.ProductDetailsParams.setOfferToken()
génère désormais une exception lorsque les développeurs spécifient unofferToken
vide.Mise à jour de
minSdkVersion
à 21 et detargetSdkVersion
à 34.
Bibliothèque Google Play Billing version 6.2.1 (16/04/2024)
La version 6.2.1 de la bibliothèque Google Play Billing et les extensions Kotlin sont désormais disponibles.
Résumé des modifications
- Correction d'un bug dans
BillingClient.showAlternativeBillingOnlyInformationDialog()
qui empêchaitAlternativeBillingOnlyInformationDialogListener
d'être appelé dans certains cas lorsque la boîte de dialogue se terminait.
Bibliothèque Google Play Billing version 6.2.0 (06/03/2024)
La version 6.2.0 de la bibliothèque Google Play Billing et les extensions Kotlin sont désormais disponibles.
Résumé des modifications
- Ajout d'API pour prendre en charge les offres externes
<ph type="x-smartling-placeholder">
- </ph>
- A ajouté
BillingClient.Builder.enableExternalOffer()
pour vous permettre de proposer des offres externes. - A ajouté
BillingClient.isExternalOfferAvailableAsync()
pour vérifier la disponibilité de la fonctionnalité d'offres externes. - A ajouté
BillingClient.showExternalOfferInformationDialog()
pour présenter une boîte de dialogue d'informations aux utilisateurs avant de les rediriger en dehors de l'application. - Ajout de
BillingClient.createExternalOfferReportingDetailsAsync()
pour créer la charge utile requise pour enregistrer les transactions effectuées via des offres externes.
- A ajouté
Bibliothèque Google Play Billing version 6.1.0 (14/11/2023)
La version 6.1.0 de la bibliothèque Google Play Billing et les extensions Kotlin sont désormais disponibles.
Résumé des modifications
- Ajout d'API pour accepter uniquement un système de facturation alternatif (sans choix pour l'utilisateur)
- Ajout de
BillingClient.Builder.enableAlternativeBillingOnly()
pour permettre fonctionnellement de proposer un système de facturation alternatif uniquement. - Ajout de
BillingClient.isAlternativeBillingOnlyAvailableAsync()
pour vérifier la disponibilité des systèmes de facturation alternatifs uniquement. - Ajout de
BillingClient.showAlternativeBillingOnlyInformationDialog()
pour afficher une boîte de dialogue d'informations afin d'informer les utilisateurs lorsque seul un système de facturation alternatif est utilisé. - Ajout de
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()
pour créer la charge utile requise pour enregistrer les transactions effectuées via un système de facturation alternatif uniquement.
- Ajout de
- Mise à jour des API de facturation au choix de l'utilisateur
- Ajout de
UserChoiceBillingListener
pour remplacer AlternativeBillingListener, qui a été marqué comme obsolète. - Ajout de
UserChoiceDetails
pour remplacerAlternativeChoiceDetails
, qui a été marqué comme obsolète. - Ajout de
BillingClient.Builder.enableUserChoiceBilling()
pour remplacerBillingClient.Builder.enableAlternativeBilling()
, qui a été marqué comme obsolète.
- Ajout de
- Ajout de
BillingClient.getBillingConfigAsync()
pour récupérer le pays sur Google Play.
Bibliothèque Google Play Billing version 6.0.1 (22/06/2023)
La version 6.0.1 de la bibliothèque Google Play Billing et les extensions Kotlin sont désormais disponibles.
Résumé des modifications
Mise à jour de la bibliothèque Play Billing pour qu'elle soit compatible avec Android 14.
Bibliothèque Google Play Billing version 6.0 (10/05/2023)
La version 6.0.0 de la bibliothèque Google Play Billing et les extensions Kotlin sont désormais disponibles.
Résumé des modifications
Ajout d'une nouvelle énumération
ReplacementMode
pour remplacerProrationMode
.Veuillez noter que
ProrationMode
est toujours disponible pour des raisons de rétrocompatibilité.L'ID de commande pour les achats
PENDING
a été supprimé.Auparavant, l'ID de commande était toujours créé même si l'achat était en attente. À partir de la version 6.0.0, aucun ID de commande n'est créé pour les achats en attente. Il n'est renseigné qu'une fois que l'achat passe à l'état
PURCHASED
.Suppression des méthodes
queryPurchases
etlaunchPriceConfirmationFlow
.Les méthodes
queryPurchases
etlaunchPriceConfirmationFlow
auparavant marquées comme obsolètes ont été supprimées dans la bibliothèque Play Billing 6.0.0. Les développeurs doivent utiliserqueryPurchasesAsync
au lieu dequeryPurchases
. Pour les alternatives àlaunchPriceConfirmationFlow
, consultez Changements de prix.Ajout d'un code de réponse d'erreur réseau.
Un nouveau code de réponse d'erreur réseau,
NETWORK_ERROR
, a été ajouté à partir de la version 6.0.0 de PBL. Ce code est renvoyé lorsqu'une erreur liée à un problème de connexion réseau se produit. Ces erreurs de connexion réseau étaient auparavant signalées parSERVICE_UNAVAILABLE
.Mise à jour de
SERVICE_UNAVAILABLE
etSERVICE_TIMEOUT
.À partir de la version 6.0.0 de PBL, les erreurs liées à l'expiration du traitement sont renvoyées sous la forme
SERVICE_UNAVAILABLE
au lieu deSERVICE_TIMEOUT
.Le comportement ne change pas dans les versions précédentes de PBL.
Suppression de
SERVICE_TIMEOUT
.À partir de la version 6.0.0 de PBL,
SERVICE_TIMEOUT
ne sera plus renvoyé. Les versions précédentes de PBL continueront à renvoyer ce code.Ajout d'une journalisation supplémentaire.
La version 6 de la bibliothèque Play Billing inclut une journalisation supplémentaire, qui fournit des informations sur l'utilisation des API (par exemple, la réussite et l'échec) et les problèmes de connexion au service. Ces informations sont utilisées pour améliorer les performances de la bibliothèque Play Billing et pour mieux gérer les erreurs.
Bibliothèque Google Play Billing version 5.2.1 (22/06/2023)
La version 5.2.1 de la bibliothèque Google Play Billing et les extensions Kotlin sont désormais disponibles.
Résumé des modifications
Mise à jour de la bibliothèque Play Billing pour qu'elle soit compatible avec Android 14.
Bibliothèque Google Play Billing version 5.2 (06/04/2023)
La version 5.2.0 de la bibliothèque Google Play Billing et les extensions Kotlin sont désormais disponibles.
Résumé des modifications
- Ajout de classes pour prendre en charge un système de facturation alternatif sur mobile/tablette pour les utilisateurs en Corée du Sud :
- Ajout d'une méthode
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()
pour spécifier l'ID de transaction externe de l'abonnement d'origine. - Ajout de la méthode
BillingClient.Builder.enableAlternativeBilling()
pour permettre aux utilisateurs situés en Corée du Sud de sélectionner une option de facturation alternative.
Bibliothèque Google Play Billing version 5.1 (31/10/2022)
La version 5.1.0 de la bibliothèque Google Play Billing et les extensions Kotlin sont désormais disponibles.
Cette version contient les modifications suivantes.
Résumé des modifications
- Ajout de la méthode
ProductDetails.SubscriptionOfferDetails.getOfferId()
pour récupérer l'ID de l'offre. - Ajout de la méthode
ProductDetails.SubscriptionOfferDetails.getBasePlanId()
pour récupérer l'ID du forfait de base. - Mise à jour de
targetSdkVersion
vers la version 31.
Bibliothèque Google Play Billing version 5.0 (11/05/2022)
La version 5.0.0 de la bibliothèque Google Play Billing et des extensions Kotlin est désormais disponible.
Cette version contient les modifications suivantes.
Résumé des modifications
- Introduction d'un nouveau modèle d'abonnement incluant de nouvelles entités vous permettant de créer plusieurs offres pour un seul produit sur abonnement. Pour en savoir plus, consultez le guide de migration.
- Ajout de
BillingClient.queryProductDetailsAsync()
pour remplacerBillingClient.querySkuDetailsAsync()
. - Ajout de la méthode
setIsOfferPersonalized()
pour les exigences de divulgation des prix personnalisés dans l'UE. Pour en savoir plus sur l'utilisation de cette méthode, consultez Indiquer un prix personnalisé. - Suppression de
queryPurchases()
, qui était obsolète et a été remplacé par queryPurchasesAsync, mis en place dans la bibliothèque Google Play Billing 4.0.0. launchPriceChangeFlow
est obsolète et sera supprimé dans une prochaine version. Pour en savoir plus sur les alternatives, consultez la page Lancer un flux de confirmation du changement de prix.- Suppression de
setVrPurchaseFlow()
, qui était auparavant utilisé lors de l'instanciation d'un parcours d'achat. Dans les versions précédentes, cette méthode redirigeait l'utilisateur pour qu'il finalise l'achat sur son appareil Android. Une fois cette méthode supprimée, les utilisateurs finaliseront leur achat via le parcours d'achat standard.
Bibliothèque Google Play Billing version 4.1 (23/02/2022)
La version 4.1.0 de la bibliothèque Google Play Billing et les extensions Kotlin sont désormais disponibles.
Cette version contient les modifications suivantes.
Résumé des modifications
- Ajout de
BillingClient.showInAppMessages()
pour vous aider à gérer les refus de paiement liés aux abonnements. Pour en savoir plus sur la gestion des refus de paiement dans le cadre des abonnements, consultez l'article Gérer les refus de paiement dans les applications.
Bibliothèque Google Play Billing version 4.0 (18/05/2021)
La version 4.0.0 de la bibliothèque Google Play Billing et les extensions Kotlin sont désormais disponibles.
Résumé des modifications
Ajout de
BillingClient.queryPurchasesAsync()
pour remplacerBillingClient.queryPurchases()
, qui sera supprimé dans une prochaine version.Ajout d'un nouveau mode de remplacement de l'abonnement
IMMEDIATE_AND_CHARGE_FULL_PRICE
.Ajout de la méthode
BillingClient.getConnectionState()
pour récupérer l'état de connexion de la bibliothèque Play Billing.Javadoc et implémentation mis à jour pour indiquer le thread sur lequel une méthode peut être appelée et les résultats de thread publiés.
Ajout de
BillingFlowParams.Builder.setSubscriptionUpdateParams()
comme nouvelle méthode pour modifier l'abonnement. Cela remplaceBillingFlowParams#getReplaceSkusProrationMode
,BillingFlowParams#getOldSkuPurchaseToken
,BillingFlowParams#getOldSku
,BillingFlowParams.Builder#setReplaceSkusProrationMode
etBillingFlowParams.Builder#setOldSku
, qui ont été supprimés.Ajout de
Purchase.getQuantity()
et dePurchaseHistoryRecord.getQuantity()
.Ajout de
Purchase#getSkus()
et dePurchaseHistoryRecord#getSkus()
. Ils remplacentPurchase#getSku
etPurchaseHistoryRecord#getSku
, qui ont été supprimés.BillingFlowParams#getSku
,BillingFlowParams#getSkuDetails
etBillingFlowParams#getSkuType
supprimés.
Bibliothèque Google Play Billing version 3.0.3 (12/03/2021)
La version 3.0.3 de la bibliothèque Google Play Billing, l'extension Kotlin et le plug-in Unity sont désormais disponibles.
Correction de bugs Java et Kotlin
- Correction des fuites de mémoire lorsque
endConnection()
est appelé. - Résolution du problème lorsque la bibliothèque Google Play Billing est utilisée par des applications qui utilisent le mode de lancement en une seule tâche. Un rappel
onPurchasesUpdated()
est déclenché lorsqu'une application est réactivée depuis le lanceur d'applications Android et que la boîte de dialogue de facturation était visible avant sa suspension.
Correction de bugs dans Unity
- Mise à jour Java vers la version 3.0.3 pour corriger les fuites de mémoire et résoudre les problèmes empêchant les achats lorsqu'une application est réactivée depuis le lanceur d'applications Android et que la boîte de dialogue de facturation était visible avant sa suspension.
Bibliothèque Google Play Billing version 3.0.2 (24/11/2020)
La version 3.0.2 de la bibliothèque Google Play Billing et de l'extension Kotlin sont désormais disponibles.
Correction de bugs
- Correction d'un bug dans l'extension Kotlin, qui entraîne la défaillance de la coroutine avec l'erreur "Déjà réactivé".
- Correction des références non résolues lors de l'utilisation de l'extension Kotlin avec la bibliothèque kotlinx.coroutines version 1.4+.
Bibliothèque Google Play Billing version 3.0.1 (30/09/2020)
La version 3.0.1 de la bibliothèque Google Play Billing et de l'extension Kotlin sont désormais disponibles.
Correction de bugs
- Correction d'un bug qui empêchait l'appel de l'application
PurchasesUpdatedListener
avec le résultat d'achat si l'application était fermée et restaurée lors du flux de facturation.
Bibliothèque Google Play Billing version 3.0 (08/06/2020)
La version 3.0.0 de la bibliothèque Google Play Billing, l'extension Kotlin et le plug-in Unity sont désormais disponibles.
Résumé des modifications
- Suppression de la compatibilité avec les codes SKU avec récompense.
- Suppression des paramètres
ChildDirected
etUnderAgeOfConsent
. - Suppression des méthodes de charge utile de développeur obsolètes.
- Suppression des méthodes obsolètes
BillingFlowParams.setAccountId()
etBillingFlowParams.setDeveloperId()
. - Suppression des méthodes obsolètes
BillingFlowParams.setOldSkus(String oldSku)
etBillingFlowParams.addOldSku(String oldSku)
. - Ajout d'annotations de possibilité de valeur nulle.
Correction de bugs
SkuDetails.getIntroductoryPriceCycles()
renvoie désormaisint
au lieu deString
.- Correction d'un bug qui entraînait le traitement du flux de facturation avec des paramètres supplémentaires, même si aucun paramètre supplémentaire n'était défini
Bibliothèque Google Play Billing version 2.2.1 (20/05/2020)
La version 2.2.1 de la bibliothèque Google Play Billing est désormais disponible.
Correction de bugs
- Mise à jour de la version par défaut de la bibliothèque Java Play Billing dont dépend l'extension Kotlin.
Bibliothèque Google Play Billing version 2.2.0 et compatibilité avec Unity (23/03/2020)
La version 2.2.0 de Google Play Billing offre aux développeurs une fonctionnalité leur permettant de s'assurer que les achats sont attribués au bon utilisateur. Ces modifications remplacent la nécessité de créer des solutions personnalisées en fonction de la charge utile du développeur. Dans le cadre de cette mise à jour, la fonctionnalité de charge utile pour les développeurs est obsolète et sera supprimée dans une prochaine version. Pour en savoir plus, y compris sur les alternatives recommandées, consultez la section Charge utile pour les développeurs.
Bibliothèque Google Play Billing 2 pour Unity
En plus des versions Java et Kotlin actuelles de la bibliothèque Google Play Billing 2, nous avons lancé une version de la bibliothèque à utiliser avec Unity. Les développeurs de jeux qui utilisent l'API Unity pour les achats via une application peuvent effectuer une mise à niveau dès maintenant pour profiter de toutes les fonctionnalités de la bibliothèque Google Play Billing 2 et pour accéder plus facilement aux mises à niveau ultérieures des futures versions de la bibliothèque Google Play Billing.
Pour en savoir plus, consultez Utiliser Google Play Billing avec Unity.
Résumé des modifications
- Bibliothèque Java Google Play Billing
- Dans
AcknowledgePurchaseParams
, les méthodessetDeveloperPayload()
etgetDeveloperPayload()
sont obsolètes. - Dans
ConsumeParams
, les méthodessetDeveloperPayload()
etgetDeveloperPayload()
sont obsolètes. - Dans
BillingFlowParams
,setAccountId()
a été renommé ensetObfuscatedAccountId()
, et une restriction de longueur de 64 caractères et une restriction interdisant les informations permettant d'identifier personnellement l'utilisateur dans ce champ ont été documentées.setAccountId()
a été marqué comme obsolète et sera supprimé dans une prochaine version de la bibliothèque. - Dans
BillingFlowParams
, ajout desetObfuscatedProfileId()
, qui fonctionne de la même manière quesetObfuscatedAccountId()
. Pour en savoir plus, consultez la section Mises à jour et alternatives pour les charges utiles de développeur. - Dans
Purchase
, ajout de la méthodegetAccountIdentifiers()
pour renvoyer les identifiants de compte obscurcis définis dansBillingFlowParams
. - Dans
BillingClient
, la méthodeloadRewardedSku()
a été marquée comme obsolète dans le cadre des codes SKU avec récompense obsolètes. Pour en savoir plus sur l'obsolescence, consultez le Centre d'aide Play Console.
- Dans
Versions 2.1.0 de la bibliothèque Google Play Billing et de l'extension Kotlin (10/12/2019)
La version 2.1.0 de la bibliothèque Google Play Billing et la nouvelle extension Kotlin sont désormais disponibles. L'extension Kotlin de la bibliothèque Play Billing fournit des alternatives API idiomatiques pour l'utilisation de Kotlin, offrant de meilleures fonctionnalités de sécurité null et des coroutines. Pour obtenir des exemples de code, consultez Utiliser la bibliothèque Google Play Billing.
Cette version contient les modifications suivantes.
Résumé des modifications
- Dans
BillingFlowParams
,setOldSku(String oldSku)
est obsolète et remplacé parsetOldSku(String oldSku, String purchaseToken)
pour permettre de déterminer quand plusieurs comptes sur l'appareil possèdent le même code SKU.
Bibliothèque Google Play Billing version 2.0.3 (05/08/2019)
La version 2.0.3 de la bibliothèque Google Play Billing est maintenant disponible.
Correction de bugs
- Correction d'un bug qui entraînait parfois l'échec de
querySkuDetailsAsync()
avec le codeDEVELOPER_ERROR
au lieu de renvoyer un résultat réussi.
Bibliothèque Google Play Billing version 2.0.2 (08/07/2019)
La version 2.0.2 de la bibliothèque Google Play Billing est désormais disponible. Cette version contient des mises à jour de la documentation de référence et ne modifie pas les fonctionnalités de la bibliothèque.
Bibliothèque Google Play Billing version 2.0.1 (06/06/2019)
La version 2.0.1 de la bibliothèque Google Play Billing est désormais disponible. Cette version contient les modifications suivantes.
Correction de bugs
- Correction d'un bug qui provoquait le renvoi des messages de débogage en tant que
null
dans certains cas. - Un problème potentiel de fuite de mémoire a été résolu.
Bibliothèque Google Play Billing version 2.0 (07/05/2019)
La version 2.0 de la bibliothèque Google Play Billing est désormais disponible. Cette version contient les modifications suivantes.
Les achats doivent être confirmés dans les trois jours
Google Play est compatible avec l'achat de produits depuis votre application (intégrée) ou en dehors (hors application). Pour que Google Play offre une expérience d'achat cohérente, quel que soit l'endroit où l'utilisateur achète votre produit, vous devez confirmer tous les achats reçus via la bibliothèque Google Play Billing dès que possible après avoir accordé le droit d'accès à l'utilisateur. Si vous ne confirmez pas un achat dans un délai de trois jours, l'utilisateur reçoit automatiquement un remboursement, et Google Play révoque l'achat. Pour les transactions en attente (nouveau dans la version 2.0), la période de trois jours commence lorsque l'achat passe à l'état PURCHASED
et ne s'applique pas tant que la l'état de l'achat est PENDING
.
Pour les abonnements, vous devez confirmer tout achat comportant un nouveau jeton d'achat. Cela signifie que tous les achats initiaux, les changements de forfait et les réinscriptions doivent être confirmés, mais vous n'avez pas besoin de confirmer les renouvellements ultérieurs. Pour déterminer si un achat doit être confirmé, vous pouvez consulter le champ de confirmation de l'achat.
L'objet Purchase
inclut désormais une méthode isAcknowledged()
qui indique si un achat a été confirmé. De plus, l'API Google Play Developer inclut des valeurs booléennes de confirmation pour Purchases.products
et Purchases.subscriptions
.
Avant de confirmer un achat, veillez à utiliser ces méthodes pour déterminer si l'achat a déjà été confirmé.
Vous pouvez confirmer un achat en utilisant l'une des méthodes suivantes :
- Pour les produits consommables, utilisez
consumeAsync()
, que vous trouverez dans l'API cliente. - Pour les produits qui ne sont pas consommables, utilisez
acknowledgePurchase()
, que vous trouverez dans l'API cliente. - Une nouvelle méthode
acknowledge()
est également disponible dans l'API Server.
BillingFlowParams.setSku() a été supprimé
La méthode BillingFlowParams#setSku()
, désormais obsolète, a été supprimée dans cette version. Avant d'afficher des produits dans un parcours d'achat, vous devez maintenant appeler BillingClient.querySkuDetailsAsync()
, en transmettant les objets SkuDetails
à BillingFlowParams.Builder.setSkuDetails()
.
Pour obtenir des exemples de code, consultez Utiliser la bibliothèque Google Play Billing.
Compatibilité avec la charge utile du développeur
La version 2.0 de la bibliothèque Google Play Billing est compatible avec la charge utile du développeur, à savoir des chaînes arbitraires pouvant être associées aux achats. Contrairement à la charge utile du développeur dans AIDL, qui peut être spécifiée lors du lancement du parcours d'achat, vous ne pouvez associer un paramètre de charge utile de développeur à un achat que lorsque l'achat est confirmé ou consommé. Étant donné que les achats peuvent désormais être effectués en dehors de votre application, cette modification vous permet de toujours pouvoir ajouter une charge utile aux achats.
Pour accéder à la charge utile dans la nouvelle bibliothèque, les objets Purchase
incluent maintenant une méthode getDeveloperPayload()
.
Cohérence des offres
Lorsque vous proposez un code SKU de remise, Google Play renvoie désormais le prix d'origine du code SKU afin que vous puissiez indiquer aux utilisateurs qu'ils bénéficient d'une remise.
SkuDetails
contient deux nouvelles méthodes pour récupérer le prix d'origine du code SKU :
getOriginalPriceAmountMicros()
: renvoie le prix d'origine non formaté du code SKU avant remise.getOriginalPrice()
: renvoie le prix d'origine avec une mise en forme supplémentaire.
Transactions en attente
Avec la version 2.0 de la bibliothèque Google Play Billing, vous devez prendre en charge les achats nécessitant une action supplémentaire avant d'accorder un droit d'accès. Par exemple, un utilisateur peut choisir d'acheter votre produit intégré à l'application dans un magasin physique en espèces. Cela signifie que la transaction est effectuée en dehors de votre application. Dans ce scénario, vous ne devez accorder le droit d'accès qu'une fois que l'utilisateur a terminé la transaction.
Pour activer les achats en attente, appelez enablePendingPurchases()
lors de l'initialisation de votre application.
Utilisez Purchase.getPurchaseState()
pour déterminer si l'état d'achat est PURCHASED
ou PENDING
. Notez que vous ne devez accorder des droits d'accès que lorsque l'état est PURCHASED
. Vous devez vérifier les mises à jour de l'état de Purchase
en procédant comme suit :
- Lorsque vous démarrez votre application, appelez
BillingClient.queryPurchases()
pour récupérer la liste des produits non consommés associés à l'utilisateur. - Appelez
Purchase.getPurchaseState()
sur chaque objetPurchase
renvoyé. - Implémentez la méthode
onPurchasesUpdated()
pour répondre aux modifications apportées aux objetsPurchase
.
De plus, l'API Google Play Developer inclut un état PENDING
pour Purchases.products
.
Les transactions en attente ne sont pas compatibles avec les abonnements.
Cette version introduit également un nouveau type de notification en temps réel pour les développeurs, OneTimeProductNotification
. Ce type de notification contient un seul message dont la valeur est ONE_TIME_PRODUCT_PURCHASED
ou ONE_TIME_PRODUCT_CANCELED
. Ce type de notification n'est envoyé que pour les achats associés à des modes de paiement retardés, tels que le paiement en espèces.
Lorsque vous confirmez des achats en attente, assurez-vous de ne confirmer que lorsque l'état de l'achat est PURCHASED
et non PENDING
.
Modifications apportées à l'API
La version 2.0 de la bibliothèque Google Play Billing contient plusieurs modifications d'API pour assurer la compatibilité avec les nouvelles fonctionnalités et clarifier les fonctionnalités existantes.
consommerAsync
consumeAsync()
utilise désormais un objet ConsumeParams
au lieu d'un objet purchaseToken
. ConsumeParams
contient la valeur purchaseToken
ainsi qu'une charge utile facultative pour le développeur.
La version précédente de consumeAsync()
a été supprimée dans cette version.
queryPurchaseHistoryAsync
Pour réduire le risque de confusion, queryPurchaseHistoryAsync()
renvoie désormais un objet PurchaseHistoryRecord
au lieu d'un objet Purchase
. L'objet PurchaseHistoryRecord
est identique à un objet Purchase
, sauf qu'il ne reflète que les valeurs renvoyées par queryPurchaseHistoryAsync()
et ne contient pas les champs autoRenewing
, orderId
et packageName
. Notez que rien n'a changé avec les données renvoyées : queryPurchaseHistoryAsync()
renvoie les mêmes données qu'auparavant.
Valeurs affichées dans BillingResult
Les API qui renvoyaient précédemment une valeur entière BillingResponse
renvoient désormais un objet BillingResult
. BillingResult
contient l'entier BillingResponse
ainsi qu'une chaîne de débogage que vous pouvez utiliser pour diagnostiquer les erreurs. La chaîne de débogage utilise les paramètres régionaux "en-US" et n'est pas destinée à être présentée aux utilisateurs finaux.
Correction de bugs
SkuDetails.getIntroductoryPriceAmountMicros()
renvoie désormais unlong
au lieu d'unString
.
Bibliothèque Google Play Billing version 1.2.2 (07/03/2019)
La version 1.2.2 de la bibliothèque Google Play Billing est maintenant disponible. Cette version contient les modifications suivantes.
Correction de bugs
- Correction d'un problème de thread introduit dans la version 1.2.1. Les appels en arrière-plan ne bloquent plus le thread principal.
Autres modifications
- Bien que l'utilisation du thread principal soit toujours recommandée, vous pouvez désormais instancier la bibliothèque Google Play Billing à partir d'un thread en arrière-plan.
- L'instanciation a été entièrement migrée vers le thread d'arrière-plan pour réduire les risques d'erreurs ANR.
Bibliothèque Google Play Billing version 1.2.1 (04/03/2019)
La version 1.2.1 de la bibliothèque Google Play Billing est désormais disponible. Cette version contient les modifications suivantes.
Changements significatifs
- Ajout de la compatibilité avec les produits avec récompense. Pour en savoir plus sur les options de monétisation, consultez Ajouter des fonctionnalités spécifiques aux produits avec récompense.
Autres modifications
- Ajout de constructeurs publics pour
PurchasesResult
etSkuDetailsResult
afin de faciliter les tests. - Les objets
SkuDetails
peuvent utiliser une nouvelle méthode,getOriginalJson()
. - Tous les appels de service AIDL sont désormais gérés par des threads en arrière-plan.
Correction de bugs
- Les écouteurs de rappel Null ne sont plus transmis aux API publiques.
Bibliothèque Google Play Billing version 1.2 (18/10/2018)
La version 1.2 de la bibliothèque Google Play Billing est désormais disponible. Cette version contient les modifications suivantes.
Résumé des modifications
- La bibliothèque Google Play Billing est désormais concédée sous licence en vertu du Contrat de licence du kit de développement logiciel Android.
- Ajout de l'API
launchPriceChangeConfirmationFlow
, qui invite les utilisateurs à examiner la modification en attente du prix d'un abonnement. - Ajout d'un nouveau mode de calcul au prorata,
DEFERRED
, en cas de mise à niveau ou de retour à une version antérieure de l'abonnement d'un utilisateur. - Dans la classe
BillingFlowParams
,setSku()
a été remplacé parsetSkuDetails()
. - Corrections de bugs mineurs et optimisation du code.
Confirmation du changement de prix
Vous pouvez maintenant modifier le prix d'un abonnement dans la Google Play Console et inviter les utilisateurs à consulter et à accepter le nouveau prix lorsqu'ils accèdent à votre application.
Pour utiliser cette API, créez un objet PriceChangeFlowParams
à l'aide de la méthode skuDetails
du produit sur abonnement, puis appelez launchPriceChangeConfirmationFlow()
. Implémentez PriceChangeConfirmationListener
pour gérer le résultat une fois le flux de confirmation du changement de prix terminé, comme illustré dans l'extrait de code suivant :
Kotlin
val priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build() billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, object : PriceChangeConfirmationListener() { override fun onPriceChangeConfirmationResult(responseCode: Int) { // Handle the result. } })
Java
PriceChangeFlowParams priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build(); billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, new PriceChangeConfirmationListener() { @Override public void onPriceChangeConfirmationResult(int responseCode) { // Handle the result. } });
Le flux de confirmation du changement de prix affiche une boîte de dialogue contenant les nouvelles informations tarifaires et demandant aux utilisateurs d'accepter le nouveau prix. Ce flux renvoie un code de réponse de type BillingClient.BillingResponse
.
Nouveau mode de calcul au prorata
Lorsque vous mettez à niveau ou revenez à une version antérieure de l'abonnement d'un utilisateur, vous pouvez utiliser un nouveau mode de calcul au prorata, DEFERRED
. Ce mode met à jour l'abonnement de l'utilisateur lors du prochain renouvellement. Pour en savoir plus sur la configuration de ce mode de calcul au prorata, consultez la section Configuration du mode de calcul au prorata.
Nouvelle méthode pour définir les détails des codes SKU
Dans la classe BillingFlowParams
, la méthode setSku()
a été abandonnée.
Cette modification permet d'optimiser le flux de facturation Google Play Billing.
Lorsque vous créez une instance de BillingFlowParams
dans votre client de facturation des achats in-app, nous vous recommandons de travailler directement avec l'objet JSON à l'aide de setSkuDetails()
, comme indiqué dans l'extrait de code suivant :
Dans la classe de compilation BillingFlowParams
, la méthode setSku()
est obsolète. Utilisez plutôt la méthode setSkuDetails()
, comme indiqué dans l'extrait de code suivant. L'objet transmis dans l'objet setSkuDetails()
provient de la méthode querySkuDetailsAsync()
.
Kotlin
private lateinit var mBillingClient: BillingClient private val mSkuDetailsMap = HashMap<String, SkuDetails>() private fun querySkuDetails() { val skuDetailsParamsBuilder = SkuDetailsParams.newBuilder() mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build() ) { responseCode, skuDetailsList -> if (responseCode == 0) { for (skuDetails in skuDetailsList) { mSkuDetailsMap[skuDetails.sku] = skuDetails } } } } private fun startPurchase(skuId: String) { val billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap[skuId]) .build() }
Java
private BillingClient mBillingClient; private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>(); private void querySkuDetails() { SkuDetailsParams.Builder skuDetailsParamsBuilder = SkuDetailsParams.newBuilder(); mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build(), new SkuDetailsResponseListener() { @Override public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) { if (responseCode == 0) { for (SkuDetails skuDetails : skuDetailsList) { mSkuDetailsMap.put(skuDetails.getSku(), skuDetails); } } } }); } private void startPurchase(String skuId) { BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap.get(skuId)) .build(); }
Bibliothèque Google Play Billing version 1.1 (07/05/2018)
La version 1.1 de la bibliothèque Google Play Billing est désormais disponible. Cette version contient les modifications suivantes.
Résumé des modifications
- Ajout de la possibilité de spécifier un mode de calcul au prorata dans
BillingFlowParams
lors de la mise à niveau/de la rétrogradation d'un abonnement existant. - L'indicateur booléen
replaceSkusProration
dansBillingFlowParams
n'est plus accepté. UtilisezreplaceSkusProrationMode
à la place. launchBillingFlow()
déclenche maintenant un rappel en cas d'échec des réponses.
Nouveaux comportements
La version 1.1 de la bibliothèque Google Play Billing contient les modifications de comportement suivantes.
Les développeurs peuvent définir replaceSkusProrationMode
dans la classe BillingFlowParams
ProrationMode
fournit des informations supplémentaires sur le type de calcul au prorata lors de la mise à niveau ou de la rétrogradation de l'abonnement d'un utilisateur.
Kotlin
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
Java
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
Actuellement, Google Play accepte les modes de calcul au prorata suivants :
IMMEDIATE_WITH_TIME_PRORATION |
Le remplacement prend effet immédiatement, et le nouveau délai d'expiration est calculé au prorata et crédité ou facturé à l'utilisateur. Il s'agit du comportement par défaut actuel. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE |
Le remplacement prend effet immédiatement, et le cycle de facturation reste le même. Le prix pour
la période restante sera facturé.
Remarque : Cette option n'est disponible que pour la mise à niveau des abonnements. |
IMMEDIATE_WITHOUT_PRORATION |
Le remplacement prend effet immédiatement, et le nouveau prix sera facturé lors de la prochaine récurrence. Le cycle de facturation reste le même. |
replaceSkusProration
n'est plus compatible avec la classe BillingFlowParams
Auparavant, les développeurs pouvaient définir un indicateur booléen pour facturer un montant au prorata pour une demande de mise à niveau d'abonnement. Étant donné que nous prenons en charge ProrationMode
, qui contient des instructions de calcul au prorata plus détaillées, cette option booléenne n'est plus acceptée.
launchBillingFlow()
déclenche maintenant un rappel en cas d'échec de réponse
La bibliothèque de facturation déclenche toujours le rappel PurhcasesUpdatedListener
et renvoie un BillingResponse
de manière asynchrone. La valeur de retour synchrone de BillingResponse
est également conservée.
Correction de bugs
- Le service s'arrête correctement en mode asynchrone lorsque le service est déconnecté.
- Les objets param
Builder
ne modifient plus les objets créés. - Problème 68087141 :
launchBillingFlow()
déclenche maintenant le rappel en cas d'échec des réponses.
Bibliothèque Google Play Billing version 1.0 (19/09/2017, Annonce)
La version 1.0 de la bibliothèque Google Play Billing est désormais disponible. Cette version contient les modifications suivantes.
Changements significatifs
- Autorisation de facturation intégrée dans le fichier manifeste de la bibliothèque. Il n'est plus nécessaire d'ajouter l'autorisation
com.android.vending.BILLING
dans le fichier manifeste Android. - Un nouveau compilateur a été ajouté à la classe
BillingClient.Builder
. - Introduction du modèle de compilateur pour la classe
SkuDetailsParams
à utiliser sur les méthodes d'interrogation des codes SKU. - Plusieurs méthodes d'API ont été mises à jour pour des raisons de cohérence (les mêmes noms et ordres d'arguments de retour).
Nouveaux comportements
La version 1.0 de la bibliothèque Google Play Billing contient les modifications de comportement suivantes.
Classe BillingClient.Builder
BillingClient.Builder
est maintenant initialisé via le modèle newBuilder :
Kotlin
billingClient = BillingClient.newBuilder(context).setListener(this).build()
Java
billingClient = BillingClient.newBuilder(context).setListener(this).build();
La méthode "launchBillingFlow" est maintenant appelée à l'aide d'une classe BillingFlowParams
Pour initier le flux de facturation d'un achat ou d'un abonnement, la méthode launchBillingFlow()
reçoit une instance BillingFlowParams
initialisée avec des paramètres spécifiques à la requête :
Kotlin
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build() // Then, use the BillingFlowParams to start the purchase flow val responseCode = billingClient.launchBillingFlow(builder.build())
Java
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build(); // Then, use the BillingFlowParams to start the purchase flow int responseCode = billingClient.launchBillingFlow(builder.build());
Nouvelle façon d'interroger les produits disponibles
Les arguments des méthodes queryPurchaseHistoryAsync()
et querySkuDetailsAsync()
ont été encapsulés dans un modèle de compilateur :
Kotlin
val params = SkuDetailsParams.newBuilder() params.setSkusList(skuList) .setType(itemType) billingClient.querySkuDetailsAsync(params.build(), object : SkuDetailsResponseListener() { ... })
Java
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder(); params.setSkusList(skuList) .setType(itemType); billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {...})
Pour plus de commodité et de cohérence au sein de notre API, le résultat est désormais renvoyé via un code de résultat et une liste d'objets SkuDetails
au lieu d'une classe du wrapper :
Kotlin
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
Java
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
Ordre des paramètres modifié pour la méthode onConsumeResponse()
.
L'ordre des arguments de onConsumeResponse
dans l'interface ConsumeResponseListener
a été modifié afin d'être cohérent dans notre API :
Kotlin
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
Java
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
Objet PurchaseResult désencapsulé
PurchaseResult
a été désencapsulé afin d'être cohérent dans notre API :
Kotlin
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
Java
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
Correction de bugs
- Aucun code de réponse dans le bundle PURCHASES_UPDATED
- Résolution des problèmes liés à ProxyBillingActivity et PurchasesUpdatedListener lors de la rotation des appareils
Preview développeur version 1 (12/06/2017, annonce)
L'aperçu pour les développeurs a été lancé afin de simplifier le processus de développement en ce qui concerne la facturation. Les développeurs peuvent ainsi concentrer leurs efforts sur l'implémentation d'une logique spécifique à l'application Android, telle que l'architecture de l'application et la structure de navigation.
La bibliothèque comprend plusieurs classes et fonctionnalités pratiques que vous pouvez utiliser lorsque vous intégrez vos applications Android à l'API Google Play Billing. La bibliothèque fournit également une couche d'abstraction en plus du service AIDL (Android Interface Definition Language) pour les développeurs, ce qui leur permet de définir plus facilement l'interface entre l'application et l'API Google Play Billing.