Abos (About subscriptions)

In diesem Thema wird beschrieben, wie mit Lebenszyklusereignissen von Abos umgegangen wird, darunter: deren Verlängerungen und Gültigkeit abgelaufen sind. Außerdem werden zusätzliche Abofunktionen beschrieben. z. B. Werbeaktionen anbieten und Nutzern die Möglichkeit geben, Abos.

Wenn du für deine App noch keine Aboprodukte konfiguriert hast, gehe zu Produkte erstellen und konfigurieren

Aboübersicht

Ein Abo steht für eine Reihe von Vorteilen, die Nutzer in einer für einen bestimmten Zeitraum. Beispielsweise kann ein Abo einem Nutzer um auf einen Musik-Streamingdienst zuzugreifen.

Du kannst mehrere Abos in derselben App haben, verschiedene Vorteile oder verschiedene Stufen einer eine Reihe von Vorteilen (z. B. die Stufen „Silber“ und „Gold“).

Mit Basis-Abos und Angeboten können Sie mehrere Konfigurationen erstellen für dasselbe Aboprodukt. Sie können beispielsweise einen Einführungsangebot für Nutzer, die deine App noch nie abonniert haben. In ähnlicher Weise können Sie ein Upgrade-Angebot für Nutzer erstellen, die bereits ein Abo haben.

Wenn Sie eine detaillierte Übersicht über Aboprodukte, Basis-Abos und Angebote erhalten möchten, finden Sie in der Dokumentation Play Console-Hilfe

Integration von Prepaid-Tarifen

Prepaid-Tarife werden bei Ablauf nicht automatisch verlängert. Um ihre Aboberechtigung unterbrechungsfrei nutzen zu können, muss der Nutzer einen Prepaid-Tarif für dasselbe Abo.

Starten Sie zum Aufladen den Abrechnungsablauf wie für das ursprüngliche kaufen. Sie müssen nicht angeben, dass es sich bei einem Kauf um eine Aufladung handelt.

Für das Aufladen von Prepaid-Tarifen wird immer die CHARGE_FULL_PRICE verwendet Ersatzmodus und Sie müssen diesen Modus nicht explizit festlegen. Dem Nutzer wird sofort der gesamte Abrechnungszeitraum in Rechnung gestellt, und ihre Berechtigung wird um die bei der Aufladung angegebene Dauer verlängert.

Nach einer Aufladung werden die folgenden Felder in der Purchase Ergebnisobjekt werden aktualisiert, um den letzten Aufladekauf widerzuspiegeln:

  • Auftrags-ID
  • Kaufzeitpunkt
  • Unterschrift
  • Kauftoken
  • Bestätigt

Die folgenden Purchase-Felder enthalten immer die gleichen Daten wie in dem ursprünglichen Kauf:

  • Paketname
  • Kaufstatus
  • Produkte
  • Automatische Verlängerung

Bestätigung für Prepaid-Kauf

Ähnlich wie bei Abos mit automatischer Verlängerung müssen Sie Prepaid-Tarife bestätigen. nach dem Kauf. Sowohl der Erstkauf als auch alle Aufladungen müssen bestätigt. Weitere Informationen finden Sie unter Käufe verarbeiten:

Aufgrund der kurzen Laufzeit von Prepaid-Tarifen ist es wichtig, den Kauf so schnell wie möglich bestätigen.

Prepaid-Tarife mit einer Dauer von mindestens einer Woche müssen bestätigt werden innerhalb von drei Tagen.

Prepaid-Tarife mit einer Laufzeit von weniger als einer Woche müssen bestätigt werden innerhalb der Hälfte der Plandauer. Entwickler haben beispielsweise 1,5 Tage Zeit, einen 3-Tage-Prepaid-Tarif bestätigen.

Integration von Ratenabos

Ein Ratenabo ist eine Art von Abo, bei dem Nutzer für den in mehreren Raten über einen bestimmten Zeitraum abonnieren, die gesamte Abogebühr im Voraus zu bezahlen.

Weitere Hinweise für Ratenabos:

  • Verfügbarkeit nach Ländern: Die Funktion für Ratenabos ist nur verfügbar. in Brasilien, Frankreich, Italien und Spanien (in der Konsole verfügbar).
  • Preis festlegen: Sie legen den Preis für ein Abo mit Ratenzahlung fest. in der Konsole steht der Preis für den monatlichen Zahlungsbetrag. Dies, ergibt in Kombination mit dem festgelegten Zusicherungszeitraum den Gesamtbetrag für das Abo auf dem Kaufbildschirm aus.
  • Mindestlaufzeit: Die Gesamtdauer des ersten Abos , in dem monatliche Zahlungen fällig werden. Wenn zum Beispiel ein Basis-Abo hat eine Mindestlaufzeit von 15 Monaten, der Nutzer erhält 15 Monate Zahlungen in diesem Zeitraum.
  • Verlängerungen: „Verlängerung“ im Zusammenhang mit Ratenabos. steht für zum Abschluss einer Mindestlaufzeit, entweder die anfängliche Mindestlaufzeit Mindestlaufzeit. Nach der ersten Registrierung wird erfolgt nach Ablauf des gesamten anfänglichen Zusicherungszeitraums. Im Anschluss Verlängerungen erfolgen nach Ablauf jedes nachfolgenden Zusicherungszeitraums. Die Verlängerungstypen für Ratenabonnements können „automatisch monatlich verlängert“ sein oder „wird automatisch für dieselbe Dauer verlängert“. Für die Option „Automatisch monatlich verlängert“ gibt es keine und der Tarif verhält sich wie ein Monatsabo, stellt jede monatliche Abogebühr eine Verlängerung dar.
  • Abrechnungszeitraum: Im Zusammenhang mit Ratenzahlungen ist dies der Fall. auf das wiederkehrende Intervall, in dem einzelne Zahlungen vorgenommen werden, wie angegeben im Basis-Abo.
  • Plan- und Preisänderungsverhalten im Vergleich: Für Preisänderungen und Kündigungen, ist die Zusicherung fest. Das bedeutet, wenn Nutzende kündigen oder ein Entwickler den Preis ändern möchte, tritt die Änderung am einer Mindestlaufzeit aus. Bei Tarifänderungen ist die Zusicherung nicht fest. Das bedeutet, dass die Tarifänderung nicht bis zum Ende eines Verpflichtungsperiode, sie tritt entweder sofort oder bei der nächsten Zahlung in Kraft Datum basierend auf dem festgelegten Ersetzungsmodus.
  • Änderung des gleichen Abos: Änderung des Tarifs durch ein Basis-Abo mit Ratenzahlung eines Basis-Abos ohne Ratenzahlung desselben Aboprodukts, Zulässig sind.
  • Entwicklerbenachrichtigungen in Echtzeit: SUBSCRIPTION_CANCELLATION_SCHEDULED RTDN wird sofort gesendet, nachdem vom Nutzer veranlasste Kündigung, wenn während des Mindestzeitraums Zahlungen ausstehen Die Kündigung steht noch aus und wird erst am Ende des Mindestlaufzeit. Wenn er sie nicht wiederhergestellt hat, SUBSCRIPTION_CANCELED und SUBSCRIPTION_EXPIRED RTDNs werden am Ende des Zusicherungszeitraums gesendet.

  • Auszahlungen / Umsatzrealisierung: Auszahlungen an Entwickler erfolgen, wenn Nutzer zu deren monatlichen Zahlungen zu den gleichen Bedingungen wie für alle anderen Abos abgerechnet. Entwickler werden nicht im Voraus bezahlt, wenn sich der Nutzer für die Rate registriert Abo.

  • Verpasste Einziehungen: wenn ein Nutzer keine Raten leistet werden weder Google noch der Entwickler versuchen, versäumte oder ausstehende Zahlungen des Nutzers erhalten, mit Ausnahme des Falles, während des Kulanzzeitraums die Zahlung regelmäßig wiederholen oder Die Kontosperre entspricht den üblichen Verfahren für Zahlungswiederholungen. Google übernimmt dem Entwickler gegenüber keine Verantwortung für verbleibende ausstehende Beträge. Ratenzahlungen.

  • Verfügbarkeit der Play Billing Library: Das Feld installmentDetails ist nur verfügbar für PBL 7 oder höher. Für PBL 5 und höher Abo wird mit queryProductDetails() zurückgegeben, aber das Abo enthalten keine detaillierten Rateninformationen wie die Anzahl der zugesicherten Zahlungen des Plans.

