In dieser Anleitung wird beschrieben, wie Sie die APIs einbinden, um die alternative Abrechnung (d.h. ohne Nutzerauswahl) in berechtigten Apps anzubieten. Weitere Informationen zu diesen Programmen einschließlich der Teilnahmevoraussetzungen und des geografischen Geltungsbereichs, finden Sie unter Alternative Abrechnung.
Play Billing Library einrichten
Fügen Sie Ihrer Android-App die Play Billing Library-Abhängigkeit hinzu. Wenn Sie die APIs zur alternativen Abrechnung verwenden möchten, benötigen Sie Version 6.1 oder höher.
Verbindung zu Google Play herstellen
Die ersten Schritte im Integrationsprozess sind dieselben wie in der Anleitung zur Google Play Billing-Integration beschrieben. Es gibt jedoch einige Änderungen bei der Initialisierung von BillingClient:
- Sie müssen eine neue Methode aufrufen, um anzugeben, dass Ihre App nur ein
alternatives Abrechnungssystem verwendet:
enableAlternativeBillingOnly.
Im folgenden Beispiel wird die Initialisierung eines BillingClient mit diesen Änderungen veranschaulicht:
Kotlin
var billingClient = BillingClient.newBuilder(context)
.enableAlternativeBillingOnly()
.build()
Java
private BillingClient billingClient = BillingClient.newBuilder(context)
.enableAlternativeBillingOnly()
.build();
Nachdem Sie den BillingClient initialisiert haben, müssen Sie eine Verbindung zu
Google Play herstellen, wie in der Integrationsanleitung beschrieben.
Verfügbarkeit prüfen
Ihre App sollte bestätigen, dass nur die alternative Abrechnung verfügbar ist, indem sie
isAlternativeBillingOnlyAvailableAsync aufruft.
Diese API gibt BillingResponseCode.OK zurück, wenn nur die alternative Abrechnung verfügbar ist. Weitere Informationen dazu, wie Ihre App auf andere Antwortcodes reagieren sollte, finden Sie unter Antwortverarbeitung.
Kotlin
billingClient.isAlternativeBillingOnlyAvailableAsync(object:
AlternativeBillingOnlyAvailabilityListener {
override fun onAlternativeBillingOnlyAvailabilityResponse(
billingResult: BillingResult) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling alternative billing only being unavailable, etc.
return
}
// Alternative billing only is available. Continue with steps in
// the guide.
}
});
Java
billingClient.isAlternativeBillingOnlyAvailable(
new AlternativeBillingOnlyAvailabilityListener() {
@Override
public void onAlternativeBillingOnlyAvailabilityResponse(
BillingResult billingResult) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling alternative billing only being unavailable,
// etc.
return;
}
// Alternative billing only is available. Continue with steps in
// the guide.
}
});
Informationsdialog für Nutzer
Wenn Sie nur die alternative Abrechnung einbinden möchten, muss in Ihrer berechtigten App ein Informationsbildschirm angezeigt werden, auf dem Nutzer darüber informiert werden, dass die Abrechnung nicht von Google Play verwaltet wird. Der Informationsbildschirm muss Nutzern angezeigt werden, indem Sie die
showAlternativeBillingOnlyInformationDialog API aufrufen, bevor Sie jedes Mal mit dem
alternativen Abrechnungsablauf beginnen. Wenn der Nutzer den Dialog bereits bestätigt hat, wird er durch die Verwendung dieser API in der Regel nicht noch einmal angezeigt. Es kann jedoch vorkommen, dass der Dialog Nutzern noch einmal angezeigt wird, z. B. wenn sie die Caches auf ihrem Gerät leeren.
Kotlin
// An activity reference from which the alternative billing only information
// dialog will be launched.
val activity : Activity = ...;
val listener : AlternativeBillingOnlyInformationDialogListener =
AlternativeBillingOnlyInformationDialogListener {
override fun onAlternativeBillingOnlyInformationDialogResponse(
billingResult: BillingResult) {
// check billingResult
}
}
val billingResult =
billingClient.showAlternativeBillingOnlyInformationDialog(activity,
listener)
Java
// An activity reference from which the alternative billing only information
// dialog will be launched.
Activity activity = ...;
AlternativeBillingOnlyInformationDialogListener listener =
new AlternativeBillingOnlyInformationDialogListener() {
@Override
public void onAlternativeBillingOnlyInformationDialogResponse(
BillingResult billingResult) {
// check billingResult
}
};
BillingResult billingResult =
billingClient.showAlternativeBillingOnlyInformationDialog(activity,
listener);
Wenn diese Methode BillingResponseCode.OK zurückgibt, kann Ihre App mit der Transaktion fortfahren. Bei BillingResponseCode.USER_CANCELED sollte Ihre App `showAlternativeBillingOnlyInformationDialog` aufrufen, um den Dialog dem Nutzer noch einmal anzuzeigen. Informationen zu anderen Antwortcodes finden Sie im Abschnitt zur Antwortverarbeitung.
Transaktionen an Google Play melden
Alle Transaktionen, die über ein alternatives Abrechnungssystem ausgeführt werden, müssen innerhalb von
24 Stundenüber das Back-End an Google Play gemeldet werden. Rufen Sie dazu die Google Play Developer API auf
und geben Sie ein externalTransactionToken an, das Sie mit der unten beschriebenen
API erhalten. Für jeden einmaligen Kauf, jedes neue Abo und jedes Upgrade oder Downgrade eines bestehenden Abos sollte ein neues `externalTransactionToken` generiert werden. Informationen zum Melden einer Transaktion, nachdem ein
externalTransactionToken abgerufen wurde, finden Sie in der Anleitung zur Back-End-Integration.
Kotlin
billingClient.createAlternativeBillingOnlyReportingDetailsAsync(object:
AlternativeBillingOnlyReportingDetailsListener {
override fun onAlternativeBillingOnlyTokenResponse(
billingResult: BillingResult,
alternativeBillingOnlyReportingDetails:
AlternativeBillingOnlyReportingDetails?) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return
}
val externalTransactionToken =
alternativeBillingOnlyReportingDetails?
.externalTransactionToken
// Send transaction token to backend and report to Google Play.
}
});
Java
billingClient.createAlternativeBillingOnlyReportingDetailsAsync(
new AlternativeBillingOnlyReportingDetailsListener() {
@Override
public void onAlternativeBillingOnlyTokenResponse(
BillingResult billingResult,
@Nullable AlternativeBillingOnlyReportingDetails
alternativeBillingOnlyReportingDetails) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return;
}
String transactionToken =
alternativeBillingOnlyReportingDetails
.getExternalTransactionToken();
// Send transaction token to backend and report to Google Play.
}
});
Antwortverarbeitung
Die oben genannten Methoden isAlternativeBillingOnlyAvailableAsync(),
showAlternativeBillingOnlyInformationDialog() und
createAlternativeBillingOnlyReportingDetailsAsync() können bei Fehlern Antworten zurückgeben, die nicht BillingResponseCode.OK sind. Die empfohlene Behandlung der Fehler wird unten beschrieben:
ERROR: Dies ist ein interner Fehler. Fahren Sie nicht mit der Transaktion fort. Versuchen Sie es noch einmal, indem SieshowAlternativeBillingOnlyInformationDialog()aufrufen, um den Informationsdialog dem Nutzer beim nächsten Kaufversuch anzuzeigen.FEATURE_NOT_SUPPORTED: Die APIs zur alternativen Abrechnung werden vom Google Play Store auf dem aktuellen Gerät nicht unterstützt. Fahren Sie nicht mit der Transaktion fort.USER_CANCELED: Fahren Sie nicht mit der Transaktion fort. Rufen SieshowAlternativeBillingOnlyInformationDialog()noch einmal auf, um den Informationsdialog dem Nutzer beim nächsten Kaufversuch anzuzeigen.BILLING_UNAVAILABLE: Die Transaktion ist nicht für die alternative Abrechnung geeignet und sollte daher nicht im Rahmen dieses Programms ausgeführt werden. Das liegt entweder daran, dass der Nutzer sich nicht in einem für dieses Programm berechtigten Land befindet oder dass Ihr Konto nicht erfolgreich für das Programm registriert wurde. Im letzteren Fall prüfen Sie den Registrierungsstatus in der Play Console.DEVELOPER_ERROR: Es liegt ein Fehler in der Anfrage vor. Verwenden Sie die Debug-Meldung, um den Fehler zu identifizieren und zu beheben, bevor Sie fortfahren.NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE: Dies sind vorübergehende Fehler, die wiederholt werden sollten. BeiSERVICE_DISCONNECTEDstellen Sie eine Verbindung zu Google Play wieder her, bevor Sie es noch einmal versuchen.
Alternative Abrechnung testen
Lizenztester sollten verwendet werden, um Ihre Integration der alternativen Abrechnung zu testen. Transaktionen, die von Lizenztesterkonten initiiert wurden, werden Ihnen nicht in Rechnung gestellt. Weitere Informationen zum Konfigurieren von Lizenztestern finden Sie unter In-App-Abrechnung mit App-Lizenzierung testen.
Nächste Schritte
Nachdem Sie die In-App-Integration abgeschlossen haben, können Sie Ihr Back-End einbinden.