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

In diesem Leitfaden wird beschrieben, wie Sie die APIs nur integrieren, um eine alternative Abrechnung anzubieten (d.h. ohne Auswahlmöglichkeit des Nutzers) in geeigneten Apps verfügbar. Weitere Informationen zu diesen Programmen einschließlich Eignungsvoraussetzungen und geografischem Geltungsbereich, siehe Alternative Abrechnung.

Play Billing Library einrichten

Füge deiner Android-App die Play Billing Library-Abhängigkeit hinzu. So verwenden Sie die APIs zur alternativen Abrechnung müssen Sie Version 6.1 oder höher verwenden.

Mit Google Play verbinden

Die ersten Schritte des Integrationsprozesses sind dieselben wie im im Integrationsleitfaden für Google Play Billing beschrieben. BillingClient initialisieren:

  • Sie müssen eine neue Methode aufrufen, um anzugeben, dass Ihre App nur eine alternatives Abrechnungssystem: enableAlternativeBillingOnly.

Im folgenden Beispiel sehen Sie, wie ein BillingClient mit diesen Änderungen:

Kotlin


var billingClient = BillingClient.newBuilder(context)
    .enableAlternativeBillingOnly()
    .build()

Java

private BillingClient billingClient = BillingClient.newBuilder(context)
    .enableAlternativeBillingOnly()
    .build();

Nach dem Initialisieren des BillingClient müssen Sie eine Verbindung mit Google Play, wie im Integrationsleitfaden beschrieben.

Verfügbarkeit prüfen

Deine App sollte durch einen Anruf bestätigen, dass die alternative Abrechnung nur verfügbar ist isAlternativeBillingOnlyAvailableAsync

Diese API gibt BillingResponseCode.OK zurück, wenn nur die alternative Abrechnung verfügbar. Unter Umgang mit Antworten finden Sie weitere Informationen dazu, wie Ihre App auf andere Antwortcodes antworten.

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.
        }
    });

Informationsdialogfeld für Nutzer

Damit die alternative Abrechnung nur integriert werden kann, muss Ihre zulässige App eine Bildschirm mit Informationen, auf dem Nutzer darüber informiert werden, dass die Abrechnung nicht verwaltet wird von Google Play. Der Informationsbildschirm muss durch Aufrufen der Methode showAlternativeBillingOnlyInformationDialog API vor dem Start des alternativen Abrechnungsfluss zu erstellen. Wenn der Nutzer die wird das Dialogfeld bei Verwendung dieser API in der Regel nicht angezeigt. noch einmal. Es kann vorkommen, dass das Dialogfeld einem Nutzer in bestimmten Situationen noch einmal angezeigt wird. z. B. wenn der Nutzer den Cache auf seinem Gerät leert.

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, können Sie mit Ihrer App fortfahren mit der Transaktion. Im Fall von BillingResponseCode.USER_CANCELED sollte Ihre App showAlternativeBillingOnlyInformationDialog aufrufen, um die noch einmal an den Nutzer. Informationen zu anderen Antwortcodes findest du unter Antwortverarbeitung. .

Transaktionen bei Google Play melden

Alle Transaktionen, die über ein alternatives Abrechnungssystem ausgeführt werden, müssen gemeldet werden an Google Play senden, indem Sie die Google Play Developer API von Ihrem Back-End innerhalb 24 Stunden unter Angabe eines externalTransactionToken, das mithilfe der Methode API beschrieben. Für jede Methode sollte ein neues für einen einmaligen Kauf, jedes neue Abonnement und für alle Upgrades/Downgrades auf eine eines bestehenden Abos. Um zu erfahren, wie Sie eine Transaktion melden, externalTransactionToken wird im Leitfaden zur Back-End-Integration abgerufen.

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.
        }
    });

Umgang mit Antworten

Die obigen Methoden isAlternativeBillingOnlyAvailableAsync(), showAlternativeBillingOnlyInformationDialog() und createAlternativeBillingOnlyReportingDetailsAsync() kehrt evtl. zurück non-BillingResponseCode.OK im Fall von Fehlern. Die empfohlenen wie die Fehler behandelt werden:

  • ERROR: Dies ist ein interner Fehler. Fahren Sie nicht mit der Transaktion fort. Versuchen Sie es noch einmal mit einem Anruf. showAlternativeBillingOnlyInformationDialog(), um die Informationen aufzurufen wenn der Nutzer das nächste Mal versucht, etwas zu kaufen.
  • FEATURE_NOT_SUPPORTED: Die APIs zur alternativen Abrechnung werden nicht unterstützt von im Play Store auf dem aktuellen Gerät. Fahren Sie nicht mit der Transaktion fort.
  • USER_CANCELED: Fahren Sie nicht mit der Transaktion fort. Anruf showAlternativeBillingOnlyInformationDialog() noch einmal, um die Informationsdialogfeld angezeigt, wenn der Nutzer das nächste Mal versucht, kaufen.
  • BILLING_UNAVAILABLE: Für die Transaktion kann keine Alternative verwendet werden. Abrechnung nur zur Abrechnung und sollte daher im Rahmen dieses Programms nicht fortgesetzt werden. Dies ist Entweder befindet sich der Nutzer nicht in einem Land, in dem die Teilnahme am Programm möglich ist, oder Ihr Konto wurde nicht erfolgreich für das Programm angemeldet. Wenn es sich überprüfen Sie in der Play Console Ihren Registrierungsstatus.
  • DEVELOPER_ERROR: Bei der Anfrage ist ein Fehler aufgetreten. Debug-Meldung verwenden 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. Im Fall von SERVICE_DISCONNECTED stellt zuvor wieder eine Verbindung mit Google Play her wird wiederholt.

Alternative Abrechnung testen

Lizenztester sollten Ihre Integration für die alternative Abrechnung testen. Ich Transaktionen, die vom Lizenztester initiiert wurden, werden nicht in Rechnung gestellt. Konten. Weitere Informationen finden Sie unter In-App-Abrechnung mit App-Lizenzierung testen. Informationen zum Konfigurieren von Lizenztestern.

Nächste Schritte

Nach der In-App-Integration können Sie Ihre Back-End.