Nutzer mithilfe von Deeplinks ein Abo verwalten

Ihre App sollte einen Link auf einem Einstellungsbildschirm enthalten, über den Sie damit Nutzer ihre Abos verwalten können. Diese können Sie dann in die natürliches Erscheinungsbild.

Du kannst einen Deeplink von deiner App zu den Google Play-Abos hinzufügen für abgelaufene Abonnements. Diese können Sie mithilfe der Feld subscriptionState der Aboressource. Es gibt mehrere Möglichkeiten, Deeplinks zu Google Play hinzuzufügen. Store-Abocenter.

Leiten Sie Nutzer mithilfe der folgenden URL auf die Seite weiter, auf der alle ihre Abos, wie in den Abbildungen 1 und 2 gezeigt:

https://play.google.com/store/account/subscriptions
<ph type="x-smartling-placeholder">
</ph> Auf dem Bildschirm „Play Store-Abos“ wird der Status aller Abos eines Nutzers angezeigt, die über Google Play abgerechnet werden.
Abbildung 1: Auf dem Bildschirm „Play Store-Abos“ wird der Status aller Abos eines Nutzers angezeigt, die über Google Play abgerechnet werden.


<ph type="x-smartling-placeholder">
</ph> Tippe auf ein Abo, um weitere Details zu sehen.
Abbildung 2: Tippe auf ein Abo, um weitere Details.

Mit diesem Deeplink kann ein Nutzer ein gekündigtes Abo wiederherstellen im Abocenter des Play Store.

Um einen direkten Link zur Verwaltungsseite für ein abgelaufenes Abo zu erstellen, geben Sie Der Paketname und die productId, die mit dem erworbenen Abo verknüpft sind. Bis die productId für ein vorhandenes Abo, eine Abfrage Back-End Ihrer Anwendung oder rufen Sie BillingClient.queryPurchasesAsync() auf, um eine Liste Abos, die mit einem bestimmten Nutzer verknüpft sind. Jedes Abo enthält das entsprechende productId als Teil der Informationen zum Abostatus. Jedes SubscriptionPurchaseLineItem-Objekt, das mit einem enthält den Wert productId, der mit dem Abo, das der Nutzer in dieser Werbebuchung gekauft hat.

Über die folgende URL kannst du Nutzer zu einer bestimmten Aboverwaltung weiterleiten Bildschirm und ersetzen Sie dabei „Ihre Unterprodukt-ID“. und „your-app-package“ mit dem productId bzw. Name des App-Pakets:

https://play.google.com/store/account/subscriptions?sku=your-sub-product-id&package=your-app-package

Der Nutzer kann dann seine Zahlungsmethoden verwalten und auf Funktionen zugreifen. einschließlich Kündigung, Verlängerung und Pausierung.

Nutzern erlauben, für ihr Abo ein Upgrade, Downgrade oder eine Änderung vorzunehmen

Du kannst bestehenden Abonnenten verschiedene Optionen anbieten, Abos, die besser auf ihre Bedürfnisse zugeschnitten sind:

  • Wenn Sie mehrere Abostufen verkaufen, z. B. „Basic“ und „Premium“ können Sie Nutzern ermöglichen, die Stufe zu wechseln, das Basis-Abo oder Angebot des Abos.
  • Sie können Nutzern erlauben, ihren aktuellen Abrechnungszeitraum zu ändern, z. B. zu einem anderen Konto. vom Monats- ins Jahresabo.
  • Sie können Nutzern auch erlauben, zwischen einem Tarif mit automatischer Verlängerung und einem Prepaid-Tarif zu wechseln.

Sie können diese Änderungen fördern, indem Sie berechtigten Nutzern einen Rabatt gewähren. Sie können z. B. ein Angebot erstellen, mit einem Rabatt von 50% auf das erste Jahr bei einem Wechsel von einem monatlichen zu einem Jahrestarif und beschränken Sie dieses Angebot auf Nutzer mit einem monatlichen Abo. die dieses Angebot noch nicht erworben haben. Weitere Informationen zu den Voraussetzungen für das Angebot Kriterien finden Sie in der Hilfe

Abbildung 3 zeigt eine Beispielanwendung mit drei verschiedenen Plänen:

<ph type="x-smartling-placeholder">
</ph> Diese App hat drei Abostufen.
Abbildung 3: Für diese App gibt es drei Abostufen.

In Ihrer App könnte ein Bildschirm wie in Abbildung 3 angezeigt werden, auf dem Nutzer die Möglichkeit haben, sein Abo abzuschließen. In jedem Fall sollte für die Nutzer klar erkennbar sein, Abo ist und welche Möglichkeiten es gibt, es zu ändern.

Wenn Nutzer ein Upgrade, Downgrade oder eine Änderung ihres Abos ausführen, einen Ersatzmodus angeben, der bestimmt, wie der anteilige Wert des angewendet werden und wenn sich die Berechtigung ändert.

Ersatzmodi

In der folgenden Tabelle sind die verfügbaren Ersatzmodi und die Anwendungsbeispiele aufgeführt. und die Anzahl der Zahlungen, die als bezahlt gelten.

Ersetzungsmodus

Beschreibung

Verwendungsbeispiel

Zugesicherte Zahlungen, die als bezahlt erfasst wurden (für den Austausch von Ratenzahlungen)

WITH_TIME_PRORATION

Das Upgrade oder Downgrade des Abos wird sofort durchgeführt. Die verbleibende Zeit wird entsprechend der Preisdifferenz angepasst und dem neuen Abo gutgeschrieben, indem das nächste Abrechnungsdatum vorverlegt wird. Dies ist die Standardeinstellung.

Führen Sie ein Upgrade auf eine teurere Stufe ohne sofortige Zusatzkosten durch.

0

CHARGE_PRORATED_PRICE

Das Abo wird sofort umgestellt und der Abrechnungszeitraum bleibt gleich. Die Preisdifferenz für den verbleibenden Zeitraum wird dem Nutzer in Rechnung gestellt.

