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 SieshowAlternativeBillingOnlyInformationDialog()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 SieshowAlternativeBillingOnlyInformationDialog()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. BeiSERVICE_DISCONNECTEDstellen 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.