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 desFEATURE_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. AnrufshowExternalOfferInformationDialog()
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 vonSERVICE_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.