Hinweis:Diese Option ist nur für Abo-Upgrade, bei dem der Preis pro Zeiteinheit steigt.

Auf eine teurere Stufe upgraden, ohne das Abrechnungsdatum zu ändern.

1

CHARGE_FULL_PRICE

Das Upgrade oder Downgrade für das Abo wird sofort durchgeführt und der Nutzer wird Ihnen sofort der volle Preis für die neue Berechtigung berechnet. Der verbleibende Wert aus dem vorherigen Abo entweder für dasselbe Abo Berechtigung oder auf einen anteiligen Zeitraum beim Wechsel zu einer anderen Berechtigung verrechnet werden.

Hinweis:Wenn das neue Abo einen kostenlosen Testzeitraum oder einen Einführungsangebots wird dem Nutzer 0 € oder der Preis der Einführungsaktion je nachdem, was zutrifft.

Wechseln Sie von einem kürzeren zu einem längeren Abrechnungszeitraum.

1 (Hinweis: 0, wenn das neue Abo einen kostenlosen Testzeitraum umfasst.)

WITHOUT_PRORATION

Das Upgrade oder Downgrade des Abos erfolgt sofort. Der neue Preis wird bei Verlängerung des Abos in Rechnung gestellt. Der Abrechnungszeitraum bleibt gleich.

Führen Sie ein Upgrade auf eine höhere Abo-Stufe durch und behalten Sie den verbleibenden kostenlosen Zeitraum bei.

0

DEFERRED

Das Upgrade oder Downgrade des Abos wird nur dann durchgeführt, wenn das Abo verlängert wird. Der neue Kauf wird jedoch sofort mit einem Startdatum für die neue Berechtigung ausgeführt, das in der Zukunft liegt. So kann der Entwickler Nutzern die Möglichkeit geben, bei Bedarf weitere Änderungen vorzunehmen. Er kann beispielsweise zum ursprünglichen Plan zurückkehren oder eine neue nachträgliche Änderung des Tarifs initiieren. Hinweis: Bei Ratenabos erfolgt die Tarifänderung zu Beginn des nächsten Zahlungsdatums.

Führen Sie ein Downgrade auf eine kostengünstigere Stufe durch.

1

Um mehr über die verschiedenen Upselling- und Rückgewinnungsanwendungen von finden Sie im Leitfaden zu Angeboten und Werbeaktionen.

Ersatzmodus für einen Kauf festlegen

Sie können verschiedene Ersatzmodi für verschiedene Abotypen verwenden basierend auf Ihren Präferenzen und der Geschäftslogik. In diesem Abschnitt wird erläutert, Wie ein Ersatzmodus für eine Änderung in einem Abo festgelegt wird und welche Einschränkungen gelten die zutreffen.

Innerhalb desselben Abos ein neues Abo abschließen oder zu einem anderen Abo wechseln

Sie können in der Google Play Console einen Standardersetzungsmodus festlegen. Dieses können Sie festlegen, wann Sie Ihren aktuellen Abonnenten bei einem Kauf in Rechnung stellen. ein anderes Basis-Abo oder Angebot für dasselbe Abo oder Kündigung. Die verfügbaren Optionen sind Sofort bezahlen, was der CHARGE_FULL_PRICE und Zum nächsten Abrechnungsdatum abrechnen, entsprechend WITHOUT_PRORATION. Dies sind die einzigen relevanten Ersatzmodi, wenn die Basis-Abos innerhalb desselben Abos wechseln.

Wenn Sie z. B. ein Rückgewinnungsangebot für denselben Plan nach dem Ende des Kündigt der Nutzer, aber vor Ablauf des Abos können Sie den neuen Kauf als regulärer Kauf ohne Angabe von Werten in SubscriptionUpdateParams Das System verwendet den standardmäßigen Ersetzungsmodus, im Abo konfiguriert ist und die Tarifumstellung automatisch übernimmt vom alten Kauf bis zum neuen Kauf.

Du kannst zwischen Abos wechseln oder den Standardersetzungsmodus überschreiben

Wenn der Nutzer ein anderes Aboprodukt oder ein anderes Abo kauft oder wenn Sie den standardmäßigen Ersetzungsmodus Grund angeben, geben Sie den Zuteilungspreis zur Laufzeit im Rahmen des Kaufvorgangs an. Parameter.

Angabe von SubscriptionUpdateParams im Rahmen des Laufzeitkaufs korrekt beachten Sie die folgenden Einschränkungen:

  • Wenn Sie ein Upgrade, Downgrade oder den Wechsel zu einem Abo zu einem Abo ausführen, Prepaid-Tarif über einen Prepaid-Tarif, Der zulässige Ersetzungsmodus ist CHARGE_FULL_PRICE. Wenn Sie andere Ersatzmodus verwendet wird, schlägt der Kauf fehl und der Nutzer sieht eine Fehlermeldung.
  • Beim Wechsel des Abos innerhalb desselben Abos zu einem sich automatisch verlängernden Tarif aus einem Prepaid-Tarif oder einem Tarif mit automatischer Verlängerung, gültige Zuteilungsmodi sind CHARGE_FULL_PRICE und WITHOUT_PRORATION. Wenn Sie andere Zuteilungsmodus schlägt der Kauf fehl und dem Nutzer wird ein Fehler angezeigt.
  • Tarife innerhalb desselben Aboprodukts über eine Ratenbasis wechseln in ein Basis-Abo ohne Ratenzahlung ist nicht zulässig.

Ersetzungsbeispiele und -verhalten

Betrachten Sie das folgende Szenario, um die Funktionsweise der einzelnen Zuteilungsmodus zu verstehen:

Samwise hat ein Abo für Online-Inhalte der Country Gardener-App. Er hat ein Monatsabo der Version der Inhalte von Tier 1, die nur Text enthält. Das Abo kostet ihn 2$pro Monat und es wird verlängert am Ersten des Monats.

Am 15. April entschied sich Samwise für ein Upgrade auf die Jahresversion von Tier 2. mit Videoupdates und kostet 36$pro Jahr.

Beim Upgrade des Abos wählt der Entwickler einen Zuteilungsmodus aus. Die In der folgenden Liste wird beschrieben, wie sich die einzelnen Zuteilungsmodus auf Samwises Abo auswirken:

WITH_TIME_PRORATION

Samwises Tier 1-Abo endet sofort. Er hat für einen ganzen Tag (1. bis 30. April), aber nach der Hälfte der Abolaufzeit aktualisiert, die Hälfte ein Monatsabo (1 €) auf das neue Abo angewendet wird. Das liegt jedoch nicht daran, dieses neue Abonnement 36 $pro Jahr kostet, werden mit dem Guthaben von 1 $nur zehn Tage (16.–25. April); Am 26. April werden ihm 36 € für ein neues Abo in Rechnung gestellt weitere 36 US-Dollar am 26. April des Folgejahres ein.

Sie sollten die PurchasesUpdatedListener Ihrer App in dem Moment aufrufen, in dem Kauf abgeschlossen ist und Sie den neuen Kauf im Rahmen eines queryPurchasesAsync() Anruf. Ihr Backend erhält sofort SUBSCRIPTION_PURCHASED Entwicklerbenachrichtigung in Echtzeit.

CHARGE_PRORATED_PRICE

