In-App-Integrationsanleitung nur für die alternative Abrechnung

In dieser Anleitung wird beschrieben, wie Sie die APIs einbinden, um in berechtigten Apps nur alternative Abrechnungssysteme anzubieten (d.h. ohne Nutzerauswahl). 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 wie in der Integrationsanleitung beschrieben herstellen.

Verfügbarkeit prüfen

Ihre App sollte bestätigen, dass nur alternative Abrechnungssysteme verfügbar sind, indem sie isAlternativeBillingOnlyAvailableAsync aufruft.

Diese API gibt BillingResponseCode.OK zurück, wenn nur alternative Abrechnungssysteme verfügbar sind. Im Abschnitt zur Antwortverarbeitung finden Sie Informationen dazu, wie Ihre App auf andere Antwortcodes reagieren sollte.

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 alternative Abrechnungssysteme 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 jedes Mal vor Beginn des alternativen Abrechnungsablaufs die showAlternativeBillingOnlyInformationDialog API aufrufen. 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 = this.activity

val listener: AlternativeBillingOnlyInformationDialogListener =
    AlternativeBillingOnlyInformationDialogListener { 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 müssen gemeldet werden an Google Play, indem Sie die Google Play Developer API von Ihrem Backend innerhalb von 24 Stundenaufrufen. 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 Sie ein externalTransactionToken erhalten haben, 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 Fehlerbehandlung wird unten beschrieben:

  • ERROR: Dies ist ein interner Fehler. Fahren Sie nicht mit der Transaktion fort. Versuchen Sie es noch einmal, indem Sie showAlternativeBillingOnlyInformationDialog() aufrufen, um dem Nutzer den Informationsdialog anzuzeigen, wenn er das nächste Mal einen Kauf tätigen möchte.
  • FEATURE_NOT_SUPPORTED: Die APIs zur alternativen Abrechnung werden vom 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 Sie showAlternativeBillingOnlyInformationDialog() noch einmal auf, um dem Nutzer den Informationsdialog anzuzeigen, wenn er das nächste Mal einen Kauf tätigen möchte.
  • BILLING_UNAVAILABLE: Die Transaktion ist nicht für die alternative Abrechnung geeignet und sollte daher nicht im Rahmen dieses Programms abgewickelt werden. Das kann daran liegen, dass der Nutzer sich nicht in einem für dieses Programm berechtigten Land befindet oder 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. Bei SERVICE_DISCONNECTED stellen Sie vor dem Wiederholen eine Verbindung zu Google Play her.

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.