Dieses Thema enthält Versionshinweise für die Google Play Billing Library.
Google Play Billing Library 7.0.0 (14.05.2024)
Version 7.0.0 der Google Play Billing Library und der Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
Es wurden APIs zur Unterstützung von Ratenabos hinzugefügt.
ProductDetails.InstallmentPlanDetails
hinzugefügt für Basis-Abos mit Ratenzahlung, die Nutzer kaufen können. Diese API hilft Ihrer App, die Ratenzahlung und die Einrichtung der Zusicherung zu ermitteln um dem Nutzer relevante Informationen zur Verfügung zu stellen. Weitere Informationen finden Sie in unserer Leitfaden zur Ratenzahlung von Abos.
PendingPurchasesParams
hinzugefügt undBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
umBillingClient.Builder.enablePendingPurchases()
zu ersetzen, die in diesem Release eingestellt wurde.- Funktional gesehen entspricht die verworfene
enablePendingPurchases()
derenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
.
- Funktional gesehen entspricht die verworfene
Es wurden APIs zur Unterstützung ausstehender Transaktionen für Abo-Prepaid-Tarife hinzugefügt:
PendingPurchasesParams.Builder.enablePrepaidPlans()
verwenden undBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
um ausstehende Transaktionen für Prepaid-Tarife von Abos zu aktivieren. Beim Hinzufügen Support erhalten, achten Sie darauf, dass Ihre App auch das Abo korrekt verwaltet Lebenszyklen. Weitere Informationen finden Sie in der Leitfaden für ausstehende Käufe.Purchase.PendingPurchaseUpdate
hinzugefügt undPurchase.getPendingPurchaseUpdate()
zum Abrufen des ausstehenden Auflade- oder Upgrade- oder Downgrades auf eine vorhandene Abo.
BillingClient.Builder.enableAlternativeBilling()
entfernt,AlternativeBillingListener
, undAlternativeChoiceDetails
.- Entwickler sollten
BillingClient.Builder.enableUserChoiceBilling()
mitUserChoiceBillingListener
undUserChoiceDetails
im Listener-Callback.
- Entwickler sollten
BillingFlowParams.ProrationMode
entfernt,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
, undBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
.- Entwickler sollten
BillingFlowParams.SubscriptionUpdateParams.ReplacementMode
mitBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)
. BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
.BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
.
- Entwickler sollten
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()
wurde entfernt.- Entwickler sollten
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)
verwenden .
- Entwickler sollten
BillingClient.queryPurchaseHistoryAsync()
wurde eingestellt und wird in einer zukünftigen Version entfernt. Entwickler sollten verwenden Sie stattdessen die folgenden Alternativen:- Bestätigte und ausstehende Käufe: Verwenden
BillingClient.queryPurchasesAsync()
um die aktiven Käufe abzurufen. - Verbrauchte Käufe: Entwickler sollten verbrauchte Käufe auf eigenen Servern.
- Stornierte Käufe: Verwenden Sie das voided-purchases Developer API erstellen.
- Weitere Informationen finden Sie unter Abfragen zu bisherigen Käufen
- Bestätigte und ausstehende Käufe: Verwenden
BillingFlowParams.ProductDetailsParams.setOfferToken()
löst jetzt eine Ausnahme aus, wenn Entwickler eine leereofferToken
angeben.minSdkVersion
auf 21 undtargetSdkVersion
auf 34 aktualisiert.
Google Play Billing Library 6.2.1 (16.04.2024)
Version 6.2.1 der Google Play Billing Library und der Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
- Es wurde ein Fehler in
BillingClient.showAlternativeBillingOnlyInformationDialog()
behoben, bei demAlternativeBillingOnlyInformationDialogListener
nach Abschluss des Dialogfelds in bestimmten Fällen nicht aufgerufen wurde.
Google Play Billing Library 6.2.0 (06.03.2024)
Version 6.2.0 der Google Play Billing Library und der Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
- Es wurden APIs zur Unterstützung externer Angebote hinzugefügt.
<ph type="x-smartling-placeholder">
- </ph>
BillingClient.Builder.enableExternalOffer()
hinzugefügt um externe Angebote unterbreiten zu können.BillingClient.isExternalOfferAvailableAsync()
hinzugefügt um zu prüfen, ob Funktionen für externe Angebote verfügbar sind.BillingClient.showExternalOfferInformationDialog()
hinzugefügt , um Nutzern ein Informationsdialogfeld anzuzeigen, bevor sie an einen Ort außerhalb der App weitergeleitet werden.BillingClient.createExternalOfferReportingDetailsAsync()
wurde hinzugefügt, um eine Nutzlast zu erstellen, die zum Melden von Transaktionen über externe Angebote erforderlich ist.
Google Play Billing Library 6.1.0 (14.11.2023)
Version 6.1.0 der Google Play Billing Library und der Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
- Es wurden APIs hinzugefügt, um nur eine alternative Abrechnung (d. h. ohne Auswahlmöglichkeit für Nutzer) zu unterstützen.
<ph type="x-smartling-placeholder">
- </ph>
BillingClient.Builder.enableAlternativeBillingOnly()
hinzugefügt damit nur eine alternative Abrechnung angeboten werden kann.BillingClient.isAlternativeBillingOnlyAvailableAsync()
hinzugefügt um zu prüfen, ob nur eine alternative Abrechnung angeboten wird.BillingClient.showAlternativeBillingOnlyInformationDialog()
hinzugefügt , um Nutzer darüber zu informieren, dass nur die alternative Abrechnung verwendet werden.BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()
wurde hinzugefügt, um eine erforderliche Nutzlast zu erstellen um ausschließlich Transaktionen über die alternative Abrechnung zu melden.
- Die APIs zur Abrechnung mit Auswahlmöglichkeit für Nutzer wurden aktualisiert
<ph type="x-smartling-placeholder">
- </ph>
UserChoiceBillingListener
hinzugefügt um AlternativeBillingListener zu ersetzen. das als veraltet markiert wurde.UserChoiceDetails
hinzugefügt als Ersatz fürAlternativeChoiceDetails
das als veraltet markiert wurde.BillingClient.Builder.enableUserChoiceBilling()
hinzugefügt als Ersatz fürBillingClient.Builder.enableAlternativeBilling()
das als veraltet markiert wurde.
BillingClient.getBillingConfigAsync()
wurde zum Abrufen der Google Play-Landesversion hinzugefügt.
Google Play Billing Library 6.0.1 (22.06.2023)
Version 6.0.1 der Google Play Billing Library- und Kotlin-Erweiterungen ist jetzt verfügbar.
Zusammenfassung der Änderungen
Aktualisiere die Play Billing Library so, dass 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 der Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
Neu hinzugefügt
ReplacementMode
Zu ersetzende AufzählungProrationMode
ProrationMode
ist aus Gründen der Abwärtskompatibilität weiterhin verfügbar. Gründe.Bestell-ID entfernt für
PENDING
Käufe.Bisher wurde die Bestell-ID immer erstellt, auch wenn der Kauf ausstehend. Ab Version 6.0.0 wird keine Auftrags-ID für ausstehende Käufe. Bei diesen Käufen wird die Bestell-ID nachdem der Kauf in den
PURCHASED
Bundesstaat.Methoden
queryPurchases
undlaunchPriceConfirmationFlow
entfernt.Die Methoden
queryPurchases
undlaunchPriceConfirmationFlow
mit die zuvor als veraltet markiert waren, wurden in Play Billing entfernt. Bibliothek 6.0.0. Entwickler solltenqueryPurchasesAsync
stattqueryPurchases
. FürlaunchPriceConfirmationFlow
Alternativen Siehe Preisänderungen.Neuer Antwortcode für Netzwerkfehler hinzugefügt.
Einen neuen Antwortcode für Netzwerkfehler,
NETWORK_ERROR
, wurde ab PBL-Version 6.0.0 hinzugefügt. Dieser Code wird zurückgegeben, wenn ein aufgrund eines Problems mit der Netzwerkverbindung. Diese Netzwerkverbindungen Fehler wurden zuvor alsSERVICE_UNAVAILABLE
gemeldet.Aktualisiert
SERVICE_UNAVAILABLE
undSERVICE_TIMEOUT
Ab PBL-Version 6.0.0 werden Fehler aufgrund von Zeitüberschreitungen bei der Verarbeitung als
SERVICE_UNAVAILABLE
anstelle des aktuellenSERVICE_TIMEOUT
zurückgegeben.Das Verhalten ändert sich in früheren PBL-Versionen nicht.
Entfernt
SERVICE_TIMEOUT
Ab PBL-Version 6.0.0 wird
SERVICE_TIMEOUT
nicht mehr zurückgegeben. In früheren PBL-Versionen wird dieser Code weiterhin zurückgegeben.Zusätzliches Logging hinzugefügt.
Der Release von Play Billing Library 6 umfasst eine zusätzliche Protokollierung, die Einblick in API-Nutzung (z. B. Erfolg oder Fehler) und Dienstverbindung Probleme. Diese Informationen werden verwendet, um die Leistung von Google Play zu verbessern Billing Library und bieten eine bessere Unterstützung bei Fehlern.
Google Play Billing Library 5.2.1 (22.06.2023)
Version 5.2.1 der Google Play Billing Library und der Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
Aktualisiere die Play Billing Library so, dass sie mit Android 14 kompatibel ist.
Google Play Billing Library 5.2 (06.04.2023)
Version 5.2.0 der Google Play Billing Library und der Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
- Es wurden Klassen zur Unterstützung alternativer Abrechnungsabläufe auf Mobilgeräten/Tablets hinzugefügt für Nutzer in Südkorea: <ph type="x-smartling-placeholder">
- Hinzugefügt
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()
zum Angeben der externen Transaktions-ID des ursprünglichen Abos. BillingClient.Builder.enableAlternativeBilling()
hinzugefügt Methode, mit der 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 der Kotlin-Erweiterungen sind jetzt verfügbar.
Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
- Die Methode
ProductDetails.SubscriptionOfferDetails.getOfferId()
zum Abrufen der Angebots-ID wurde hinzugefügt. - Die Methode
ProductDetails.SubscriptionOfferDetails.getBasePlanId()
zum Abrufen der Basis-Abo-ID wurde hinzugefügt. targetSdkVersion
wurde auf 31 aktualisiert.
Google Play Billing Library 5.0-Release (11.05.2022)
Version 5.0.0 der Google Play Billing Library und der 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, die können Sie mehrere Angebote für ein Aboprodukt. Weitere Informationen finden Sie in der Migrationsanleitung.
- Hinzugefügt
BillingClient.queryProductDetailsAsync()
umBillingClient.querySkuDetailsAsync()
zu ersetzen. - Methode
setIsOfferPersonalized()
für personalisierte EU-Preise hinzugefügt Offenlegungspflichten. Weitere Informationen zur Verwendung dieser Methode finden Sie unter Geben Sie einen personalisierten Preis an. queryPurchases()
entfernt, das zuvor eingestellt und ersetzt wurde durch queryPurchasesAsync in Google Play Billing Library 4.0.0 eingeführt.launchPriceChangeFlow
wurde verworfen und wird in Zukunft entfernt Veröffentlichung. Weitere Informationen zu Alternativen finden Sie unter Starte einen Vorgang zur Bestätigung der Preisänderung.- Entfernt
setVrPurchaseFlow()
, der zuvor beim Instanziieren eines Kaufvorgangs verwendet wurde. In früheren Versionen wurde der Nutzer mit dieser Methode an folgende URL weitergeleitet: um den Kauf auf ihrem Android-Gerät abzuschließen. Nach dem Entfernen schließen Nutzer den Kauf über die Standard-Kaufvorgang.
Google Play Billing Library 4.1 (23.02.2022)
Version 4.1.0 der Google Play Billing Library und der Kotlin-Erweiterungen sind jetzt verfügbar.
Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
BillingClient.showInAppMessages()
hinzugefügt . Weitere Informationen dazu, wie Informationen zur Verwendung von In-App-Nachrichten zum Umgang mit abgelehnten Zahlungen für Abos findest du unter Umgang mit abgelehnten Zahlungen.
Google Play Billing Library 4.0 (18.05.2021)
Version 4.0.0 der Google Play Billing Library und der Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
BillingClient.queryPurchasesAsync()
wurde hinzugefügt, umBillingClient.queryPurchases()
zu ersetzen. Dieses wird in einer zukünftigen Version entfernt.Neuer Aboersetzungsmodus
IMMEDIATE_AND_CHARGE_FULL_PRICE
wurde hinzugefügt.Die Methode
BillingClient.getConnectionState()
zum Abrufen des Verbindungsstatus der Play Billing Library wurde hinzugefügt.Javadoc und -Implementierung wurden aktualisiert, um anzugeben, in welchem Thread eine Methode aufgerufen werden kann und welche Thread-Ergebnisse gepostet werden.
BillingFlowParams.Builder.setSubscriptionUpdateParams()
wurde als neue Möglichkeit zum Starten von Abo-Updates hinzugefügt. Dies ersetztBillingFlowParams#getReplaceSkusProrationMode
,BillingFlowParams#getOldSkuPurchaseToken
,BillingFlowParams#getOldSku
,BillingFlowParams.Builder#setReplaceSkusProrationMode
,BillingFlowParams.Builder#setOldSku
, die entfernt wurden.Purchase.getQuantity()
undPurchaseHistoryRecord.getQuantity()
wurden hinzugefügt.Purchase#getSkus()
undPurchaseHistoryRecord#getSkus()
wurden hinzugefügt. Diese ersetzenPurchase#getSku
undPurchaseHistoryRecord#getSku
, die entfernt wurden.BillingFlowParams#getSku
,BillingFlowParams#getSkuDetails
undBillingFlowParams#getSkuType
wurden entfernt.
Google Play Billing Library 3.0.3 (12.03.2021)
Version 3.0.3 der Google Play Billing Library, der Kotlin-Erweiterung und der Unity-App sind jetzt verfügbar.
Fehlerkorrekturen für Java und Kotlin
- Speicherleck beheben, wenn
endConnection()
aufgerufen wird. - Problem behoben, bei dem die Google Play Billing Library von Apps verwendet wird, die
Startmodus für eine einzelne Aufgabe. A
onPurchasesUpdated()
Callback wird ausgelöst, wenn eine App aus dem Android Launcher fortgesetzt wird und das Dialogfeld für die Abrechnung war vor der Sperrung sichtbar.
Fehlerkorrekturen bei Unity
- Aktualisieren Sie auf Java Version 3.0.3, um ein Speicherleck zu beheben und das Problem zu beheben, das Käufe, wenn eine App über den Android Launcher und die Abrechnung fortgesetzt wird Dialogfeld war vor der Sperrung sichtbar.
Google Play Billing Library 3.0.2 (24.11.2020)
Version 3.0.2 der Google Play Billing Library und der Kotlin-Erweiterung sind jetzt verfügbar.
Fehlerkorrekturen
- Es wurde ein Fehler in der Kotlin-Erweiterung behoben, bei dem die Koroutine mit dem Fehler „Bereits fortgesetzt“ fehlschlug.
- Nicht aufgelöste Verweise bei Verwendung der Kotlin-Erweiterung mit der kotlinx.coroutines-Bibliothek ab Version 1.4 wurden behoben.
Google Play Billing Library 3.0.1 (30.09.2020)
Version 3.0.1 der Google Play Billing Library und der Kotlin-Erweiterung sind jetzt verfügbar.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem die App während des Abrechnungsvorgangs beendet und wiederhergestellt wurde.
PurchasesUpdatedListener
kann nicht mit dem Kaufergebnis aufgerufen werden.
Google Play Billing Library 3.0-Release (08.06.2020)
Version 3.0.0 der Google Play Billing Library, Kotlin-Erweiterung und Unity-Plug-in sind jetzt verfügbar.
Zusammenfassung der Änderungen
- Die Unterstützung für SKU mit Prämie wurde entfernt.
- Die Parameter
ChildDirected
undUnderAgeOfConsent
wurden entfernt. - Die eingestellten Entwicklernutzlastmethoden wurden entfernt.
- Eingestellte Methoden
BillingFlowParams.setAccountId()
entfernt undBillingFlowParams.setDeveloperId()
. - Eingestellte Methoden
BillingFlowParams.setOldSkus(String oldSku)
entfernt undBillingFlowParams.addOldSku(String oldSku)
. - Anmerkungen zur Null-Zulässigkeit hinzugefügt.
Fehlerkorrekturen
SkuDetails.getIntroductoryPriceCycles()
gibt jetztint
stattString
zurück.- Ein Fehler wurde behoben, durch den der Abrechnungsablauf als zusätzliche Parameter behandelt wurde. auch wenn keine zusätzlichen Parameter festgelegt wurden.
Google Play Billing Library 2.2.1 (20.05.2020)
Version 2.2.1 der Google Play Billing Library ist jetzt verfügbar.
Fehlerkorrekturen
- Die Standardversion der Java Play Billing Library wurde aktualisiert, die vom Die Kotlin-Erweiterung hängt davon ab.
Google Play Billing Library 2.2.0 und Unity-Unterstützung (23.03.2020)
Version 2.2.0 von Google Play Billing bietet Funktionen, stellen Entwickler sicher, dass Käufe den richtigen Nutzern zugeordnet werden. Diese Änderungen die Entwicklung benutzerdefinierter Lösungen auf Basis der Entwicklernutzlast zu ersparen. Als wurde im Rahmen dieses Updates die Entwicklernutzlastfunktion eingestellt, und wird in einer zukünftigen Version entfernt. Weitere Informationen unter empfohlene Alternativen finden Sie unter Entwicklernutzlast.
Google Play Billing Billing Library 2 für Unity
Zusätzlich zu den aktuellen Java- und Kotlin-Versionen von Google Play Billing Library 2 haben wir eine Version der Bibliothek zur Verwendung mit Unity veröffentlicht. Spiel Entwickler, die die Unity In-App Purchase API verwenden, alle Funktionen von Google Play Billing Library 2 nutzen, nachfolgende Upgrades auf zukünftige Versionen der Google Play Billing Library einfacher zu machen.
Weitere Informationen finden Sie unter Google Play Billing mit Unity verwenden
Zusammenfassung der Änderungen
- Java Google Play Billing Library
<ph type="x-smartling-placeholder">
- </ph>
- In
AcknowledgePurchaseParams
, eingestelltsetDeveloperPayload()
undgetDeveloperPayload()
. - In
ConsumeParams
, eingestelltsetDeveloperPayload()
undgetDeveloperPayload()
. - In
BillingFlowParams
, umbenanntsetAccountId()
bissetObfuscatedAccountId()
, und dokumentierte Längenbeschränkung von 64 Zeichen in diesem Feld keine personenidentifizierbaren Informationen.setAccountId()
wurde als veraltet markiert und wird in einem zukünftige Bibliotheksversion. - Im
BillingFlowParams
hinzugefügtsetObfuscatedProfileId()
Das funktioniert ähnlich wiesetObfuscatedAccountId()
Weitere Informationen finden Sie unter Updates und Alternativen für Entwicklernutzlasten - Fügen Sie in
Purchase
dengetAccountIdentifiers()
um die verschleierten Konto-IDs zurückzugeben, die in denBillingFlowParams
- In
BillingClient
wird derloadRewardedSku()
wurde im Rahmen der Einstellung von SKUs mit Prämie als veraltet markiert. Weitere Informationen zur Einstellung finden Sie in der Play Console-Hilfe
- In
Google Play Billing Library 2.1.0 und Kotlin-Erweiterung 2.1.0 (10.12.2019)
Version 2.1.0 der Google Play Billing Library und der neuen Kotlin-Erweiterung sind jetzt verfügbar. Die Kotlin-Erweiterung der Play Billing Library bietet idiomatische API-Alternativen für die Nutzung von Kotlin mit besserer Nullsicherheit und Koroutinen. Codebeispiele finden Sie unter Google Play Billing Library verwenden
Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
- In
BillingFlowParams
:setOldSku(String oldSku)
wurde eingestellt und ersetzt durchsetOldSku(String oldSku, String purchaseToken)
, um zu unterscheiden, wann mehrere Konten auf dem Gerät dieselbe Artikelnummer haben.
Google Play Billing Library 2.0.3 (05.08.2019)
Version 2.0.3 der Google Play Billing Library ist jetzt verfügbar.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem bei
querySkuDetailsAsync()
gelegentlich Code zurückgegeben wurde.DEVELOPER_ERROR
anstatt ein erfolgreiches Ergebnis zurückzugeben.
Google Play Billing Library 2.0.2 (08.07.2019)
Version 2.0.2 der Google Play Billing Library ist jetzt verfügbar. Dieser Release enthält Aktualisierungen der Referenzdokumentation und ändert die Bibliothek nicht Funktionalität.
Google Play Billing Library 2.0.1 (06.06.2019)
Version 2.0.1 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Debug-Meldungen in einigen Fällen als
null
zurückgegeben wurden. - Ein mögliches Problem mit einem Speicherleck wurde behoben.
Google Play Billing Library 2.0-Version (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 deiner App (In-App) oder
außerhalb deiner App (out-of-app). Damit Google Play
ein einheitliches Einkaufserlebnis zu bieten, unabhängig davon, wo der Nutzer Ihre Produkte kauft
müssen Sie alle über Google Play erhaltenen Käufe bestätigen
Billing Library so schnell wie möglich nach Erteilung der Berechtigung an den Nutzer. Wenn
Sie einen Kauf nicht innerhalb von drei Tagen bestätigen,
eine Erstattung erhält und Google Play den Kauf widerruft. Für
ausstehende Transaktionen (neu in Version 2.0), das dreitägige Zeitfenster
beginnt, wenn der Kauf in den Status PURCHASED
verschoben wurde und nicht anwendbar ist
solange der Kauf den Status PENDING
hat.
Bei Abos musst du jeden Kauf bestätigen, der zu einem neuen Kauf führt Token. Das bedeutet, dass alle ersten Käufe, Tarifänderungen und Neuregistrierungen müssen bestätigt werden. Nachfolgende Verlängerungen müssen jedoch nicht bestätigt werden. Bis ob ein Kauf bestätigt werden muss, beim Kauf ein.
Das Purchase
-Objekt enthält jetzt ein
isAcknowledged()
, die anzeigt, ob ein Kauf bestätigt wurde. Darüber hinaus enthält der
Die Google Play Developer API enthält boolesche Bestätigungswerte für beide
Purchases.products
und Purchases.subscriptions
.
Bevor Sie einen Kauf bestätigen, nutzen Sie diese Methoden, um festzustellen,
wurde der Kauf bereits bestätigt.
Sie können einen Kauf mit einer der folgenden Methoden bestätigen:
- Verwende für Verbrauchsgüter die
consumeAsync()
aus der Client API. - Für nicht konsumierte Produkte verwenden Sie die
acknowledgePurchase()
aus der Client-API. - In der Server API ist auch eine neue
acknowledge()
-Methode verfügbar.
BillingFlowParams.setSku() wurde entfernt.
Die zuvor eingestellte Methode BillingFlowParams#setSku()
wurde entfernt
in dieser Version. Bevor Sie Produkte in einem Kaufvorgang rendern, müssen Sie nun
BillingClient.querySkuDetailsAsync()
,
übergeben Sie das Ergebnis
SkuDetails
-Objekt für
BillingFlowParams.Builder.setSkuDetails()
Codebeispiele finden Sie unter Google Play Billing Library verwenden
Entwicklernutzlast wird unterstützt
Version 2.0 der Google Play Billing Library bietet Unterstützung für Entwickler Nutzlast – beliebige Strings, die an Käufe angehängt werden können. Sie können Einen Entwicklernutzlastparameter an einen Kauf anhängen, aber nur, wenn der Kauf anerkannt oder konsumiert werden. Dies unterscheidet sich von der Entwicklernutzlast in AIDL, bei der der payload kann beim Starten des Kaufvorgangs angegeben werden. Weil Käufe jetzt von außerhalb deiner App initiiert werden kann, wird diese Änderung sorgt dafür, dass Sie Ihren Käufen immer eine Nutzlast hinzufügen können.
Für den Zugriff auf die Nutzlast in der neuen Bibliothek enthalten Purchase
-Objekte jetzt einen
getDeveloperPayload()
.
Einheitliche Angebote
Wenn du eine vergünstigte Artikelnummer anbietest, gibt Google Play jetzt den ursprünglichen Preis von damit Sie Nutzern zeigen können, dass sie einen Rabatt erhalten.
SkuDetails
enthält zwei
neue Methoden zum Abrufen des ursprünglichen SKU-Preises:
getOriginalPriceAmountMicros()
gibt den unformatierten Originalpreis der Artikelnummer ohne Rabatt zurück.getOriginalPrice()
gibt den ursprünglichen Preis mit zusätzlicher Währungsformatierung zurück.
Ausstehende Transaktionen
Ab Version 2.0 der Google Play Billing Library müssen Sie Folgendes unterstützen: Käufe, bei denen vor der Erteilung der Berechtigung zusätzliche Maßnahmen erforderlich sind. Für Beispiel: Ein Nutzer kauft Ihr In-App-Produkt in einem Geschäft. mit Bargeld. Das bedeutet, dass die Transaktion außerhalb Ihrer App abgeschlossen wird. In In diesem Szenario solltest du die Berechtigung erst gewähren, wenn der Nutzer der Transaktion.
Um ausstehende Käufe zu aktivieren, rufen Sie
enablePendingPurchases()
während der Initialisierung der App.
Purchase.getPurchaseState()
verwenden
um zu ermitteln, ob der Kaufstatus PURCHASED
oder PENDING
ist. Beachten Sie, dass
Sie sollten die Berechtigung nur gewähren, wenn der Status PURCHASED
ist. Sie sollten
So suchen Sie nach Statusupdates für Purchase
:
- Rufen Sie beim Starten der App
BillingClient.queryPurchases()
, um die Liste der nicht verbrauchten Produkte abzurufen, die mit dem Nutzer verknüpft sind. - Rufen Sie
Purchase.getPurchaseState()
für jedes zurückgegebenePurchase
-Objekt auf. onPurchasesUpdated()
implementieren , um auf Änderungen anPurchase
-Objekten zu reagieren.
Darüber hinaus enthält die Google Play Developer API den Status PENDING
.
für Purchases.products
.
Ausstehende Transaktionen werden nicht unterstützt für
Abos.
Mit dieser Version wird außerdem ein neuer Benachrichtigungstyp für Entwickler in Echtzeit eingeführt.
OneTimeProductNotification
Dieser Benachrichtigungstyp enthält eine einzelne Nachricht
dessen Wert entweder ONE_TIME_PRODUCT_PURCHASED
oder
ONE_TIME_PRODUCT_CANCELED
. Diese Art von Benachrichtigung wird nur bei Käufen gesendet
in Verbindung mit verspäteten Zahlungsmitteln wie Bargeld.
Bestätigen Sie ausstehende Käufe nur, wenn das
Kaufstatus ist PURCHASED
und nicht PENDING
.
API-Änderungen
Version 2.0 der Google Play Billing Library enthält verschiedene API-Änderungen an neue Funktionen zu unterstützen und bestehende Funktionen klarzustellen.
VerbrauchAsync
consumeAsync()
nimmt jetzt eine
ConsumeParams
-Objekt
statt purchaseToken
. ConsumeParams
enthält die purchaseToken
als
sowie eine optionale Entwicklernutzlast.
Die vorherige Version von consumeAsync()
wurde in diesem Release entfernt.
queryKaufverlaufAsync
Um Verwirrung zu vermeiden,
queryPurchaseHistoryAsync()
gibt jetzt eine
PurchaseHistoryRecord
anstelle eines Purchase
-Objekts. Das PurchaseHistoryRecord
-Objekt ist der
Wie ein Purchase
-Objekt, mit dem Unterschied, dass es nur die von
queryPurchaseHistoryAsync()
und enthält nicht autoRenewing
,
orderId
und packageName
. Bei der Einstellung
zurückgegebene Daten: queryPurchaseHistoryAsync()
gibt dieselben Daten zurück wie
vorher.
BillingResult-Rückgabewerte
APIs, die zuvor einen BillingResponse
-Ganzzahlwert zurückgegeben haben, geben jetzt einen
BillingResult
-Objekt enthält. BillingResult
enthält die Ganzzahl BillingResponse
sowie einen
Debug-String, mit dem Sie Fehler diagnostizieren können. Im Debug-String wird „en-US“ verwendet.
Sprache und ist nicht für den Endnutzer gedacht.
Fehlerkorrekturen
SkuDetails.getIntroductoryPriceAmountMicros()
gibt jetzt einelong
anstelle einerString
zurück.
Google Play Billing Library 1.2.2 (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 in v1.2.1 wurde behoben. Anrufe im Hintergrund werden nicht mehr blockiert im Hauptthread.
Sonstige Änderungen
- Obwohl die Verwendung des Hauptthreads weiterhin empfohlen wird, können Sie jetzt instanziieren die Google Play Billing Library aus einem Hintergrundthread zu öffnen.
- Die Instanziierung wurde vollständig in den Hintergrundthread migriert, um zu ANR-Fehlern führen.
Play Billing Library 1.2.1 (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
- Produkte mit Prämie werden jetzt unterstützt. Weitere Informationen zu Monetarisierungsoptionen findest du unter Fügen Sie Funktionen für Anzeigen mit Prämie hinzu.
Sonstige Änderungen
- Öffentliche Konstruktoren für
PurchasesResult
undSkuDetailsResult
wurden hinzugefügt, um einfacher zu testen. SkuDetails
-Objekte können die neue MethodegetOriginalJson()
verwenden.- 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 (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 im Rahmen der Lizenzvereinbarung für Android Software Development Kit
- Die
launchPriceChangeConfirmationFlow
API wurde hinzugefügt, die Nutzer dazu auffordert, eine ausstehende Änderung eines Abopreises prüfen. - Unterstützung für den neuen Zuteilungsmodus
DEFERRED
bei Upgrades oder das Abo eines Nutzers herabzustufen. - In der Klasse
BillingFlowParams
wurdesetSku()
durchsetSkuDetails()
ersetzt. - Kleinere Fehlerkorrekturen und Codeoptimierungen.
Bestätigung der Preisänderung
Du kannst jetzt den Preis eines Abos in der Google Play Console und Aufforderung ändern können Nutzer den neuen Preis prüfen und akzeptieren, wenn sie deine App öffnen.
Erstellen Sie zur Verwendung dieser API ein PriceChangeFlowParams
-Objekt mithilfe der Methode
skuDetails
des Aboprodukts. Rufen Sie dann
launchPriceChangeConfirmationFlow()
Implementieren Sie die
PriceChangeConfirmationListener
, um das Ergebnis zu verarbeiten, wenn sich der Preis ändert
der Bestätigungsvorgang 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. } });
Bei der Bestätigung der Preisänderung wird ein Dialogfeld mit den neuen Preisen angezeigt.
und Nutzer aufgefordert, dem neuen Preis zuzustimmen. Dieser Ablauf gibt eine
Antwortcode vom Typ
BillingClient.BillingResponse
Neuer Zuteilungsmodus
Beim Upgrade oder Downgrade des Abos eines Nutzers können Sie einen neuen Anteil verwenden.
Modus, DEFERRED
. In diesem Modus wird das Abo des Nutzers beim nächsten Mal aktualisiert.
automatisch verlängert wird. Weitere Informationen zum Festlegen dieses Zuteilungsmodus finden Sie unter Anteil festlegen.
Modus an.
Neue Methode zum Festlegen von SKU-Details
In der Klasse BillingFlowParams
wurde die Methode setSku()
eingestellt.
Diese Änderung dient der Optimierung des Google Play Billing-Ablaufs.
Beim Erstellen einer neuen Instanz von BillingFlowParams
in der In-App-Abrechnung
verwenden, empfehlen wir, stattdessen direkt mit dem JSON-Objekt zu arbeiten.
setSkuDetails()
, 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 gezeigt.
Code-Snippet einzufügen. Das an das setSkuDetails()
-Objekt übergebene Objekt stammt aus dem
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 (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
- Unterstützung zum Angeben eines Zuteilungsmodus in
BillingFlowParams
wurde hinzugefügt wenn Sie für ein bestehendes Abo ein Upgrade/Downgrade ausführen. - Das boolesche Flag
replaceSkusProration
inBillingFlowParams
wird nicht mehr unterstützt. Verwende stattdessenreplaceSkusProrationMode
. launchBillingFlow()
löst jetzt einen Callback für fehlgeschlagene Antworten aus.
Verhaltensänderungen
Version 1.1 der Google Play Billing Library enthält das folgende Verhalten Änderungen.
Entwickler können replaceSkusProrationMode
in der Klasse BillingFlowParams
festlegen
Ein ProrationMode
enthält weitere Details zur Art der Zuteilung beim Upgrade oder Downgrade eines
das Abo des 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();
Derzeit unterstützt Google Play die folgenden Zuteilungsmodi:
IMMEDIATE_WITH_TIME_PRORATION |
Der Ersatz wird sofort wirksam und die neue Ablaufzeit wird anteilig berechnet und dem Nutzer gutgeschrieben oder in Rechnung gestellt wird. Dies ist das aktuelle Standardverhalten. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE |
Der Austausch wird sofort wirksam und der Abrechnungszeitraum bleibt unverändert. Der Preis für
wird der verbleibende Zeitraum berechnet.
Hinweis: Diese Option ist nur für Abo-Upgrades verfügbar. |
IMMEDIATE_WITHOUT_PRORATION |
Der Ersatz wird sofort wirksam und der neue Preis wird bei der nächsten Wiederholung in Rechnung gestellt . Der Abrechnungszeitraum bleibt unverändert. |
replaceSkusProration
wird im Kurs BillingFlowParams
nicht mehr unterstützt
Früher konnten Entwickler ein boolesches Flag setzen, um einen anteiligen Betrag für ein Abo in Rechnung zu stellen.
Upgradeanfrage gestellt werden. In Anbetracht der Tatsache, dass wir ProrationMode
unterstützen,
Zuteilungsanweisung 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 die PurhcasesUpdatedListener
aus
Callback und gibt BillingResponse
zurück.
asynchron programmiert. Der synchrone Rückgabewert von BillingResponse
beibehalten.
Fehlerkorrekturen
- Wird in asynchronen Methoden ordnungsgemäß früh beendet, wenn der Dienst getrennt wird.
Builder
param-Objekte ändern erstellte Objekte nicht mehr.- Problem 68087141:
launchBillingFlow()
lösen 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
- Abrechnungsberechtigung ist im Manifest der Bibliothek eingebettet. Es ist nicht notwendig, den Parameter
com.android.vending.BILLING
-Berechtigung im Android-Manifest nicht mehr verfügbar. - Neuer Builder zu
BillingClient.Builder
hinzugefügt . - Einführung des Builder-Musters für
SkuDetailsParams
Klasse, die für Methoden zum Abfragen von Artikelnummern verwendet wird. - Mehrere API-Methoden wurden aus Konsistenzgründen aktualisiert (dieselben Namen und Reihenfolge der Rückgabeargumente).
Verhaltensänderungen
Version 1.0 der Google Play Billing Library enthält das folgende Verhalten Änderungen.
Klasse "BillingClient.Builder"
BillingClient.Builder
wird jetzt über das Muster newBuilder initialisiert:
Kotlin
billingClient = BillingClient.newBuilder(context).setListener(this).build()
Java
billingClient = BillingClient.newBuilder(context).setListener(this).build();
launchBillingFlow-Methode wird jetzt mithilfe einer BillingFlowParams-Klasse aufgerufen.
Um den Abrechnungsablauf für einen Kauf oder ein Abo zu initiieren,
launchBillingFlow()
erhält 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 Abfragemöglichkeit für verfügbare Produkte
Argumente für queryPurchaseHistoryAsync()
und querySkuDetailsAsync()
Methoden wurden in ein Builder-Muster eingebunden:
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 nun über Ergebniscode und eine Liste mit
SkuDetails
-Objekten anstelle der vorherigen Wrapper-Klasse zu verwenden, um die Einheitlichkeit und Einheitlichkeit in unserem API zu gewährleisten:
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 ConsumeResponseListener
für die API einheitlich:
Kotlin
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
Java
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
Nicht verpacktes „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 Bundle PURCHASES_UPDATED
- Probleme mit ProxyBillingActivity und PurchasesUpdatedListener während der Geräterotation beheben
Entwicklervorschau 1 (12.06.2017, Ankündigung)
Entwicklervorschau zur Vereinfachung des Entwicklungsprozesses bei der Abrechnung Dies ermöglicht es Entwicklern, sich auf die Implementierung einer Logik für die Android-App zu konzentrieren, z. B. Anwendungsarchitektur und Navigationsstruktur.
Die Bibliothek enthält mehrere praktische Klassen und Funktionen für die Integration Ihres Android-Apps mit der Google Play Billing API Die Bibliothek bietet auch eine Abstraktionsebene den Dienst Android Interface Definition Language (AIDL), mit dem Entwickler Schnittstelle zwischen der App und der Google Play Billing API.