Dieser Modus kann verwendet werden, weil der Abopreis von Tier 2 pro Zeiteinheit (36 $/Jahr = 3 $/Monat) ist höher als der Abopreis von Stufe 1 pro Zeit. Einheit (2 $/Monat). Samwises Tier 1-Abo endet sofort. Weil er bezahlt, aber nur die Hälfte des Monats, (1 €) wird auf sein neues Abo angewendet. Da das neue Abo jedoch kostet 36 US-Dollar/Jahr, die verbleibenden 15 Tage kosten 1,50 US-Dollar; sodass ihm die Kosten 0,50 € Rabatt auf sein neues Abo. Am 1. Mai zahlt Samwise 36 $. für seine neue Abostufe und weitere 36 $am 1. Mai des Folgejahres.

Sie sollten die PurchasesUpdatedListener Ihrer App in dem Moment aufrufen, in dem Kauf abgeschlossen ist und Sie den neuen Kauf im Rahmen einen queryPurchasesAsync()-Anruf. Ihr Backend erhält sofort SUBSCRIPTION_PURCHASED Entwicklerbenachrichtigung in Echtzeit.

WITHOUT_PRORATION

Samwises Tier 1-Abo wird sofort auf Tier 2 hochgestuft, ohne dass und am 1. Mai 36 € für die neue Abostufe weitere 36 US-Dollar am 1. Mai des Folgejahres.

Sie sollten die PurchasesUpdatedListener Ihrer App in dem Moment aufrufen, in dem Kauf abgeschlossen ist und Sie den neuen Kauf im Rahmen einen queryPurchasesAsync()-Anruf. Ihr Backend erhält sofort SUBSCRIPTION_PURCHASED Entwicklerbenachrichtigung in Echtzeit.

DEFERRED

Samwises Tier 1-Abo läuft bis zum 30. April ab. Im Mai Erstens tritt das Abo von Tier 2 in Kraft und Samwise wird mit 36 $für seine neue Abo-Stufe.

Sie sollten die PurchasesUpdatedListener Ihrer App in dem Moment aufrufen, in dem Kauf abgeschlossen ist und Sie den neuen Kauf im Rahmen einen queryPurchasesAsync()-Anruf. Ihr Backend erhält sofort SUBSCRIPTION_PURCHASED Entwicklerbenachrichtigung in Echtzeit. Sie sollten verarbeiten Sie den Kauf genauso wie andere Neukäufe. an diesem Punkt. Achten Sie insbesondere darauf, dass Sie den neuen Kauf bestätigen. Hinweis dass die startTime des neuen Abos bei sobald der Austausch wirksam ist, was passiert, wenn die alte Abo abläuft. Sie erhalten dann eine SUBSCRIPTION_RENEWED RTDN für das neue Abo. Weitere Informationen zum ReplacementMode.DEFERRED-Verhalten in Verzögertes Ersetzen.

CHARGE_FULL_PRICE

Samwises Tier 1-Abo endet sofort. Sein Tier 2-Abo beginnt heute und ihm werden 36 € in Rechnung gestellt. Er hat für einen ganzen Monat bezahlt, nur die Hälfte, ein halbes Monatsabo (1 $) wird auf sein neues Abo. Da das neue Abo 36 $pro Jahr kostet, erhält er 1/36. um ein Jahr zu seiner Abolaufzeit (ca. 10 Tage) hinzu. Dementsprechend ist Samwises die nächste Abbuchung für 1 Jahr und 10 Tage ab heute für 36 € anfällt. Danach ist er wurde für jedes darauffolgende Jahr 36 US-Dollar berechnet.

Beachten Sie bei der Auswahl eines Zuteilungsmodus unsere Empfehlungen für den Umtausch.

Aboänderungen in der App auslösen

Sie können Nutzern in Ihrer App ein Upgrade oder Downgrade anbieten, indem Sie dieselben Schritte ausführen wie Starten eines Kaufvorgangs. Bei einem Upgrade oder Downgrade Sie müssen Angaben zum aktuellen Abo, zu einem zukünftigen (aktualisierten oder und den Ersatzmodus, wie in den folgendes Beispiel:

Kotlin

val offerToken = productDetails
        .getSubscriptionOfferDetails(selectedOfferIndex)
        .getOfferToken()

val billingParams = BillingFlowParams.newBuilder().setProductDetailsParamsList(
       listOf(
           BillingFlowParams.ProductDetailsParams.newBuilder()
               .setProductDetails(productDetails)
               .setOfferToken(offerToken)
               .build()
       )
       ).setSubscriptionUpdateParams(
           BillingFlowParams.SubscriptionUpdateParams.newBuilder()
               .setOldPurchaseToken("old_purchase_token")
               .setSubscriptionReplacementMode(
                 BillingFlowParams.ReplacementMode.CHARGE_FULL_PRICE
               )
               .build()
       ).build()

billingClient.launchBillingFlow(
    activity,
    billingParams
   )
// ...

Java

String offerToken = productDetails
    .getSubscriptionOfferDetails(selectedOfferIndex)
    .getOfferToken();

BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
    .setProductDetailsParamsList(
        ImmuableList.of(
            ProductDetailsParams.newBuilder()
                // fetched via queryProductDetailsAsync
                .setProductDetails(productDetails)
                // offerToken can be found in
                // ProductDetails=>SubscriptionOfferDetails
                .setOfferToken(offerToken)
                .build()))
    .setSubscriptionUpdateParams(
        SubscriptionUpdateParams.newBuilder()
            // purchaseToken can be found in Purchase#getPurchaseToken
            .setOldPurchaseToken("old_purchase_token")
            .setSubscriptionReplacementMode(ReplacementMode.CHARGE_FULL_PRICE)
            .build())
    .build();

BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);
// ...

Empfehlungen für den Austausch

Die folgende Tabelle zeigt verschiedene Szenarien der anteiligen Anteile und Empfehlungen für jedes Szenario:

Szenario Empfohlener Ersatzmodus Ergebnis
Upgrade auf eine teurere Stufe durchführen CHARGE_PRORATED_PRICE Der Nutzer erhält sofort Zugriff unter Beibehaltung der Abrechnung. Punkt.
Downgrade auf eine kostengünstigere Stufe DEFERRED Der Nutzer hat bereits für die teurere Stufe bezahlt, also behält er Zugriff bis zum nächsten Abrechnungsdatum.
Upgrade während eines kostenlosen Testzeitraums durchführen, während der Test läuft WITHOUT_PRORATION Der Nutzer hat weiterhin Zugriff auf die kostenlose Testversion, führt jedoch ein Upgrade auf eine höhere Stufe für bis zum Ende des Tests.
Upgrade während eines kostenlosen Testzeitraums – Zugang zum kostenlosen Testzeitraum beenden CHARGE_PRORATED_PRICE Der Nutzer erhält sofort Zugriff auf die neue Stufe, jedoch nicht mehr. hat eine kostenlose Testversion.

Käufe von Aboänderungen verarbeiten

Änderungen des Tarifs gelten für neue Käufe unter Berücksichtigung aller Bedingungen und Zwecke und sollten verarbeitet und nach Abschluss des Abrechnungsvorgangs entsprechend bestätigt. erfolgreich war. Neben der ordnungsgemäßen Bearbeitung des neuen Kaufs den gekauften Artikel, der ersetzt wird, zurückziehen müssen.

