Dieses Dokument enthält Versionshinweise für die Google Play Billing Library.
Android-Fähigkeiten
Auf GitHub ansehenPlay Billing Library aktualisieren
android skills add play-billing-library-version-upgradeHelp me upgrade my Play Billing Library implementation.Google Play Billing Library 9.1.0 Release (18.06.2026)
Version 9.1.0 der Google Play Billing Library und der Kotlin-Erweiterungen ist jetzt verfügbar.
Zusammenfassung der Änderungen
- Neue APIs für die Abrechnungsauswahl:
BillingClient.getBillingChoiceInfoAsync()wurde hinzugefügt, um Informationen zu den Abrechnungsoptionen abzurufen, die dem Nutzer zur Verfügung stehen.- Die Klasse
BillingChoiceInfowurde hinzugefügt. Sie enthält die Antwortdetails, einschließlich Bild-URLs und Informationen zum Treuepunkteprogramm. GetBillingChoiceInfoParamswurde hinzugefügt, um die Anfrage zu konfigurieren.BillingChoiceInfoResponseListenerwurde hinzugefügt, um den Callback zu empfangen.- Die Kotlin-Erweiterungsfunktion
BillingClient.getBillingChoiceInfo()wurde hinzugefügt. BillingClient.showBillingProgramInformationDialog()wurde hinzugefügt, um ein Informationsdialogfeld für ein Abrechnungsprogramm anzuzeigen.BillingProgramInformationDialogParamswurde hinzugefügt, um das Dialogfeld zu konfigurieren.BillingProgramInformationDialogListenerwurde hinzugefügt, um den Callback zu empfangen.BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetailswurde hinzugefügt, um Details zur Verfügbarkeit der Abrechnungsauswahl bereitzustellen.ChoiceScreenTypewurde hinzugefügt, um den Typ des Auswahlbildschirms anzugeben.
Google Play Billing Library 9.0.0 Release (19.05.2026)
Version 9.0.0 der Google Play Billing Library und der Kotlin-Erweiterungen ist jetzt verfügbar. Wenn Sie von früheren Versionen der PBL migrieren möchten, lesen Sie die Migrationsanleitung für PBL 9.
Zusammenfassung der Änderungen
Aktualisierte Fehlercodes für blockierte Google Play Store-Aktivitäten: Die Fehlercodes für blockierte Google Play Store-Apps wurden aktualisiert. In Fällen, in denen die Google Play Store App vom System blockiert wird (z. B. im vom OEM angepassten Kindermodus), hat sich der Antwortcode von
ERRORzuBILLING_UNAVAILABLEgeändert. Außerdem wird in solchen Fällen imBillingResultjetzt die Debug-Meldung Play Store is blocked angezeigt.Aktualisierung der Null-Zulässigkeit für die vom Entwickler bereitgestellte Abrechnung: Die Methode
DeveloperProvidedBillingDetails.getLinkUri()wurde aktualisiert und ist jetzt@Nullable. Diese Änderung unterstützt Szenarien, in denen der direkte Link-URI für externe Zahlungen während der Zahlungsauswahl nicht verfügbar ist.Damit diese Änderung sicher verarbeitet wird, muss Ihr Integrationscode sowohl
null- als auch leere Stringwerte ("") aus der MethodeDeveloperProvidedBillingDetails.getLinkUri()verarbeiten, bevor Browser-Intents geparst oder gestartet werden.targetSdkVersionwurde auf 35 aktualisiert.Sie können jetzt In-App-Messaging verwenden, um Nutzer über eine bevorstehende Preiserhöhung unter Vorbehalt des Nutzerwiderrufs zu informieren. So können Nutzer die Preiserhöhung bestätigen, ohne die App zu verlassen. Die Nachricht für eine ausstehende Opt-in-Preiserhöhung wird ab dem ersten Tag angezeigt, an dem der Nutzer die Preiserhöhung akzeptieren kann. Die Nachricht wird maximal einmal alle 7 Tage angezeigt.
Google Play Billing Library 8.3.0 Release (23.12.2025)
Version 8.3.0 der Google Play Billing Library und der Kotlin-Erweiterungen ist jetzt verfügbar.
Zusammenfassung der Änderungen
Neue APIs für externe Zahlungen:
- Klassen zur Unterstützung des Ablaufs für externe Zahlungen hinzugefügt:
enableBillingProgram(EnableBillingProgramParams)wurde hinzugefügt, um externe Zahlungen zu ermöglichen.BillingFlowParams.Builder.enableDeveloperBillingOptionwurde hinzugefügt, um den Ablauf für externe Zahlungen zu starten.
Verbesserte Fehlerkategorisierung für Abbrüche im externen Zahlungsablauf:
- Wenn ein Nutzer den Kaufvorgang verlässt, um die Zahlung in einer externen App (z. B. einer E-Wallet) abzuschließen, und die Transaktion abbricht, ohne zurückzukehren, wird an den Client jetzt der Antwortcode
BillingResponseCode.USER_CANCELED(1) mit der Debug-NachrichtBILLING_ACTIVITY_PAUSEDzurückgegeben (zuvor standardmäßigBillingResponseCode.ERROR(6)).
- Wenn ein Nutzer den Kaufvorgang verlässt, um die Zahlung in einer externen App (z. B. einer E-Wallet) abzuschließen, und die Transaktion abbricht, ohne zurückzukehren, wird an den Client jetzt der Antwortcode
Google Play Billing Library 8.2.1 Release (15.12.2025)
Version 8.2.1 der Google Play Billing Library und der Kotlin-Erweiterungen ist jetzt verfügbar.
Fehlerkorrekturen
- Ein Fehler in
isBillingProgramAvailableAsyncundcreateBillingProgramReportingDetailsAsyncwurde behoben. Aktualisieren Sie auf Version 8.2.1, um diese in 8.2.0 eingeführten APIs zu verwenden.
Google Play Billing Library 8.2.0 Release (09.12.2025)
Version 8.2.0 der Google Play Billing Library und der Kotlin-Erweiterungen ist jetzt verfügbar.
Zusammenfassung der Änderungen
Neue APIs für Links zu externen Inhalten und externe Angebote:
enableBillingProgramwurde hinzugefügt, um dieBillingClientfür diese Programme einzurichten.isBillingProgramAvailableAsyncwurde hinzugefügt, um die Berechtigung des Nutzers zu ermitteln.createBillingProgramReportingDetailsAsyncwurde hinzugefügt, um das externe Transaktionstoken zu erstellen, das für die Berichterstellung verwendet werden muss.launchExternalLinkwurde hinzugefügt, um den externen Link zu einem Angebot für digitale Inhalte oder einem App-Download zu initiieren.
Änderungen am Programm für externe Angebote:
- Es gibt Richtlinienänderungen für das Programm für externe Angebote. Weitere Informationen finden Sie unter Programmänderungen. Informationen zum Starten von Abläufen für externe Angebote mit den neuen APIs finden Sie im Integrationsleitfaden.
- Die
BillingClient.Builder.enableExternalOfferAPI wurde eingestellt. - Die
isExternalOfferAvailableAsyncAPI wurde eingestellt. - Die
createExternalOfferReportingDetailsAsyncAPI wurde eingestellt. - Die
showExternalOfferInformationDialogAPI wurde eingestellt.
Google Play Billing Library 8.1.0 Release (06.11.2025)
Version 8.1.0 der Google Play Billing Library und der Kotlin-Erweiterungen ist jetzt verfügbar.
Zusammenfassung der Änderungen
Gesperrte Abos
Der Methode
BillingClient.queryPurchasesAsync()wurde ein neuer Parameter hinzugefügt, um gesperrte Abos bei der Abfrage von Abos einzubeziehen. Gesperrte Abos werden dem Nutzer weiterhin zugeschrieben, sind aber nicht aktiv, weil der Nutzer das Abo pausiert hat oder seine Zahlungsmethode für die Verlängerung abgelehnt wurde.Das im Listener zurückgegebene
Purchase-Objekt gibt für alle gesperrten AbosisSuspended() = truezurück. In diesem Fall solltest du keinen Zugriff auf das gekaufte Abo gewähren, sondern den Nutzer zum Abocenter weiterleiten, wo er seine Zahlungsmethoden verwalten oder den Pausierungsstatus aufheben kann, um sein Abo wieder zu aktivieren.Änderungen bei Abos:
Das Objekt
BillingFlowParams.ProductDetailsParamsenthält jetzt die MethodesetSubscriptionProductReplacementParams(), mit der Sie Informationen zum Ersetzen auf Produktebene angeben können.Das
SubscriptionProductReplacementParams-Objekt hat zwei Setter-Methoden:setOldProductId: Das alte Produkt, das durch das Produkt im aktuellenProductDetailsersetzt werden muss.setReplacementMode: Dies ist der Ersetzungsmodus auf Artikelebene. Die Modi sind im Wesentlichen mit „SubscriptionUpdateParams“ identisch, die Wertzuordnung wurde jedoch aktualisiert. Es wird ein neuer ErsetzungsmodusKEEP_EXISTINGeingeführt, mit dem Sie den vorhandenen Zahlungsplan für einen Artikel unverändert beibehalten können.
SubscriptionUpdateParams setSubscriptionReplacementMode wird eingestellt. Verwenden Sie stattdessen
SubscriptionProductReplacementParams.setReplacementMode.
minSdkVersionwurde auf 23 aktualisiert.Vorbestellungs-APIs für Einmalkaufprodukte aktiviert
Die
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()API, mit der die Vorbestellungsdetails abgerufen werden, ist jetzt verfügbar.Die Google Play Billing Library unterstützt jetzt Kotlin-Version 2.2.0.
Google Play Billing Library 8.0.0 Release (30.06.2025)
Version 8.0.0 der Google Play Billing Library und der Kotlin-Erweiterungen ist jetzt verfügbar.
Zusammenfassung der Änderungen
In-App-Artikel werden jetzt als Einmalkaufprodukte bezeichnet.
Mehrere Kaufoptionen und Angebote für Einmalkaufprodukte.
Sie können jetzt mehrere Kaufoptionen und Angebote für Ihre Einmalkaufprodukte festlegen. So kannst du deine Produkte flexibler verkaufen und einfacher verwalten.
Die Methode
queryProductDetailsAsync()wurde verbessert.Vor PBL 8.0.0 wurden von der Methode
queryProductDetailsAsync()keine Produkte zurückgegeben, die nicht abgerufen werden konnten. Das kann daran liegen, dass das Produkt nicht gefunden wurde oder für den Nutzer keine Angebote verfügbar sind. In PBL 8.0.0 werden nicht abgerufene Produkte mit einem neuen Statuscode auf Produktebene zurückgegeben, der Informationen zu nicht abgerufenen Produkten enthält. Beachten Sie, dass sich die Signatur vonProductDetailsResponseListener.onProductDetailsResponse()geändert hat, was Änderungen in Ihrer App erfordert. Weitere Informationen finden Sie unter Ergebnis verarbeiten.Automatische Wiederherstellung der Verbindung zum Dienst.
Mit dem neuen Builder-Parameter
BillingClient.Builder.enableAutoServiceReconnection()können Entwickler die automatische Wiederherstellung der Dienstverbindung aktivieren. Dadurch wird die Verbindungsverwaltung vereinfacht, da die Wiederherstellung der Verbindung zum Play Billing-Dienst automatisch erfolgt undstartConnection()im Falle einer Dienstunterbrechung nicht manuell aufgerufen werden muss. Weitere Informationen finden Sie unter Verbindung automatisch wiederherstellen.Unterantwortcodes für die Methode
launchBillingFlow().Das von
launchBillingFlow()zurückgegebene BillingResult enthält jetzt ein Feld für den Unterantwortcode. Dieses Feld wird nur in einigen Fällen ausgefüllt, um einen genaueren Grund für den Fehler anzugeben. Das Feld für die Unterantwort kann die folgenden Werte haben:PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS: Wird zurückgegeben, wenn das Guthaben des Nutzers geringer ist als der Preis des Artikels, den er kaufen möchte.USER_INELIGIBLE: Wird zurückgegeben, wenn der Nutzer die konfigurierten Teilnahmevoraussetzungen für ein Aboangebot nicht erfüllt.NO_APPLICABLE_SUB_RESPONSE_CODE: Der Standardwert, der zurückgegeben wird, wenn kein anderer Unterantwortcode zutrifft.
Die Methode
queryPurchaseHistory()wurde entfernt.Die Methode
queryPurchaseHistory(), die zuvor als veraltet markiert wurde, wurde jetzt entfernt. Weitere Informationen zu alternativen APIs finden Sie unter Bisherige Käufe abfragen.Die Methode
querySkuDetailsAsync()wurde entfernt.Die Methode
querySkuDetailsAsync(), die zuvor als veraltet markiert wurde, wurde jetzt entfernt. Verwende stattdessen queryProductDetailsAsync.Die Methode
BillingClient.Builder.enablePendingPurchases()wurde entfernt.Die Methode
enablePendingPurchases()ohne Parameter, die zuvor als verworfen markiert wurde, wurde jetzt entfernt. Verwenden Sie stattdessenenablePendingPurchases(PendingPurchaseParams params). Beachten Sie, dass die verworfeneenablePendingPurchases()funktional mitenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())identisch ist.Die überladene
queryPurchasesAsync()-Methode, die einen skuType akzeptiert, wurde entfernt.Die Methode
queryPurchasesAsync(String skuType, PurchasesResponseListener listener), die zuvor als veraltet markiert wurde, wurde jetzt entfernt. Alternativ können Sie auchqueryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener)verwenden.
Google Play Billing Library 7.1.1 Release (03.10.2024)
Version 7.1.1 der Google Play Billing Library und der Kotlin-Erweiterungen ist jetzt verfügbar.
Fehlerkorrekturen
- In der Play Billing Library 7.1.0 wurde ein Fehler im Zusammenhang mit dem Testen von
BillingResult-Antwortcodes behoben.
Google Play Billing Library 7.1.0 Release (19.09.2024)
Version 7.1.0 der Google Play Billing Library und der Kotlin-Erweiterungen ist jetzt verfügbar.
Zusammenfassung der Änderungen
- Verbesserte Threadsicherheit im Zusammenhang mit dem Verbindungsstatus und der Verwaltung.
- Es wurden teilweise Änderungen zum Testen von
BillingResult-Antwortcodes eingeführt, die in der Play Billing Library 7.1.1 vollständig veröffentlicht wurden. Wenn Sie Ihre Integration mit dieser Funktion testen möchten, müssen Sie ein Upgrade auf die Play Billing Library 7.1.1 durchführen. Es gibt einen Fehler, der sich nur auf Anwendungen auswirkt, bei denen Tests für Abrechnungsüberschreibungen aktiviert sind. Die reguläre Nutzung ist nicht betroffen. Weitere Informationen finden Sie unterBillingResult-Antwortcodes testen.
Google Play Billing Library 7.0.0 Release (14.05.2024)
Version 7.0.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
APIs zur Unterstützung von Ratenabos hinzugefügt.
ProductDetails.InstallmentPlanDetailsfür Basis-Abos mit Ratenzahlung hinzugefügt, die Nutzer kaufen können. Mit dieser API kann Ihre App das Ratenzahlungsmodell und die zugehörige Verpflichtung identifizieren, um dem Nutzer entsprechende Informationen bereitzustellen. Weitere Informationen finden Sie in unserem Leitfaden zu Abo-Ratenzahlungen.
PendingPurchasesParamsundBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)wurden hinzugefügt, umBillingClient.Builder.enablePendingPurchases()zu ersetzen, das in dieser Version verworfen wurde.- Die verworfene
enablePendingPurchases()entspricht funktionalenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()).
- Die verworfene
APIs zur Unterstützung ausstehender Transaktionen für Prepaid-Abos hinzugefügt:
- Verwende
PendingPurchasesParams.Builder.enablePrepaidPlans()zusammen mitBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams), um ausstehende Transaktionen für Prepaid-Abos zu aktivieren. Achte beim Hinzufügen der Unterstützung darauf, dass deine App auch die Abo-Lebenszyklen korrekt verwaltet. Weitere Informationen finden Sie im Leitfaden zu ausstehenden Käufen. Purchase.PendingPurchaseUpdateundPurchase.getPendingPurchaseUpdate()wurden hinzugefügt, um die ausstehende Aufladung, das Upgrade oder das Downgrade eines bestehenden Abos abzurufen.
- Verwende
BillingClient.Builder.enableAlternativeBilling(),AlternativeBillingListenerundAlternativeChoiceDetailswurden entfernt.- Entwickler sollten stattdessen
BillingClient.Builder.enableUserChoiceBilling()mitUserChoiceBillingListenerundUserChoiceDetailsim Listener-Callback verwenden.
- Entwickler sollten stattdessen
BillingFlowParams.ProrationMode,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()undBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()wurden entfernt.- Entwickler sollten stattdessen
BillingFlowParams.SubscriptionUpdateParams.ReplacementModemitBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)verwenden.
- Entwickler sollten stattdessen
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()wurde entfernt.- Entwickler sollten stattdessen
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)verwenden.
- Entwickler sollten stattdessen
BillingClient.queryPurchaseHistoryAsync()wurde eingestellt und wird in einer zukünftigen Version entfernt. Entwickler sollten stattdessen die folgenden Alternativen verwenden:- Bestätigte und ausstehende Käufe: Verwende
BillingClient.queryPurchasesAsync(), um die aktiven Käufe abzurufen. - Verbrauchte Käufe: Entwickler sollten verbrauchte Käufe auf ihren eigenen Servern im Blick behalten.
- Stornierte Käufe: Verwende die Entwickler-API voided-purchases.
- Weitere Informationen finden Sie unter Bisherige Käufe abfragen.
- Bestätigte und ausstehende Käufe: Verwende
BillingFlowParams.ProductDetailsParams.setOfferToken()löst jetzt eine Ausnahme aus, wenn Entwickler eine leereofferTokenangeben.minSdkVersionwurde auf 21 undtargetSdkVersionauf 34 aktualisiert.
Google Play Billing Library 6.2.1 Release (16.04.2024)
Version 6.2.1 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
- Ein Fehler in
BillingClient.showAlternativeBillingOnlyInformationDialog()wurde behoben, bei demAlternativeBillingOnlyInformationDialogListenerin bestimmten Fällen nach Abschluss des Dialogs möglicherweise nicht aufgerufen wird.
Google Play Billing Library 6.2.0 Release (06.03.2024)
Version 6.2.0 der Google Play Billing Library und der Kotlin-Erweiterungen ist jetzt verfügbar.
Zusammenfassung der Änderungen
- APIs zur Unterstützung externer Angebote hinzugefügt
BillingClient.Builder.enableExternalOffer()hinzugefügt, um die Möglichkeit zu bieten, externe Angebote bereitzustellen.BillingClient.isExternalOfferAvailableAsync()hinzugefügt, um die Verfügbarkeit der Funktion zum Bereitstellen externer Angebote zu prüfen.BillingClient.showExternalOfferInformationDialog()wurde hinzugefügt, um Nutzern ein Informationsdialogfeld anzuzeigen, bevor sie die App verlassen.BillingClient.createExternalOfferReportingDetailsAsync()wurde hinzugefügt, um eine Nutzlast zu erstellen, die für die Meldung von Transaktionen über externe Angebote erforderlich ist.
Google Play Billing Library 6.1.0 Release (14.11.2023)
Version 6.1.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
- APIs zur Unterstützung der nur alternativen Abrechnung (d.h. ohne Nutzerauswahl) hinzugefügt
BillingClient.Builder.enableAlternativeBillingOnly()wurde hinzugefügt, um die Möglichkeit zu bieten, nur alternative Abrechnung anzubieten.BillingClient.isAlternativeBillingOnlyAvailableAsync()wurde hinzugefügt, um zu prüfen, ob nur die alternative Abrechnung angeboten werden kann.BillingClient.showAlternativeBillingOnlyInformationDialog()wurde hinzugefügt, um ein Informationsdialogfeld anzuzeigen, wenn nur die alternative Abrechnung verwendet wird.BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()wurde hinzugefügt, um eine Nutzlast zu erstellen, die für die Meldung von Transaktionen erforderlich ist, die nur über die alternative Abrechnung abgewickelt wurden.
- Aktualisierung der APIs für die Abrechnung mit Auswahlmöglichkeit für Nutzer
UserChoiceBillingListenerwurde hinzugefügt, um AlternativeBillingListener zu ersetzen, das als verworfen markiert wurde.UserChoiceDetailswurde hinzugefügt, umAlternativeChoiceDetailszu ersetzen, das als verworfen markiert wurde.BillingClient.Builder.enableUserChoiceBilling()wurde hinzugefügt, umBillingClient.Builder.enableAlternativeBilling()zu ersetzen, das als verworfen markiert wurde.
BillingClient.getBillingConfigAsync()wurde hinzugefügt, um das Google Play-Land abzurufen.
Google Play Billing Library 6.0.1 Release (22.06.2023)
Version 6.0.1 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
Aktualisieren Sie die Play Billing Library, damit sie mit Android 14 kompatibel ist.
Google Play Billing Library 6.0 Release (10.05.2023)
Version 6.0.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
Neues Enum
ReplacementModehinzugefügt, umProrationModezu ersetzen.ProrationModeist aus Gründen der Abwärtskompatibilität weiterhin verfügbar.Bestell-ID für
PENDING-Käufe entfernt.Bisher wurde die Bestell-ID immer erstellt, auch wenn der Kauf noch ausstand. Ab Version 6.0.0 wird für ausstehende Käufe keine Bestell-ID erstellt. Für diese Käufe wird die Bestell-ID erst dann ausgefüllt, wenn der Kauf in den Status
PURCHASEDübergeht.Die Methoden
queryPurchasesundlaunchPriceConfirmationFlowwurden entfernt.Die Methoden
queryPurchasesundlaunchPriceConfirmationFlow, die zuvor als veraltet markiert wurden, wurden jetzt in der Play Billing Library 6.0.0 entfernt. Entwickler solltenqueryPurchasesAsyncanstelle vonqueryPurchasesverwenden. Informationen zu Alternativen fürlaunchPriceConfirmationFlowfinden Sie unter Preisänderungen.Neuer Netzwerkfehler-Antwortcode hinzugefügt.
Ab PBL-Version 6.0.0 wurde ein neuer Antwortcode für Netzwerkfehler hinzugefügt:
NETWORK_ERROR. Dieser Code wird zurückgegeben, wenn ein Fehler aufgrund eines Netzwerkverbindungsproblems auftritt. Diese Netzwerkverbindungsfehler wurden zuvor alsSERVICE_UNAVAILABLEgemeldet.SERVICE_UNAVAILABLEundSERVICE_TIMEOUTaktualisiert.Ab PBL-Version 6.0.0 werden Fehler aufgrund von Zeitüberschreitungen bei der Verarbeitung als
SERVICE_UNAVAILABLEstatt wie bisher alsSERVICE_TIMEOUTzurückgegeben.In früheren Versionen von PBL ändert sich das Verhalten nicht.
SERVICE_TIMEOUTwurde entfernt.Ab PBL-Version 6.0.0 wird
SERVICE_TIMEOUTnicht mehr zurückgegeben. In früheren Versionen der PBL wird dieser Code weiterhin zurückgegeben.Zusätzliches Logging hinzugefügt.
Die Play Billing Library 6 enthält zusätzliche Logging-Funktionen, die Einblicke in die API-Nutzung (z. B. Erfolg und Fehler) und Probleme mit der Dienstverbindung bieten. Diese Informationen werden verwendet, um die Leistung der Play Billing Library zu verbessern und Fehler besser zu beheben.
Google Play Billing Library 5.2.1 Release (22.06.2023)
Version 5.2.1 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
Aktualisieren Sie die Play Billing Library, damit sie mit Android 14 kompatibel ist.
Google Play Billing Library 5.2 Release (06.04.2023)
Version 5.2.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
- Es wurden Klassen hinzugefügt, um alternative Abrechnungsabläufe auf Smartphones und Tablets für Nutzer in Südkorea zu unterstützen:
- Die Methode
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()wurde hinzugefügt, um die ID der externen Transaktion des ursprünglichen Abos anzugeben. - Die Methode
BillingClient.Builder.enableAlternativeBilling()wurde hinzugefügt, damit Nutzer in Südkorea eine alternative Abrechnungsoption auswählen können.
Google Play Billing Library 5.1 Release (31.10.2022)
Version 5.1.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
- Die Methode
ProductDetails.SubscriptionOfferDetails.getOfferId()wurde hinzugefügt, um die Angebots-ID abzurufen. - Die Methode
ProductDetails.SubscriptionOfferDetails.getBasePlanId()wurde hinzugefügt, um die Basis-Abo-ID abzurufen. targetSdkVersionwurde auf 31 aktualisiert.
Google Play Billing Library 5.0 Release (11.05.2022)
Version 5.0.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
- Einführung eines neuen Modells für Abos, einschließlich neuer Entitäten, mit denen du mehrere Angebote für ein einzelnes Aboprodukt erstellen kannst. Weitere Informationen finden Sie in der Migrationsanleitung.
BillingClient.queryProductDetailsAsync()wurde hinzugefügt, umBillingClient.querySkuDetailsAsync()zu ersetzen.- Methode
setIsOfferPersonalized()für die Offenlegungspflichten für personalisierte Preise in der EU hinzugefügt. Weitere Informationen zur Verwendung dieser Methode finden Sie unter Personalisierten Preis angeben. queryPurchases()wurde entfernt. Diese Methode wurde zuvor verworfen und durch „queryPurchasesAsync“ ersetzt, die in der Google Play Billing Library 4.0.0 eingeführt wurde.launchPriceChangeFlowwurde eingestellt und wird in einer zukünftigen Version entfernt. Weitere Informationen zu Alternativen finden Sie unter Bestätigungsablauf für Preisänderungen starten.setVrPurchaseFlow()wurde entfernt. Dies wurde zuvor beim Instanziieren eines Kaufvorgangs verwendet. In früheren Versionen wurden Nutzer mit dieser Methode weitergeleitet, um den Kauf auf ihrem Android-Gerät abzuschließen. Nachdem du diese Methode entfernt hast, schließen Nutzer den Kauf über den Standard-Kaufvorgang ab.
Google Play Billing Library 4.1 (23.02.2022)
Version 4.1.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
BillingClient.showInAppMessages()wurde hinzugefügt, um die Bearbeitung von abgelehnten Abozahlungen zu erleichtern. Weitere Informationen zur Verwendung von In-App-Nachrichten für die Bearbeitung von abgelehnten Abozahlungen finden Sie unter Umgang mit abgelehnten Zahlungen.
Google Play Billing Library 4.0 Release (18.05.2021)
Version 4.0.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
BillingClient.queryPurchasesAsync()wurde hinzugefügt, umBillingClient.queryPurchases()zu ersetzen, das in einer zukünftigen Version entfernt wird.Neuer Abo-Ersetzungsmodus
IMMEDIATE_AND_CHARGE_FULL_PRICEhinzugefügt.Die Methode
BillingClient.getConnectionState()wurde hinzugefügt, um den Verbindungsstatus der Play Billing Library abzurufen.Javadoc und Implementierung wurden aktualisiert, um anzugeben, in welchem Thread eine Methode aufgerufen werden kann und in welchem Thread Ergebnisse gepostet werden.
BillingFlowParams.Builder.setSubscriptionUpdateParams()wurde als neue Möglichkeit zum Initiieren von Aboaktualisierungen hinzugefügt. Diese ersetzt die entfernten VersionenBillingFlowParams#getReplaceSkusProrationMode,BillingFlowParams#getOldSkuPurchaseToken,BillingFlowParams#getOldSku,BillingFlowParams.Builder#setReplaceSkusProrationModeundBillingFlowParams.Builder#setOldSku.Purchase.getQuantity()undPurchaseHistoryRecord.getQuantity()hinzugefügt.Purchase#getSkus()undPurchaseHistoryRecord#getSkus()wurden hinzugefügt. Diese ersetzenPurchase#getSkuundPurchaseHistoryRecord#getSku, die entfernt wurden.BillingFlowParams#getSku,BillingFlowParams#getSkuDetailsundBillingFlowParams#getSkuTypewurden entfernt.
Google Play Billing Library 3.0.3 Release (12.03.2021)
Version 3.0.3 der Google Play Billing Library, der Kotlin-Erweiterung und des Unity-Plug-ins sind jetzt verfügbar.
Fehlerkorrekturen für Java und Kotlin
- Speicherleck beim Aufrufen von
endConnection()behoben. - Problem behoben, das auftrat, wenn die Google Play Billing Library von Apps verwendet wurde, die den Startmodus „Single Task“ verwenden. Ein
onPurchasesUpdated()-Callback wird ausgelöst, wenn eine App über den Android Launcher fortgesetzt wird und das Abrechnungsdialogfeld vor dem Pausieren sichtbar war.
Unity-Fehlerkorrekturen
- Aktualisieren Sie auf die Java-Version 3.0.3, um das Speicherleck zu beheben und das Problem zu lösen, das Käufe verhindert, wenn eine App über den Android Launcher fortgesetzt wird und das Abrechnungsdialogfeld vor dem Sperren sichtbar war.
Google Play Billing Library 3.0.2 Release (24.11.2020)
Version 3.0.2 der Google Play Billing Library und der Kotlin-Erweiterung sind jetzt verfügbar.
Fehlerkorrekturen
- Ein Fehler in der Kotlin-Erweiterung wurde behoben, bei dem die Koroutine mit dem Fehler „Bereits fortgesetzt“ fehlschlägt.
- Nicht aufgelöste Verweise wurden behoben, wenn die Kotlin-Erweiterung mit der kotlinx.coroutines-Bibliothek ab Version 1.4 verwendet wird.
Google Play Billing Library 3.0.1 Release (30.09.2020)
Version 3.0.1 der Google Play Billing Library und der Kotlin-Erweiterung sind jetzt verfügbar.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem
PurchasesUpdatedListenermöglicherweise nicht mit dem Kaufergebnis aufgerufen wurde, wenn die App während des Abrechnungsvorgangs beendet und wiederhergestellt wurde.
Google Play Billing Library 3.0 Release (08.06.2020)
Version 3.0.0 der Google Play Billing Library, der Kotlin-Erweiterung und des Unity-Plug-ins sind jetzt verfügbar.
Zusammenfassung der Änderungen
- Die Unterstützung für Artikelnummern mit Prämie wurde entfernt.
- Die Parameter
ChildDirectedundUnderAgeOfConsentwurden entfernt. - Veraltete Methoden für Entwicklernutzlasten wurden entfernt.
- Die verworfenen Methoden
BillingFlowParams.setAccountId()undBillingFlowParams.setDeveloperId()wurden entfernt. - Die verworfenen Methoden
BillingFlowParams.setOldSkus(String oldSku)undBillingFlowParams.addOldSku(String oldSku)wurden entfernt. - Anmerkungen zur Null-Zulässigkeit hinzugefügt.
Fehlerkorrekturen
SkuDetails.getIntroductoryPriceCycles()gibt jetztintanstelle vonStringzurück.- Ein Fehler wurde behoben, bei dem der Abrechnungsvorgang so behandelt wurde, als ob zusätzliche Parameter vorhanden wären, auch wenn keine zusätzlichen Parameter festgelegt waren.
Google Play Billing Library 2.2.1 Release (20.05.2020)
Version 2.2.1 der Google Play Billing Library ist jetzt verfügbar.
Fehlerkorrekturen
- Die Standardversion der Java Play Billing Library, von der die Kotlin-Erweiterung abhängt, wurde aktualisiert.
Google Play Billing Library 2.2.0 Release und Unity-Unterstützung (23.03.2020)
Version 2.2.0 der Google Play Billing bietet Funktionen, mit denen Entwickler sicherstellen können, dass Käufe dem richtigen Nutzer zugeordnet werden. Diese Änderungen ersetzen die Notwendigkeit, benutzerdefinierte Lösungen auf der Grundlage von Entwicklernutzlasten zu erstellen. Im Rahmen dieses Updates wurde die Funktion „Entwicklernutzlast“ eingestellt und wird in einer zukünftigen Version entfernt. Weitere Informationen, einschließlich empfohlener Alternativen, finden Sie unter Entwicklernutzlast.
Google Play Billing Library 2 für Unity
Zusätzlich zu den aktuellen Java- und Kotlin-Versionen der Google Play Billing Library 2 haben wir eine Version der Bibliothek für die Verwendung mit Unity veröffentlicht. Spieleentwickler, die die Unity In-App-Kauf API verwenden, können jetzt ein Upgrade durchführen, um alle Funktionen der Google Play Billing Library 2 zu nutzen und nachfolgende Upgrades auf zukünftige Versionen der Google Play Billing Library zu vereinfachen.
Weitere Informationen finden Sie unter Google Play Billing mit Unity verwenden.
Zusammenfassung der Änderungen
- Java Google Play Billing Library
- In
AcknowledgePurchaseParamswurden die MethodensetDeveloperPayload()undgetDeveloperPayload()verworfen. - In
ConsumeParamswurden die MethodensetDeveloperPayload()undgetDeveloperPayload()verworfen. - In
BillingFlowParamswurdesetAccountId()insetObfuscatedAccountId()umbenannt und die Längenbeschränkung von 64 Zeichen sowie die Einschränkung, dass in diesem Feld keine personenidentifizierbaren Informationen enthalten sein dürfen, dokumentiert.setAccountId()wurde als veraltet markiert und wird in einer zukünftigen Bibliotheksversion entfernt. - In
BillingFlowParamswurdesetObfuscatedProfileId()hinzugefügt, das ähnlich wiesetObfuscatedAccountId()funktioniert. Weitere Informationen finden Sie unter Aktualisierungen und Alternativen für die Entwicklernutzlast. - In
Purchasewurde die MethodegetAccountIdentifiers()hinzugefügt, um die inBillingFlowParamsfestgelegten verschleierten Konto-IDs zurückzugeben. - In
BillingClientwurde die MethodeloadRewardedSku()im Rahmen der Einstellung von SKUs mit Prämie als verworfen markiert.
- In
Google Play Billing Library 2.1.0 Release und Kotlin Extension 2.1.0 Release (10.12.2019)
Version 2.1.0 der Google Play Billing Library und die neue Kotlin-Erweiterung sind jetzt verfügbar. Die Kotlin-Erweiterung der Play Billing Library bietet idiomatische API-Alternativen für die Kotlin-Nutzung mit besserer Null-Sicherheit und Koroutinen. Codebeispiele findest du unter Google Play Billing Library verwenden.
Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
- In
BillingFlowParamswurdesetOldSku(String oldSku)eingestellt und durchsetOldSku(String oldSku, String purchaseToken)ersetzt, um Mehrdeutigkeiten zu vermeiden, wenn mehrere Konten auf dem Gerät dieselbe SKU besitzen.
Google Play Billing Library 2.0.3 Release (05.08.2019)
Version 2.0.3 der Google Play Billing Library ist jetzt verfügbar.
Fehlerkorrekturen
- Ein Fehler wurde behoben, durch den
querySkuDetailsAsync()gelegentlich mit dem CodeDEVELOPER_ERRORfehlschlug, anstatt ein erfolgreiches Ergebnis zurückzugeben.
Google Play Billing Library 2.0.2 Release (08.07.2019)
Version 2.0.2 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält Aktualisierungen der Referenzdokumentation und ändert nichts an der Funktionalität der Bibliothek.
Google Play Billing Library 2.0.1 Release (06.06.2019)
Version 2.0.1 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, durch den Debug-Nachrichten in einigen Fällen als
nullzurückgegeben wurden. - Ein potenzielles Problem mit einem Speicherleck wurde behoben.
Google Play Billing Library 2.0 Release (07.05.2019)
Version 2.0 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Käufe müssen innerhalb von drei Tagen bestätigt werden
Google Play unterstützt den Kauf von Produkten innerhalb Ihrer App (In-App) oder außerhalb Ihrer App (Out-of-App). Damit Google Play unabhängig davon, wo der Nutzer dein Produkt kauft, ein einheitliches Kauferlebnis bieten kann, musst du alle Käufe, die über die Google Play Billing Library eingehen, so schnell wie möglich bestätigen, nachdem du dem Nutzer die Berechtigung erteilt hast. Wenn du einen Kauf nicht innerhalb von drei Tagen bestätigst, erhält der Nutzer automatisch eine Erstattung und Google Play widerruft den Kauf. Bei ausstehenden Transaktionen (neu in Version 2.0) beginnt das dreitägige Zeitfenster, wenn der Kauf den Status PURCHASED erreicht hat. Es gilt nicht, solange der Kauf den Status PENDING hat.
Bei Abos musst du jeden Kauf bestätigen, der ein neues Kauf-Token hat. Das bedeutet, dass alle Erstkäufe, Aboänderungen und Neuanmeldungen bestätigt werden müssen, nachfolgende Verlängerungen jedoch nicht. Wenn du herausfinden möchtest, ob ein Kauf bestätigt werden muss, kannst du das Bestätigungsfeld im Kauf prüfen.
Das Objekt Purchase enthält jetzt die Methode isAcknowledged(), die angibt, ob ein Kauf bestätigt wurde. Außerdem enthält die Google Play Developer API boolesche Bestätigungswerte für Purchases.products und Purchases.subscriptions.
Bevor du einen Kauf bestätigst, solltest du mit diesen Methoden prüfen, ob der Kauf bereits bestätigt wurde.
Sie können einen Kauf mit einer der folgenden Methoden bestätigen:
- Verwenden Sie für Verbrauchsprodukte
consumeAsync()aus der Client API. - Verwende für Produkte, die nicht verbraucht werden,
acknowledgePurchase()aus der Client API. - In der Server API ist außerdem eine neue
acknowledge()-Methode verfügbar.
BillingFlowParams.setSku() wurde entfernt
Die zuvor verworfene Methode BillingFlowParams#setSku() wurde in diesem Release entfernt. Bevor du Produkte in einem Kaufvorgang renderst, musst du jetzt BillingClient.querySkuDetailsAsync() aufrufen und das resultierende SkuDetails-Objekt an BillingFlowParams.Builder.setSkuDetails() übergeben.
Codebeispiele findest du unter Google Play Billing Library verwenden.
Entwicklernutzlast wird unterstützt
Version 2.0 der Google Play Billing Library bietet Unterstützung für Entwicklernutzlasten – beliebige Strings, die an Käufe angehängt werden können. Du kannst einen Parameter für die Entwicklernutzlast an einen Kauf anhängen, aber nur, wenn der Kauf bestätigt oder verbraucht wurde. Dies unterscheidet sich von der Entwicklernutzlast in AIDL, bei der die Nutzlast beim Starten des Kaufvorgangs angegeben werden konnte. Da Käufe jetzt außerhalb deiner App initiiert werden können, sorgt diese Änderung dafür, dass du immer die Möglichkeit hast, Käufen eine Nutzlast hinzuzufügen.
Für den Zugriff auf die Nutzlast in der neuen Bibliothek enthalten Purchase-Objekte jetzt eine getDeveloperPayload()-Methode.
Konsistente Angebote
Wenn ihr eine SKU mit Rabatt anbietet, gibt Google Play jetzt den ursprünglichen Preis der SKU zurück, damit ihr Nutzern zeigen könnt, dass sie einen Rabatt erhalten.
SkuDetails enthält zwei neue Methoden zum Abrufen des ursprünglichen SKU-Preises:
getOriginalPriceAmountMicros()- gibt den unformatierten Originalpreis der SKU vor dem Rabatt zurück.
getOriginalPrice()- gibt den ursprünglichen Preis mit zusätzlicher Währungsformatierung zurück.
Ausstehende Transaktionen
In Version 2.0 der Google Play Billing Library musst du Käufe unterstützen, bei denen zusätzliche Maßnahmen erforderlich sind, bevor die Berechtigung gewährt wird. Beispielsweise könnte ein Nutzer dein In-App-Produkt in einem Geschäft bar bezahlen. Das bedeutet, dass die Transaktion außerhalb Ihrer App abgeschlossen wird. In diesem Szenario sollten Sie die Berechtigung erst erteilen, nachdem der Nutzer die Transaktion abgeschlossen hat.
Wenn du ausstehende Käufe aktivieren möchtest, rufe bei der Initialisierung deiner App enablePendingPurchases() auf.
Verwenden Sie Purchase.getPurchaseState(), um festzustellen, ob der Kaufstatus PURCHASED oder PENDING ist. Beachten Sie, dass Sie die Berechtigung nur gewähren sollten, wenn der Status PURCHASED lautet. So können Sie nach Purchase-Statusaktualisierungen suchen:
- Rufe beim Starten deiner App
BillingClient.queryPurchases()auf, um die Liste der nicht verbrauchten Produkte abzurufen, die dem Nutzer zugeordnet sind. - Rufen Sie
Purchase.getPurchaseState()für jedes zurückgegebenePurchase-Objekt auf. - Implementieren Sie die Methode
onPurchasesUpdated(), um auf Änderungen anPurchase-Objekten zu reagieren.
Außerdem enthält die Google Play Developer API den Status PENDING für Purchases.products.
Ausstehende Transaktionen werden für Abos nicht unterstützt.
Mit diesem Release wird auch ein neuer Typ von Echtzeit-Entwicklerbenachrichtigungen eingeführt: OneTimeProductNotification. Dieser Benachrichtigungstyp enthält eine einzelne Nachricht, deren Wert entweder ONE_TIME_PRODUCT_PURCHASED oder ONE_TIME_PRODUCT_CANCELED ist. Dieser Benachrichtigungstyp wird nur für Käufe gesendet, die mit verzögerten Zahlungsmethoden wie Bargeld verknüpft sind.
Achte beim Bestätigen ausstehender Käufe darauf, dass du nur Käufe mit dem Status PURCHASED und nicht mit dem Status PENDING bestätigst.
API-Änderungen
Version 2.0 der Google Play Billing Library enthält mehrere API-Änderungen, um neue Funktionen zu unterstützen und bestehende Funktionen zu verdeutlichen.
consumeAsync
consumeAsync() akzeptiert jetzt ein ConsumeParams-Objekt anstelle eines purchaseToken-Objekts. ConsumeParams enthält die purchaseToken sowie eine optionale Entwicklernutzlast.
Die vorherige Version von consumeAsync() wurde in dieser Version entfernt.
queryPurchaseHistoryAsync
Um Verwirrung zu vermeiden, gibt queryPurchaseHistoryAsync() jetzt ein PurchaseHistoryRecord-Objekt anstelle eines Purchase-Objekts zurück. Das PurchaseHistoryRecord-Objekt ist mit einem Purchase-Objekt identisch, spiegelt jedoch nur die von queryPurchaseHistoryAsync() zurückgegebenen Werte wider und enthält nicht die Felder autoRenewing, orderId und packageName. An den zurückgegebenen Daten hat sich nichts geändert. queryPurchaseHistoryAsync() gibt dieselben Daten wie zuvor zurück.
BillingResult-Rückgabewerte
APIs, die zuvor einen Ganzzahlwert BillingResponse zurückgegeben haben, geben jetzt ein BillingResult-Objekt zurück. BillingResult enthält die Ganzzahl BillingResponse sowie einen Debug-String, mit dem Sie Fehler diagnostizieren können. Der Debug-String verwendet das Gebietsschema „en-US“ und ist nicht für Endnutzer gedacht.
Fehlerkorrekturen
SkuDetails.getIntroductoryPriceAmountMicros()gibt jetzt einlonganstelle einesStringzurück.
Google Play Billing Library 1.2.2 Release (07.03.2019)
Version 1.2.2 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Fehlerkorrekturen
- Ein Threading-Problem, das in Version 1.2.1 eingeführt wurde, wurde behoben. Hintergrundaufrufe blockieren den Hauptthread nicht mehr.
Sonstige Änderungen
- Obwohl die Verwendung des Hauptthreads weiterhin empfohlen wird, können Sie die Google Play Billing Library jetzt über einen Hintergrundthread instanziieren.
- Die Instanziierung wurde vollständig in den Hintergrundthread migriert, um die Wahrscheinlichkeit von ANRs zu verringern.
Play Billing Library 1.2.1 Release (04.03.2019)
Version 1.2.1 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Größere Änderungen
- Unterstützung für Produkte mit Prämie hinzugefügt. Weitere Informationen zu Monetarisierungsoptionen finden Sie unter Prämienproduktspezifische Funktionen hinzufügen.
Sonstige Änderungen
- Öffentliche Konstruktoren für
PurchasesResultundSkuDetailsResultwurden hinzugefügt, um das Testen zu vereinfachen. SkuDetails-Objekte können eine neue Methode verwenden:getOriginalJson().- Alle AIDL-Dienstaufrufe werden jetzt von Hintergrundthreads verarbeitet.
Fehlerkorrekturen
- Null-Callback-Listener werden nicht mehr an öffentliche APIs übergeben.
Google Play Billing Library 1.2 Release (18.10.2018)
Version 1.2 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
- Die Google Play Billing Library ist jetzt unter der Lizenzvereinbarung für das Android Software Development Kit lizenziert.
- Die
launchPriceChangeConfirmationFlowAPI wurde hinzugefügt, mit der Nutzer aufgefordert werden, eine ausstehende Änderung des Abopreises zu prüfen. - Unterstützung für einen neuen anteiligen Modus,
DEFERRED, beim Up- oder Downgrade des Abos eines Nutzers hinzugefügt. - In der Klasse
BillingFlowParamswurdesetSku()durchsetSkuDetails()ersetzt. - Kleinere Fehlerkorrekturen und Codeoptimierungen.
Bestätigung der Preisänderung
Du kannst jetzt den Preis eines Abos in der Google Play Console ändern und Nutzer auffordern, den neuen Preis zu prüfen und zu akzeptieren, wenn sie deine App öffnen.
Wenn du diese API verwenden möchtest, erstelle ein PriceChangeFlowParams-Objekt mit der skuDetails des Aboprodukts und rufe dann launchPriceChangeConfirmationFlow() auf. Implementiere PriceChangeConfirmationListener, um das Ergebnis zu verarbeiten, wenn der Bestätigungsablauf für die Preisänderung abgeschlossen ist, wie im folgenden Code-Snippet gezeigt:
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. } });
Im Bestätigungsablauf für Preisänderungen wird ein Dialogfeld mit den neuen Preisinformationen angezeigt, in dem Nutzer aufgefordert werden, den neuen Preis zu akzeptieren. Dieser Ablauf gibt einen Antwortcode vom Typ BillingClient.BillingResponse zurück.
Neuer Modus für anteilige Abo-Übertragung
Wenn Sie das Abo eines Nutzers upgraden oder downgraden, können Sie einen neuen anteiligen Modus verwenden: DEFERRED. In diesem Modus wird das Abo des Nutzers bei der nächsten Verlängerung aktualisiert.
Weitere Informationen zum Festlegen dieses anteiligen Modus finden Sie unter Anteiligen Modus festlegen.
Neue Methode zum Festlegen von SKU-Details
In der Klasse BillingFlowParams wurde die Methode setSku() verworfen.
Diese Änderung dient der Optimierung des Google Play-Abrechnungsvorgangs.
Wenn Sie eine neue Instanz von BillingFlowParams in Ihrem In-App-Abrechnungsclient erstellen, empfehlen wir, stattdessen direkt mit dem JSON-Objekt zu arbeiten und setSkuDetails() zu verwenden, wie im folgenden Code-Snippet gezeigt:
In der Builder-Klasse BillingFlowParams wurde die Methode setSku() eingestellt. Verwenden Sie stattdessen die Methode setSkuDetails(), wie im folgenden Code-Snippet gezeigt. Das an das setSkuDetails()-Objekt übergebene Objekt stammt aus der Methode 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(); }
Play Billing Library 1.1 Release (07.05.2018)
Version 1.1 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
- Es wurde Unterstützung für die Angabe eines anteiligen Modus in
BillingFlowParamsbeim Upgrade/Downgrade eines bestehenden Abos hinzugefügt. - Das boolesche Flag
replaceSkusProrationinBillingFlowParamswird nicht mehr unterstützt. Verwenden Sie stattdessenreplaceSkusProrationMode. launchBillingFlow()löst jetzt einen Callback für fehlgeschlagene Antworten aus.
Geändertes Verhalten
Version 1.1 der Google Play Billing Library enthält die folgenden Verhaltensänderungen.
Entwickler können replaceSkusProrationMode in der Klasse BillingFlowParams festlegen.
Ein ProrationMode enthält weitere Details zur Art der anteiligen Berechnung beim Upgrade oder Downgrade des Abos eines Nutzers.
Kotlin
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
Java
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
Google Play unterstützt die folgenden anteiligen Modi:
IMMEDIATE_WITH_TIME_PRORATION |
Der Ersatz wird sofort wirksam und die neue Ablaufzeit wird anteilig berechnet und dem Nutzer gutgeschrieben oder in Rechnung gestellt. Dies ist das aktuelle Standardverhalten. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE |
Der Ersatz wird sofort wirksam und der Abrechnungszeitraum bleibt gleich. Der Preis für den verbleibenden Zeitraum wird in Rechnung gestellt.
Hinweis: Diese Option ist nur für Abo-Upgrades verfügbar. |
IMMEDIATE_WITHOUT_PRORATION |
Der Ersatz wird sofort wirksam und der neue Preis wird beim nächsten Abrechnungszeitpunkt in Rechnung gestellt. Der Abrechnungszeitraum bleibt gleich. |
replaceSkusProration wird in der Klasse BillingFlowParams nicht mehr unterstützt.
Entwickler konnten früher ein boolesches Flag festlegen, um für eine Anfrage zum Upgrade eines Abos einen anteiligen Betrag zu berechnen. Da wir ProrationMode unterstützen, das detailliertere Anweisungen zur anteiligen Berechnung enthält, wird dieses boolesche Flag nicht mehr unterstützt.
launchBillingFlow() löst jetzt einen Callback für fehlgeschlagene Antworten aus
Die Billing Library löst immer den Callback PurhcasesUpdatedListener aus und gibt asynchron ein BillingResponse zurück. Der synchrone Rückgabewert von BillingResponse wird ebenfalls beibehalten.
Fehlerkorrekturen
- Asynchrone Methoden werden ordnungsgemäß vorzeitig beendet, wenn die Verbindung zum Dienst getrennt wird.
Builder-Parameterobjekte mutieren keine erstellten Objekte mehr.- Problem 68087141:
launchBillingFlow()löst jetzt einen Callback für fehlgeschlagene Antworten aus.
Google Play Billing Library 1.0 Release (19.09.2017, Ankündigung)
Version 1.0 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Wichtige Änderungen
- Eingebettete Abrechnungsberechtigung im Manifest der Bibliothek. Die Berechtigung
com.android.vending.BILLINGmuss nicht mehr im Android-Manifest hinzugefügt werden. - Der Klasse
BillingClient.Builderwurde ein neuer Builder hinzugefügt. - Builder-Muster für die Klasse
SkuDetailsParamseingeführt, das für Methoden zum Abfragen von SKUs verwendet werden soll. - Mehrere API-Methoden wurden aus Konsistenzgründen aktualisiert (dieselben Namen und dieselbe Reihenfolge der Rückgabeargumente).
Geändertes Verhalten
Version 1.0 der Google Play Billing Library enthält die folgenden Verhaltensänderungen.
BillingClient.Builder-Klasse
BillingClient.Builder wird jetzt über das newBuilder-Muster initialisiert:
Kotlin
billingClient = BillingClient.newBuilder(context).setListener(this).build()
Java
billingClient = BillingClient.newBuilder(context).setListener(this).build();
Die Methode „launchBillingFlow“ wird jetzt mit einer BillingFlowParams-Klasse aufgerufen
Um den Abrechnungsvorgang für einen Kauf oder ein Abo zu starten, empfängt die Methode launchBillingFlow() eine BillingFlowParams-Instanz, die mit für die Anfrage spezifischen Parametern initialisiert wurde:
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());
Neue Möglichkeit zum Abfragen verfügbarer Produkte
Argumente für die Methoden queryPurchaseHistoryAsync() und querySkuDetailsAsync() wurden in ein Builder-Muster verpackt:
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() {...})
Das Ergebnis wird jetzt über einen Ergebniscode und eine Liste von SkuDetails-Objekten anstelle der vorherigen Wrapper-Klasse zurückgegeben. Das ist praktischer und sorgt für Konsistenz in unserer API:
Kotlin
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
Java
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
Reihenfolge der Parameter in der Methode onConsumeResponse() geändert
Die Reihenfolge der Argumente für onConsumeResponse aus der Schnittstelle ConsumeResponseListener wurde geändert, um in unserer API einheitlich zu sein:
Kotlin
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
Java
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
Entpacktes PurchaseResult-Objekt
PurchaseResult wurde entpackt, um in unserer API einheitlich zu sein:
Kotlin
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
Java
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
Fehlerkorrekturen
- Kein Antwortcode im PURCHASES_UPDATED-Bundle
- Probleme mit ProxyBillingActivity und PurchasesUpdatedListener beim Drehen des Geräts beheben
Entwicklervorschau 1 (12.06.2017, Ankündigung)
Die Entwicklervorschau wurde veröffentlicht, um den Entwicklungsprozess im Hinblick auf die Abrechnung zu vereinfachen. So können sich Entwickler auf die Implementierung der Logik für die Android-App konzentrieren, z. B. auf die Anwendungsarchitektur und die Navigationsstruktur.
Die Bibliothek enthält mehrere praktische Klassen und Funktionen, die Sie bei der Integration Ihrer Android-Apps in die Google Play Billing API verwenden können. Die Bibliothek bietet außerdem eine Abstraktionsebene über dem AIDL-Dienst (Android Interface-Definitionssprache), sodass Entwickler die Schnittstelle zwischen der App und der Google Play Billing API einfacher definieren können.