Anleitung zur In-App-Integration für das Programm für externe Angebote

In diesem Leitfaden wird die Einbindung in die APIs beschrieben, um externe Angebote zu unterstützen. in geeigneten Apps und Regionen verfügbar. Weitere Informationen zum Programm für externe Angebote einschließlich Eignungsvoraussetzungen und geografischem Geltungsbereich, Programmanforderungen.

Play Billing Library einrichten

Um die APIs für externe Angebote zu verwenden, Version 6.2.1 oder höher der Play Billing Library-Abhängigkeit hinzufügen für deine Android-App. Wenn Sie von einer früheren Version migrieren müssen, folgen Sie der Anleitung im Migrationsleitfaden, bevor Sie versuchen, und externen Angeboten.

Mit Google Play verbinden

Die ersten Schritte des Integrationsprozesses sind dieselben wie im des Leitfadens zur Einbindung der Abrechnung, mit einigen Änderungen, BillingClient initialisieren:

  • Sie müssen eine neue Methode aufrufen, um anzugeben, dass Sie externe Angebote: enableExternalOffer.

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

Kotlin

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

Java

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

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

Verfügbarkeit prüfen

Ihre App sollte prüfen, ob externe Angebote verfügbar sind. Rufen Sie dazu einfach an. isExternalOfferAvailableAsync

Diese API gibt BillingResponseCode.OK zurück, wenn externe Angebote verfügbar sind. Unter Umgang mit Antworten findest du weitere Informationen dazu, wie deine App auf andere Antwortcodes antworten.

Kotlin