Das In-App-Verhalten entspricht dem für jeden neuen Kauf. Deine App erhält die Ergebnis des neuen Kaufs in PurchasesUpdatedListener und die neuer Kauf ist in queryPurchasesAsync verfügbar.

Die Google Play Developer API gibt linkedPurchaseToken im Aboressource, wenn ein Kauf eine vorhandene ersetzt eins. Achten Sie darauf, das in der linkedPurchaseToken angegebene Token zu entwerten, um Stellen Sie sicher, dass das alte Token nicht für den Zugriff auf Ihre Dienste verwendet wird. Weitere Informationen finden Sie unter Upgrades, Downgrades und Neuregistrierungen und Downgrades für Käufe durchführen.

Wenn du das neue Kauftoken erhältst, folge demselben Bestätigungsprozess wie mit der Bestätigung eines neuen Kauftokens. Achten Sie darauf, diese Käufe bei Google Play mit BillingClient.acknowledgePurchase() Billing Library oder Purchases.subscriptions:acknowledge von die Google Play Developer API.

Verzögerter Austausch handhaben

Mit dem verzögerten Ersetzungsmodus können Nutzer die verbleibenden Berechtigung in ihrem alten Abo gewährt, bevor mit dem neuen Abo begonnen wird.

Wenn Sie ReplacementMode.DEFERRED für einen neuen Kauf verwenden, queryPurchasesAsync() gibt nach dem Kauf ein neues Kauftoken zurück der mit dem alten Produkt verknüpft bleibt, bis der verzögerte Ersatz erfolgt am nächsten Verlängerungsdatum, nach dem das neue Produkt zurückgegeben.

In der Vergangenheit konnten Sie diese Nutzererfahrung mit der veralteten ProrationMode.DEFERRED, aber ProrationMode.DEFERRED wird bei Google Play eingestellt Billing Library 6. In der folgenden Tabelle sehen Sie, wo das Verhalten unterscheidet:

Uhrzeit

ProrationMode.DEFERRED (eingestellt)

Ersatzmodus.DEFERRED

Direkt nach dem erfolgreichen Kaufvorgang (App)

PurchasesUpdatedListener wird nach dem Kauf aufgerufen und gibt an, ob das Upgrade oder Downgrade erfolgreich war.

Der Anspruch auf das alte Abo bleibt bis zum nächsten Verlängerungsdatum bestehen. Damit die App die richtige Berechtigung gewährt, gibt queryPurchasesAsync() ein Kaufobjekt mit dem ursprünglichen Kauftoken und der ursprünglichen Berechtigung zurück, bis der Austausch erfolgt.

Das neue Kauftoken wird nicht angezeigt und kann daher an diesem Punkt nicht verarbeitet werden.

PurchasesUpdatedListener wird nach dem Kauf aufgerufen und gibt an, ob das Upgrade oder Downgrade erfolgreich war.

queryPurchasesAsync() gibt den Kauf sofort mit dem neuen Kauftoken und der damit verknüpften ursprünglichen Berechtigung zurück.

Das neue Kauftoken wird angezeigt. Daher sollte es an diesem Punkt verarbeitet werden und den Zeitpunkt des Austauschs berücksichtigen.

Direkt nach dem erfolgreichen Kaufvorgang (Back-End)

SUBSCRIPTION_PURCHASED-RTDNs werden nicht nach dem Kaufvorgang gesendet. Das Backend wurde noch nicht über den neuen Kauf informiert.

Die SUBSCRIPTION_PURCHASED-RTDN mit der alten product_id wird sofort nach dem Kaufvorgang für das neue Kauftoken gesendet.

Durch den Aufruf der Methode purchases.subscriptionsv2.get mit dem neuen Kauftoken wird ein Kauf mit einer Startzeit (startTime) zurückgegeben. gibt die Kaufzeit mit zwei Werbebuchungen an:

  • Eine, die die alte Berechtigung darstellt und eine „expiryTime“ hat zu erhalten. Die alte Berechtigung wird nicht verlängert und enthält einen DeferredItemReplacement, der das Produkt der neuen Berechtigung enthält. Dies weist darauf hin, dass die alte Berechtigung nach ihrem Ablauf noch ersetzt werden muss.
  • Eine, die für die neu erworbene Berechtigung steht. Es ist kein Wert für „expiryTime“ festgelegt.

SUBSCRIPTION_EXPIRED für das alte Kauftoken gesendet. Wenn Sie die Methode purchases.subscriptionsv2.get mit dem alten Kauftoken aufrufen, wird es als abgelaufen angezeigt. Die Berechtigung für das alte Abo wird für die verbleibende Zeit auf den neuen Kauf übertragen.

Bei einem Ersatz – erste Verlängerung nach dem Kaufvorgang (App)

queryPurchasesAsync() gibt ein neues Kaufobjekt mit dem neuen Kauftoken und der Berechtigung zurück.

Das neue Kauftoken wird jetzt angezeigt und sollte verarbeitet werden.

queryPurchasesAsync() gibt den Kauf sofort mit dem neuen Kauftoken und der damit verknüpften neuen Berechtigung zurück.

Der neue Kauf sollte bereits verarbeitet worden sein, als der Kaufvorgang erfolgreich war. Aus diesem Grund sollte in der App nur sichergestellt werden, dass die richtige Berechtigung gewährt wurde.

Bei Ersatz – erste Verlängerung nach dem Kaufvorgang (Back-End)

Der neue Kauf kann jetzt verarbeitet und bestätigt werden, wenn das erste SUBSCRIPTION_RENEWED RTDN gesendet wird.

Mit der linkedPurchaseToken in der Aboressource kann festgelegt werden, welcher Nutzer im Abo-Backend gegebenenfalls mit der neuen Berechtigung aktualisiert werden soll.

Der neue Kauf wurde verarbeitet und bestätigt, als die SUBSCRIPTION_PURCHASED RTDN für das neue Kauftoken gesendet und als „startTime“ aufgezeichnet wurde.

Mit „ReplacementMode.DEFERRED“ folgen die ersten Verlängerungen dem Standardverhalten jeder anderen Verlängerung und Sie müssen beim Eintreten dieses Ereignisses keine spezielle Logik verwenden.

Wenn Sie die Methode purchases.subscriptionsv2.get mit dem neuen Kauftoken aufrufen, wird ein Kauf mit zwei Positionen zurückgegeben:

  • Eine, die die alte Berechtigung darstellt, mit einer Ablaufzeit in der Vergangenheit und ohne festgelegten Wert für DeferredItemReplacement.
  • Eine, die die neue Berechtigung mit einer „expiryTime“ in der Zukunft darstellt und das Flag „auto_renewing_enabled“ aktiviert ist.

„ReplacementMode.DEFERRED“ sollte ab jetzt anstelle des eingestellten Modus verwendet werden ProrationMode.DEFERRED, da sie dasselbe Verhalten in Bezug auf die Berechtigung zeigt ändert sich, aber bietet eine Möglichkeit zur Verwaltung des Kaufs, die mit der auf andere neue Käufe auswirken.

Kundenverwaltung

Mit Entwicklerbenachrichtigungen in Echtzeit können Sie in Echtzeit erkennen, Nutzer kündigt den Vorgang. Wenn ein Nutzer kündigt, aber vor dem Abo abgelaufen ist, kannst du Push-Benachrichtigungen oder In-App-Nachrichten senden, um um sie erneut zu abonnieren.

Nachdem ein Nutzer sein Abo gekündigt hat, kannst du versuchen, ihn zurückzugewinnen in deiner App oder über den Play Store. In der folgenden Tabelle wird beschrieben, verschiedene Abo-Szenarien mit zugehörigen Aktionen zur Rückgewinnung App-Anforderungen.

Vor Ablauf des Abos Nach Ablauf des Abos
In-App Im Play Store In-App Im Play Store
Rückgewinnungsfunktion In-App-Abo Wiederherstellen In-App-Abo Erneut abonnieren
Nutzer durchläuft den Bezahlvorgang Ja Nein Ja Ja
Nutzerabo bleibt mit derselben Artikelnummer verknüpft Nutzer können sich für dieselbe oder eine andere Artikelnummer registrieren Ja Nutzer können sich für dieselbe oder eine andere Artikelnummer registrieren Ja
Erstellt ein neues Kauftoken Ja Nein Ja Ja
Standardmäßig aktiviert Nein Ja, Support für alle Entwickler erforderlich Nein

Apps ohne Billing Library 2.0+: Nein

Apps mit Billing Library 2.0+: Ja. Entwickler können die Funktion in der Console deaktivieren.

Wann fallen Kosten an?

Bei Verwendung derselben SKU: Ende des aktuellen Abrechnungszeitraums.

Bei Verwendung einer anderen Artikelnummer: hängt vom Zuteilungsmodus ab.

Ende des aktuellen Abrechnungszeitraums Sofort Sofort
Implementierung erforderlich Bereitstellen eine Benutzeroberfläche für die Neuanmeldung in Ihrer App

Änderung des Abostatus erkennen

Deeplink zum Play Store

Bereitstellung einer Benutzeroberfläche für die Neuregistrierung in Ihrer App Umgang mit Out-of-App-Käufen

Vor Ablauf des Abos – In-App

Für Abos, die gekündigt wurden, aber noch nicht abgelaufen sind, kannst du Abonnenten können ihr Abo in Ihrer App reaktivieren, indem sie die wie bei neuen Abonnenten. Achten Sie darauf, dass Ihre UI gibt an, dass der Nutzer ein Abo hat. Zum Beispiel könnten Sie das aktuelle Ablaufdatum und den wiederkehrenden Preis des Nutzers eine Schaltfläche Wieder aktivieren.

In den meisten Fällen möchten Sie Nutzern denselben Preis und dieselbe Artikelnummer anbieten, die sie auch haben. die Sie bereits abonniert hatten:

  • Kaufe ein neues Abo mit derselben Artikelnummer.
  • Das neue Abo ersetzt das alte und wird am selben Ende verlängert Datum. Das alte Abo wird sofort als abgelaufen markiert.
  • Beispiel: Achilles hat ein Abo für die Beispiel-Musik-App und die Abo läuft am 1. August aus. Am 10. Juli abonniert er die erhalten Sie ein einmonatiges Abo zum selben Preis pro Monat. Das neue Abo wird anteilig mit dem verbleibenden Guthaben verrechnet, ist sofort aktiv und immer noch wird am 1. August verlängert.

Wenn Sie einen anderen Preis anbieten möchten, z. B. eine neue kostenlose Testversion oder einen Rückgewinnungsrabatt. Sie können dem Nutzer stattdessen eine andere Artikelnummer anbieten:

  • Führen Sie ein Upgrade oder Downgrade mit der anderen Artikelnummer aus. mit dem Ersetzungsmodus WITHOUT_PRORATION.
  • Das neue Abo ersetzt das alte und wird am selben Ende verlängert Datum. Dem Nutzer wird der Preis der neuen Artikelnummer in Rechnung gestellt, einschließlich Einführungspreise am ursprünglichen Ablaufdatum. Wenn das alte Abo mit einer verschleierten Konto-ID erstellt wurde, muss dieselbe ID übergeben werden. auf die BillingFlowParams für Upgrades und Downgrades.
  • Beispiel: Achilles hat ein Abo für die Beispiel-Musik-App und die Abo läuft am 1. August aus. Am 10. Juli abonniert er die ein Jahresabo zum Einführungspreis. Das neue Abo sofort aktiv ist und dem Nutzer der Einführungspreis 1. August
  • Wenn du ein kostenloses Probeabo oder einen Einführungspreis in deine Artikelnummer aufnehmen möchtest, um sicherzustellen, dass der Nutzer qualifiziert ist, indem Sie ein kostenloses Probeabo pro App zulassen in der Google Play Console, die erhalten Nutzer nur eine kostenlose Testversion pro App.

Wenn du das Kauftoken erhältst, die Kaufabwicklung abwickeln, wie bei einem neuen Abo. Außerdem kann die Google Play Developer API gibt ein linkedPurchaseToken in der Aboressource zurück. Achten Sie darauf, Das angegebene Token entwerten in linkedPurchaseToken, damit das alte Token nicht für Zugriff auf Ihre Dienste zu erhalten.

Vor Ablauf des Abos – im Play Store

Solange das Abo gekündigt wurde, aber noch aktiv ist, können Nutzer die Abonnements im Google Play-Abocenter, indem Sie auf Wieder abonnieren (früher Wiederherstellen). Dadurch bleibt das Abo und das Kauftoken.

<ph type="x-smartling-placeholder">
</ph> im Bereich „Abos“ in der Google Play Store App
            ein gekündigtes Abo mit einer Schaltfläche zum erneuten Abonnieren
Abbildung 8: Konto > im Abschnitt „Abos“ in Google Play Store App, auf der ein gekündigtes Abo mit einer Wieder abonnieren.

Weitere Informationen zum Wiederherstellen von Abos finden Sie unter Wiederherstellungen.

Nach Ablauf des Abos – In-App

Sie können abgelaufene Abonnenten in Ihrer App neu abonnieren, indem Sie wie bei neuen Abonnenten. Beachten Sie die Folgendes:

  • Um Nutzern einen Rabatt anzubieten, können Sie eine Produkt-ID mit Sonderpreis für Ihr Abo, auch Winback-Artikelnummer genannt. Sie können das Angebot in Ihrer App anbieten oder den Nutzer über außerhalb der App, etwa per E-Mail.
  • Um ein Abo zur Rückgewinnung zu starten, starte den Kaufvorgang in deinem Android-App, die die Google Play Billing Library verwendet Das Gleiche wie bei einem neuen Abo, aber Sie können die dem Nutzer zur Verfügung stehen.
  • Wenn du ein kostenloses Probeabo oder einen Einführungspreis einschließt Artikelnummer, entfernen Sie das Häkchen aus dem Kästchen neben ein kostenloses Probeabo pro App zulassen in der Google Play Console, die erhalten Nutzer nur eine kostenlose Testversion pro App.
  • Abonniert der Nutzer dieselbe Artikelnummer noch einmal, hat er keinen Anspruch mehr . Achten Sie darauf, dass Ihre UI dies widerspiegelt.