billingClient.isExternalOfferAvailableAsync(
  object : ExternalOfferAvailabilityListener {
    override fun onExternalOfferAvailabilityResponse(
      billingResult: BillingResult) {
        if (billingResult.responseCode !=  BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors,
            // handling external offers unavailable, etc.
            return
        }

        // External offers are available. Continue with steps in the
        // guide.
})

Java


billingClient.isExternalOfferAvailableAsync(
  new ExternalOfferAvailabilityListener() {
    @Override
    public void onExternalOfferAvailabilityResponse(
      BillingResult billingResult) {
        if (billingResult.getResponseCode() != BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors,
            // handling external offers being unavailable, etc.
            return;
        }
        // External offers are available. Continue with steps in the
        // guide.
      }

});

Externes Transaktionstoken vorbereiten

Zum Melden einer externen Transaktion bei Google Play benötigen Sie eine externe Transaktionstoken, das aus der Play Billing Library generiert wurde. Ein neues externes Das Transaktionstoken muss jedes Mal generiert werden, wenn der Nutzer eine externe Website aufruft über die API für externe Angebote erstellen. Rufen Sie dazu die Methode createExternalOfferReportingDetailsAsync API Dieses Token sollte generiert werden, bevor der Nutzer zu einer Seite außerhalb der App weitergeleitet wird. Er sollte nie im Cache gespeichert und jedes Mal, wenn der Nutzer weitergeleitet wird, eine neue Datei generiert wird. außerhalb der App.

Kotlin


billingClient.createExternalOfferReportingDetailsAsync(
  object : ExternalOfferReportingDetailsListener {
    override fun onExternalOfferReportingDetailsResponse(
      billingResult: BillingResult,
      externalOfferReportingDetails: ExternalOfferReportingDetails?) {
        if (billingResult.responseCode !=  BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors.
            return
        }
        val externalTransactionToken =
            externalOfferReportingDetails?.externalTransactionToken
        // Persist the transaction token locally. Pass it to the external
        // website when showExternalOfferInformationDialog is called.
    }
})

Java


billingClient.createExternalOfferReportingDetailsAsync(
  new ExternalOfferReportingDetailsListener() {
    @Override
    public void onExternalOfferReportingDetailsResponse(
      BillingResult billingResult,
      @Nullable ExternalOfferReportingDetails
        externalOfferReportingDetails) {
        if (billingResult.getResponseCode() != BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors.
            return;
        }

        String transactionToken =
          externalOfferReportingDetails.getExternalTransactionToken();

        // Persist the external transaction token locally. Pass it to the
        // external website when showExternalOfferInformationDialog is
        // called.
      }
});

Informationsdialogfeld für Nutzer

Damit externe Angebote eingebunden werden können, muss Ihre zulässige App eine Information enthalten Bildschirm, der Nutzenden zeigt, dass sie gleich nach draußen geleitet werden. die App auf eine externe Website weiterleiten. Der Informationsbildschirm muss Nutzern wie folgt angezeigt werden: die showExternalOfferInformationDialog API vor dem Verknüpfen mit einem externe Angebote ein.

Kotlin


// An activity reference from which the external offers information dialog
// will be launched.
val activity : Activity = ...;

val listener : ExternalOfferInformationDialogListener =
  ExternalOfferInformationDialogListener {
      override fun onExternalOfferInformationDialogResponse(
        billingResult: BillingResult){
        // Check billingResult
    }
}

val billingResult = billingClient.showExternalOfferInformationDialog(
  activity, listener)

Java


// An activity reference from which the external offers information dialog
// will be launched.
Activity activity = ...;

ExternalOfferInformationDialogListener listener =
  new ExternalOfferInformationDialogListener() {
    @Override
    public void onExternalOfferInformationDialogResponse(
      BillingResult billingResult) {
        if (billingResult.responseCode !=  BillingResponseCode.OK) {
          // Handle failures such as retrying due to network errors.
        }
        // Open the external website, passing along the external transaction
        // token as a URL parameter. If the user purchases an item, be sure
        // to report the transaction to Google Play.
      }
}

BillingResult billingResult =
  billingClient.showExternalOfferInformationDialog(activity, listener);

Wenn diese Methode BillingResponseCode.OK zurückgibt, kann Ihre App mit Nutzende auf die externe Website leiten. Wenn die Methode BillingResponseCode.USER_CANCELED, deine App darf die Website.

Transaktionen an Google Play melden

Alle externen Transaktionen müssen Google Play gemeldet werden indem du die Google Play Developer API aus deinem Backend aufrufst. Externe Transaktionen muss gemeldet werden, während ein externalTransactionToken abgerufen mithilfe von createExternalOfferReportingDetailsAsync API Wenn ein Nutzer mehrere können Sie dieselben externalTransactionToken, um jeden Kauf zu melden. Weitere Informationen zum Melden eines finden Sie im Leitfaden zur Back-End-Integration.

Umgang mit Antworten

Wenn ein Fehler auftritt, nutzen die Methoden isExternalOfferAvailableAsync, createExternalOfferReportingDetailsAsync und showExternalOfferInformationDialog gibt möglicherweise andere Antworten als BillingResponseCode.OK. Sie sollten diese Antwortcodes wie folgt verarbeiten:

  • ERROR: Dies ist ein interner Fehler. Fahren Sie nicht mit der Transaktion fort und die externe Website öffnen. Versuchen Sie es noch einmal mit einem Anruf. showExternalOfferInformationDialog(), um die Informationen aufzurufen wenn Sie das nächste Mal versuchen, den Nutzer an eine Stelle außerhalb des
  • FEATURE_NOT_SUPPORTED: Die APIs für externe Angebote werden nicht unterstützt von im Play Store auf dem aktuellen Gerät. Fahren Sie nicht mit der Transaktion fort und die externe Website öffnen.
  • USER_CANCELED: Öffne nicht die externe Website. Anruf showExternalOfferInformationDialog() noch einmal, um die Informationen aufzurufen wenn Sie versuchen, ihn an einen externen Standort weiterzuleiten, in der App.
  • BILLING_UNAVAILABLE: Die Transaktion kommt nicht für externe Angebote infrage. und sollte deshalb nicht im Rahmen dieses Programms weitergeführt werden. Das liegt entweder daran, Der Nutzer befindet sich nicht in einem für dieses Programm unterstützten Land oder Ihr Konto wurde nicht erfolgreich für das Programm angemeldet wurden. Falls Letzteres der Fall ist, überprüfen Sie deinen Anmeldestatus in der Play Console.
  • 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 mit einer entsprechenden Wiederholungsrichtlinie behoben werden sollten. Stellen Sie im Fall von SERVICE_DISCONNECTED eine Verbindung mit Google Play, bevor Sie es erneut versuchen.

Externe Angebote testen

Lizenztester sollten verwendet werden, um die Integration externer Angebote zu 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.