Wenn du das Kauftoken erhältst, die Kaufabwicklung abwickeln, wie bei einem neuen Abo. Du erhältst keine linkedPurchaseToken in der Aboressource.

Nach Ablauf des Abos – im Play Store

Wenn diese Option aktiviert ist, können Nutzer dieselbe Artikelnummer bis zu ein Jahr lang danach wieder abonnieren indem du in den Google Play-Abos auf Wieder abonnieren klickst in der Mitte. Dadurch wird ein neues Abo- und Kauftoken generiert.

<ph type="x-smartling-placeholder">
</ph> im Bereich „Abos“ in der Google Play Store App
            gekündigtes und abgelaufenes Abo mit erneutem Abonnieren und Entfernen
            Schaltflächen
Abbildung 9: Konto > Abos Bereich in der Google Play Store App, der eine stornierte und eine abgelaufene mit Wieder abonnieren und Entfernen Schaltflächen.

Das erneute Abschließen eines Abos gilt als Out-of-App-Kauf. die Best Practices für Käufe, die nicht in Ihrer App getätigt wurden.

Dein Abo bewerben

Sie können Gutscheincodes erstellen, um ausgewählten Nutzern einen verlängerten kostenlosen Testzeitraum zu gewähren. auf ein bestehendes Abo. Weitere Informationen finden Sie unter Gutscheincodes:

Bei kostenlosen Testzeiträumen überprüft Google Play, ob der Nutzer eine gültige Zahlungsmethode hat bevor du den kostenlosen Testzeitraum startest. Einige Nutzer sehen diese Bestätigung möglicherweise als Zahlungsaussetzung oder zur Belastung der Zahlungsmethode verwendet wird. Diese Vorautorisierung oder Belastung ist und wird später rückgängig gemacht oder erstattet.

Nach Ablauf des Testzeitraums wird die Zahlungsmethode des Nutzers mit den vollen Abobetrag.

Wenn ein Nutzer ein Abo während der kostenlosen Testphase kündigt, bleibt das Abo bis zum Ende des Testzeitraums aktiv und es werden keine nach Ablauf des kostenlosen Testzeitraums in Rechnung gestellt.

Stornieren, erstatten oder widerrufen

Sie können die Google Play Developer API bis abbrechen, Erstattung, oder Widerrufen ein Abo abschließen. Diese Funktion ist auch in der Google Play Console

  • Kündigen: Nutzer können Abos bei Google Play kündigen. Sie können auch Nutzern die Möglichkeit bieten, das Abo in Ihrer App oder auf Ihrer Website zu kündigen. Ihr wie in der App beschrieben, Kündigungen:
  • Erstattung: Nach der Erstattung kann der Nutzer das Abo weiter nutzen. Erstattungen können beispielsweise verwendet werden, wenn ein technischer Fehler aufgetreten ist, hat den Nutzer daran gehindert, auf Ihr Produkt zuzugreifen, aber der Fehler wurde behoben. Wenn Sie einen höheren Betrag als die letzte Zahlung zurückerstatten möchten oder eine teilweise Erstattung veranlassen möchten, müssen Sie die Google Play Console verwenden.
  • Widerrufen: Wenn Sie den Zugriff widerrufen, verliert der Nutzer sofort den Zugriff auf die Abo. Diese Methode kann beispielsweise verwendet werden, wenn ein technisches Problem aufgetreten ist Fehler, durch den der Nutzer nicht auf Ihr Produkt zugreifen konnte, und der Nutzer das Produkt nicht mehr verwenden möchte. Ihre App sollte diese wie in den Widerrufe:

In der folgenden Tabelle sind die Unterschiede zwischen Stornierung, Erstattung und Widerrufen.

Verlängerung beenden Geld zurückerstatten Zugriff widerrufen
<ph type="x-smartling-placeholder"></ph> Abbrechen Ja Nein Nein
<ph type="x-smartling-placeholder"></ph> Erstattung Nein Ja Nein
<ph type="x-smartling-placeholder"></ph> Widerrufen Ja Ja Ja

Abrechnung für einen Abonnenten aufschieben

Sie können das nächste Abrechnungsdatum für einen sich automatisch verlängernden Abonnenten mit Purchases.subscriptions:defer aus der Google Play Developer API. Während des Aufschubzeitraums hat Ihre Inhalte mit uneingeschränktem Zugriff abonniert, Ihnen werden jedoch keine Kosten in Rechnung gestellt. Die Das Verlängerungsdatum des Abos wird entsprechend aktualisiert.

Bei Prepaid-Tarifen können Sie die Defer Billing API verwenden, um den Ablauf zu verschieben .

Die nachträgliche Abrechnung bietet Ihnen folgende Möglichkeiten:

  • Bieten Sie Nutzern kostenlosen Zugriff im Rahmen eines Angebots, z. B. eine Woche geschenkt für oder beim Kauf eines Films.
  • Gewähren Sie Kunden aus Kulanzgründen kostenlosen Zugang.

Die Abrechnung kann um einen Tag und ein Jahr aufgeschoben werden. pro API-Aufruf. Wenn Sie die Abrechnung noch weiter verschieben möchten, können Sie die API noch einmal aufrufen vor dem neuen Abrechnungsdatum.

Zum Beispiel hat Darcy ein Monatsabo für Online-Inhalte für die Fishing Quarterly App. Normalerweise werden ihr am ersten Tag jeweils 1,25 € in Rechnung gestellt. Monat. Im März nahm sie an einer Onlineumfrage für den App-Publisher teil. Der Publisher belohnt sie mit sechs kostenlosen Wochen, indem er die nächste Zahlung aufschiebt. bis zum 15. Mai, also sechs Wochen nach ihrem zuvor geplanten Abrechnungsdatum. ab dem 1. April Darcy wird für April oder Anfang Mai nichts berechnet und trotzdem auf die Inhalte zugreifen kann. Am 15. Mai wird ihr der normale Betrag von 1, 25 € in Rechnung gestellt. Abogebühr für den Monat. Die nächste Verlängerung ist nun der 15. Juni.

Beim Zurückstellen kann es sinnvoll sein, den Nutzer per E-Mail oder in der App zu benachrichtigen. , um ihn über die Änderung des Abrechnungsdatums zu informieren.

Umgang mit abgelehnten Zahlungen

Wenn bei einer Aboverlängerung Zahlungsprobleme auftreten, regelmäßig versuchen, das Abonnement vor der Kündigung für einige Zeit zu verlängern. Dieser Wiederherstellungszeitraum kann aus einem Kulanzzeitraum bestehen, gefolgt von einer Kontosperre. Punkt. In diesem Zeitraum sendet Google E-Mails und Benachrichtigungen an den Nutzer. und fordert ihn auf, seine Zahlungsmethode zu aktualisieren.

Bei einer Zahlungsablehnung beginnt für das Abo eine Kulanzfrist. Punkt, falls einer konfiguriert. Während des Kulanzzeitraums sollten Sie sicherstellen, dass der Nutzer weiterhin Zugriff hat auf die Aboberechtigungen.

Nach Ablauf eines Kulanzzeitraums wird das Abo in einem Konto Hold-Zeitraum. Währenddessen Kontosperre aktiviert haben, solltet ihr darauf achten, dass der Nutzer keinen Zugriff auf die Aboberechtigungen.

Sie können die Dauer des Kulanzzeitraums für jedes Basis-Abo mit automatischer Verlängerung festlegen und in der Google Play Console. Angabe von Längen unter der Standardwerte können die Anzahl der Abos verringern, die nach einer Zahlung wiederhergestellt werden können Ablehnungen.

Um die Wahrscheinlichkeit einer Wiederherstellung des Abos während einer Zahlungsablehnung zu maximieren, können Sie den Nutzer über ein Zahlungsproblem informieren und ihn bitten, es zu beheben.

Sie können dies selbst tun, wie in der Kulanz Punkt und Kontosperre oder die In-App-Messaging-API implementieren, mit der Google eine Nachricht an die Nutzer in Ihrer App zu senden.

In-App-Messaging

Wenn Sie In-App-Messaging mit InAppMessageCategoryId.TRANSACTIONAL, Google Play zeigt Nutzern während des Kulanzzeitraums und einer Kontosperre einmal Nachrichten an pro Tag ein und bieten ihnen die Möglichkeit, ihre Zahlung zu korrigieren, ohne die App zu verlassen.

<ph type="x-smartling-placeholder">
</ph> Snackbar, die den Nutzer auffordert, die Zahlung zu korrigieren
Abbildung 20. Snackbar, in der der Nutzer aufgefordert wird, das Problem mit der Zahlung zu beheben.

Wir empfehlen, diese API jedes Mal aufzurufen, wenn der Nutzer die App öffnet, um festzustellen, ob die Mitteilung angezeigt werden soll.

Wenn der Nutzer sein Abo erfolgreich wiederhergestellt hat, erhältst du den Antwortcode: SUBSCRIPTION_STATUS_UPDATED zusammen mit einem Kauftoken. Verwende dann dieses Kauftoken, um die Google Play Developer API und aktualisieren Sie den Abostatus in Ihrer App.

In-App-Messaging einbinden

Um dem Nutzer In-App-Benachrichtigungen anzuzeigen, verwenden Sie BillingClient.showInAppMessages()

Hier ist ein Beispiel für das Auslösen des In-App-Messaging-Vorgangs:

Kotlin

val inAppMessageParams = InAppMessageParams.newBuilder()
        .addInAppMessageCategoryToShow(InAppMessageCategoryId.TRANSACTIONAL)
        .build()

billingClient.showInAppMessages(activity,
        inAppMessageParams,
        object : InAppMessageResponseListener() {
            override fun onInAppMessageResponse(inAppMessageResult: InAppMessageResult) {
                if (inAppMessageResult.responseCode == InAppMessageResponseCode.NO_ACTION_NEEDED) {
                    // The flow has finished and there is no action needed from developers.
                } else if (inAppMessageResult.responseCode
                        == InAppMessageResponseCode.SUBSCRIPTION_STATUS_UPDATED) {
                    // The subscription status changed. For example, a subscription
                    // has been recovered from a suspend state. Developers should
                    // expect the purchase token to be returned with this response
                    // code and use the purchase token with the Google Play
                    // Developer API.
                }
            }
        })

Java

InAppMessageParams inAppMessageParams = InAppMessageParams.newBuilder()
        .addInAppMessageCategoryToShow(InAppMessageCategoryId.TRANSACTIONAL)
        .build();

billingClient.showInAppMessages(activity,
        inAppMessageParams,
        new InAppMessageResponseListener() {
            @Override
            public void onInAppMessageResponse(InAppMessageResult inAppMessageResult) {
                if (inAppMessageResult.responseCode
                        == InAppMessageResponseCode.NO_ACTION_NEEDED) {
                    // The flow has finished and there is no action needed from developers.
                } else if (inAppMessageResult.responseCode
                        == InAppMessageResponseCode.SUBSCRIPTION_STATUS_UPDATED) {
                    // The subscription status changed. For example, a subscription
                    // has been recovered from a suspend state. Developers should
                    // expect the purchase token to be returned with this response
                    // code and use the purchase token with the Google Play
                    // Developer API.
                }
            }
        });

Ausstehende Abotransaktionen verarbeiten

Ausstehende Transaktionen können bei Erstkäufen, Aufladungen, Upgrades oder ein Downgrade ausführen. Der Abokauf beginnt mit dem SUBSCRIPTION_STATE_PENDING vor dem Wechsel zu SUBSCRIPTION_STATE_ACTIVE. Wenn die Transaktion abgelaufen ist oder vom wird an SUBSCRIPTION_STATE_PENDING_PURCHASE_EXPIRED weitergeleitet. Du musst Die Berechtigung des Nutzers sollte erst aktualisiert werden, nachdem die Transaktion durchgeführt wurde. abgeschlossen.

Änderung des Abostatus für Erstkauf mit ausstehenden Transaktionen ist ist ganz einfach. Deine App erhält den Status Purchase mit dem Status PENDING, wenn die Nutzer initiiert eine ausstehende Transaktion. Nach Abschluss der Transaktion wird Ihr App empfängt Purchase wieder mit dem Status PURCHASED. A SubscriptionNotification Nachricht vom Typ SUBSCRIPTION_PURCHASED wurde gesendet mit Ihrem RTDN-Client. Folgen Sie dem normalen Vorgang zur Bestätigung des Kaufs, geben Sie dem Nutzer Zugriff auf den Inhalt geben und den Kauf bestätigen. Wenn die Transaktion abläuft oder storniert wird, eine SubscriptionNotification-Nachricht vom Typ SUBSCRIPTION_PENDING_PURCHASE_CANCELED wird an deinen RTDN-Client gesendet. In solchen Fällen sollte der Nutzer niemals Zugang zu den Inhalten erhalten haben.

Das Aufladen, Upgrade oder Downgrade mit ausstehenden Transaktionen beinhaltet Statusänderungen sowohl für alte als auch für neue Abos. Wenn der Nutzer einen ausstehenden Auflade-, Upgrade- oder Downgrade-Transaktion durchführen, erhält deine App Purchase für das alte Abo mit einem PendingPurchaseUpdate-Objekt. Zum jetzigen Zeitpunkt Nutzer besitzt noch das alte Abo und hat das neue Abo noch nicht erhalten. noch nicht abonniert haben. getProducts() und getPurchaseToken() werden im Das Objekt PendingPurchaseUpdate gibt die Produkt-IDs und das Kauftoken von das neue Abo abzuschließen. Wenn die Transaktion abgeschlossen ist, erhält Ihre App eine Purchase mit dem Kauftoken der obersten Ebene für das neue Abo und ist der Status auf PURCHASED gesetzt. Eine SubscriptionNotification-Nachricht vom Typ SUBSCRIPTION_PURCHASED wird an deinen RTDN-Client gesendet. Derzeit müssen Sie das alte Kauftoken durch das neue Kauftoken ersetzen und den Zugriff des Nutzers auf die Inhalte. Wenn die Transaktion abläuft oder abgebrochen wird, gilt Folgendes: SubscriptionNotification Nachricht vom Typ SUBSCRIPTION_PENDING_PURCHASE_CANCELED wird an deinen RTDN-Client gesendet. In solchen Fällen sollte der Nutzer weiterhin Zugriff auf den Inhalt des alten Abonnements haben.