Abolebenszyklus

Abokäufe können während des hängt von vielen Faktoren ab, z. B. bei automatischen Verlängerungen, Ablehnungssituationen und Maßnahmen des Entwicklermanagements.

Lebenszyklus für sich automatisch verlängernde Abos verwalten

Wenn sich der Abostatus eines Nutzers ändert, empfängt Ihr Backend-Server eine SubscriptionNotification Nachricht

<ph type="x-smartling-placeholder">
</ph>
Abbildung 1: Lebenszyklusstatus und Übergangsereignisse für sich automatisch verlängernde Abokäufe.

Rufen Sie zum Aktualisieren des Status in Ihrem Back-End die Methode purchases.subscriptionsv2.get API mit dem in der Benachrichtigung enthaltenen Kauftoken. Dieser Endpunkt bietet aktuellen Abostatus mit einem Kauftoken. Er gilt als für die Aboverwaltung.

Das Kauftoken ist ab der Abo-Registrierung bis zu 60 Tage nach der Anmeldung gültig. Gültigkeit haben. Nach diesem Datum kann das Kauftoken nicht mehr für Folgendes verwendet werden: die Google Play Developer API aufzurufen.

Käufe von Abos, die sich automatisch verlängern

Wenn ein Nutzer ein Abo erwirbt, wird eine SubscriptionNotification-Nachricht mit Der Typ SUBSCRIPTION_PURCHASED wird an deinen RTDN-Client gesendet. Ob Sie oder einen neuen In-App-Kauf über PurchasesUpdatedListener oder manuell Käufe abrufen onResume()-Methode der App verwenden, sollten Sie den neuen Kauf in Ihrem sicheren Back-End. Gehen Sie hierzu folgendermaßen vor:

  1. Fragen Sie die purchases.subscriptionsv2.get Endpunkt eines Abonnements Ressource die den aktuellen Abostatus enthält.
  2. Stellen Sie sicher, dass der Wert des subscriptionState ist SUBSCRIPTION_STATE_ACTIVE.
  3. Bestätigen Sie den Kauf.
  4. Gewähren Sie dem Nutzer Zugriff auf die Inhalte. Das mit der kann mit dem Attribut ExternalAccountIdentifiers Objekt aus der Aboressource, wenn beim Kauf IDs festgelegt wurden Zeit mit setObfuscatedAccountId und setObfuscatedProfileId

Die Play Billing Library bietet auch eine Methode zur Bestätigung eines Abos, acknowledgePurchase(), und eine Methode zur Überprüfung des Bestätigungsstatus, isAcknowledged() Wir empfehlen Ihnen jedoch, die Kaufabwicklung im Backend für mehr Sicherheit.

Die Aboressource für neue Käufe sieht in etwa so aus: Beispiel:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  "startTime": "2022-04-22T18:39:58.270Z",
  "regionCode": "US",
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "latestOrderId": "GPA.3333-4137-0319-36762",
  "acknowledgementState": "ACKNOWLEDGEMENT_STATE_PENDING", // need to acknowledge new purchases
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ],
}

Verlängerung von Abos

Für Abos mit automatischer Verlängerung ohne Ratenzahlung: SUBSCRIPTION_RENEWED wird gesendet, wenn das Abo verlängert wird. Für Ratenzahlungen Abos, wird jedes Mal eine SUBSCRIPTION_RENEWED-Benachrichtigung gesendet, wird das Abo am Abrechnungsdatum in Rechnung gestellt. Stellen Sie sicher, dass sich der Nutzer und aktualisieren dann den Abostatus mit dem neuen expiryTime im Abo enthalten Ressource, die von Google Play zurückgegeben wird Developer API Die Aboressource sieht in etwa so aus:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  "startTime": "2022-04-22T18:39:58.270Z",
  "regionCode": "US",
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "latestOrderId": "GPA.3333-4137-0319-36762",
  "acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ]
}

Aboverlängerungen müssen nicht bestätigt werden.

Kulanzzeitraum

Bei Zahlungsproblemen mit einer Aboverlängerung benachrichtigt Google und versucht regelmäßig, das Abo vor dem läuft das Abo ab. Dieser Wiederherstellungszeitraum kann ein Kulanzzeitraum sein gefolgt von einer Kontosperre. Während eines Kulanzzeitraums muss der Nutzer weiterhin Zugriff auf die Aboberechtigung haben.

Die queryPurchasesAsync() werden weiterhin Käufe zurückgegeben, die im Kulanzzeitraum liegen. Wenn Ihre App verwendet queryPurchasesAsync, um zu prüfen, ob ein Nutzer Anspruch auf ein Abo abgeschlossen haben, sollte Ihre App Kulanzzeiträume automatisch verwalten, werden diese Abos in der Play Billing Library als aktiv angezeigt.

Wenn Sie den Abostatus mit Ihrem Backend synchronisieren, von Zahlungsablehnungen erhalten. Außerdem erhalten Sie mehr Kontext zur Reduzierung unfreiwilliger Abwanderung. Warte auf SubscriptionNotification Nachrichten mit dem Typ SUBSCRIPTION_IN_GRACE_PERIOD, um benachrichtigt zu werden, wenn der Nutzer eine Kulanzzeitraum. Während sich der Nutzer in einem Kulanzzeitraum befindet, wird das Abonnement Infomaterial enthält autoRenewEnabled = true. Google Play erweitert die expiryTime Wert, bis der Kulanzzeitraum abgelaufen ist, da die Berechtigung sollte so lange gültig sein, bis der Nutzer das Abo kündigt oder der Kulanzzeitraum Maximallänge. Der Wert des Feldes subscriptionState in diesem Zeitraum beträgt SUBSCRIPTION_STATE_IN_GRACE_PERIOD. Die Aboressource sieht ungefähr so aus: im folgenden Beispiel:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_IN_GRACE_PERIOD",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_future,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ],
}

Google Play informiert Nutzer im Kulanzzeitraum, dass ihre Zahlung abgelehnt wurde und fordert ihn auf, die Probleme mit der Zahlungsmethode im Play Store zu beheben. Wenn ein innerhalb eines Kulanzzeitraums für den Fall, dass der Fehler unfreiwillig war. Eine einfache Möglichkeit, Verwenden Sie hierzu das In-App-Messaging API hinzu. Wenn Sie diese API aufrufen, Wenn der Nutzer deine App öffnet, sieht er in einer vorübergehenden Snackbar, die den Nutzer darüber informiert, dass seine Zahlung abgelehnt wurde. Diese Nachricht enthält außerdem einen Deeplink, über den der Nutzer seine Zahlungsmethode auf Google korrigieren kann. Spielen.

Sobald der Nutzer seine Zahlungsmethode korrigiert hat, wird das Abo mit der ursprüngliches Verlängerungsdatum und können die Verlängerung wie in Verlängerungen:

Wenn der Nutzer seine Zahlungsmethode während des Kulanzzeitraums nicht korrigiert, wird das wird die Kontosperre aufgehoben und der Nutzer verliert die Berechtigung.

Zugriff auf den Kulanzzeitraum und Wiederherstellung

Abbildung 2 zeigt einen Zeitplan für ein Abo, für das ein Kulanzzeitraum gilt und wird wiederhergestellt, wenn der Nutzer seine Zahlungsmethode korrigiert. Nach dem Kulanzzeitraum endet, sollte der Nutzer seine Abovorteile verlieren und eine Kontosperre aktiviert haben.

<ph type="x-smartling-placeholder">
</ph>
Abbildung 2: Zeitachse für ein Abo, für das ein Kulanzzeitraum gilt und erholt sich vor dem Ende.

Beachten Sie die folgenden Punkte:

  • Während eines Kulanzzeitraums sollte der Nutzer weiterhin auf die Abovorteile zugreifen können.
  • Wenn ein Abo während eines Kulanzzeitraums wiederhergestellt wird, gilt das Verlängerungsdatum nicht zurückgesetzt.
  • Wenn Sie den Kulanzzeitraum erhöhen, z. B. von 7 auf 14 Tage, sich im Kulanzzeitraum befinden, erhalten erweiterten Zugriff auf die Abovorteile.
  • Wenn Sie den Kulanzzeitraum verkürzen, werden Nutzer, die sich weit genug in der alten Kulanzfrist befinden, nach Ablauf des Kulanzzeitraums ihre Abovorteile sofort widerrufen werden. Wenn Sie beispielsweise den Kulanzzeitraum von von 14 bis 7 Tagen hat, gilt für Nutzer, die zwischen 8 und 14 Tagen des alten werden die Abovorteile sofort widerrufen.
  • Das Abo bleibt aktiv und Sie erhalten keinen Kulanzzeitraum. RTDN-Zeitraum bis zum Ende des stillen Kulanzzeitraums

Stiller Kulanzzeitraum

Du kannst einen Kulanzzeitraum von 0 Tagen festlegen, aber Google Play wartet mindestens einen Tag, und dafür sorgen, dass genügend Zeit für Zahlungswiederholungen bleibt. Dieser stille Kulanzzeitraum bietet eine Sicherheitsnetz für die Zahlungsabwicklung. Während dieser 24 Stunden bleibt das Abo im ACTIVE

Um über Änderungen am Abostatus auf dem Laufenden zu bleiben, Entwicklerbenachrichtigungen in Echtzeit abhören und darauf reagieren Rufen Sie die Methode purchases.subscriptionsv2.get() auf die RTDN-Zeit statt auf die Ablaufzeit, um eine genauere Status des Abos.

Je nach Abostatus nach der 24-Stunden-Kulanzzeitraum angezeigt wird, solltest du eine der folgenden Benachrichtigungen erhalten:

  • SUBSCRIPTION_ON_HOLD (falls aktiviert)
  • SUBSCRIPTION_CANCELED (falls storniert)
  • SUBSCRIPTION_EXPIRED (falls abgelaufen)
  • SUBSCRIPTION_RENEWED (bei erfolgreicher Verlängerung)

Sie können die Methode subscriptionV2.get() auch jederzeit nach der 24-stündiger Kulanzzeitraum im Hintergrund, um den neuesten Status des Abos abzurufen.

Kontosperre

Bei Zahlungsproblemen bei einer Aboverlängerung nach einer Kulanzzeitraum abgelaufen ist, beginnt eine Kontosperre. Wenn ein eine Kontosperre durchläuft, solltest du den Zugriff auf das Abo blockieren. Berechtigung.

Während der Kontosperre sollten Sie etwaige Kündigungen, Wiederherstellungen oder Wiederholungen von Abos, falls erforderlich, da der Nutzer diese Änderungen vornehmen kann, während das Abo wird gehalten.

Anhand von Echtzeitbenachrichtigungen wirst du informiert, wenn für einen Nutzer eine Kontosperre beginnt, so schnell wie möglich darüber informieren, warum ihr Zugriff auf das Abo gesperrt wurde. Das geht ganz einfach über das In-App-Messaging API hinzu. Diese API wird aufgerufen, wenn Der Nutzer öffnet die App. Dem Nutzer wird eine Nachricht in einer temporären Snackbar angezeigt. informiert sie darüber, dass ihre Zahlung abgelehnt wurde. Diese Nachricht enthält auch einen Deeplink, über den der Nutzer seine Zahlungsmethode bei Google Play korrigieren kann.

Wenn Ihre Nutzer außerhalb Ihrer App auf Aboinhalte zugreifen können, feststellen, dass sie auf verschiedenen Oberflächen keinen Zugriff mehr haben. Vielleicht möchten Sie Push-Benachrichtigung oder E-Mail an den Nutzer, um ihn darüber zu informieren, Abo ist aufgrund einer abgelehnten Zahlung nicht mehr aktiv.

Das Abonnement wird vom queryPurchasesAsync() Kontosperre aktiviert. Wenn eure App diese Methode benötigt, um bestehende Käufe aktiviert haben, sollte die Kontosperre standardmäßig unterstützt werden.

Mit Echtzeit-Entwickler erhalten Sie eine SubscriptionNotification Nachricht vom Typ SUBSCRIPTION_ON_HOLD, wenn für ein Abo eine Kontosperre aktiviert wird. Anruf die purchases.subscriptionsv2.get von Ihrem sicheren Backend-Server, um das neue Abo abzurufen. Informationen. Während der Kontosperre das Feld expiryTime des Abos Ressource ist auf einen Zeitstempel in der Vergangenheit gesetzt und das Feld subscriptionState ist auf SUBSCRIPTION_STATE_ON_HOLD:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ON_HOLD",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_past,
      ...
    }
  ],
}

Um den Zugriff wiederherzustellen, müssen Nutzer ihre Zahlungsmethode korrigieren. Google Play informiert Nutzer einer abgelehnten Zahlung ausgesetzt sind, und bitten Sie den Kunden, das Problem zu beheben. ihre Zahlungsmethode.

Nachdem der Nutzer seine Zahlungsmethode korrigiert hat, wird das Abo wieder auf eine aktive und Sie müssen dann den Zugriff auf die abonnierten Inhalte wiederherstellen. In diesem Fall Das Kauftoken ist dasselbe wie vor Beginn der Kontosperre, weil der Kauf wieder erholt wird und du eine RTDN mit dem SUBSCRIPTION_RECOVERED

Bei Ratenabonnements kann es zu Zahlungsablehnungen und Wiedereinziehungen kommen aus folgenden Gründen: für jeden einzelnen Zahlungsversuch.

Nach der Wiederherstellung gibt die Play Billing Library das Abo über die Methode queryPurchasesAsync(). Wenn Sie mit dieser Methode feststellen, wenn ein Nutzer Anspruch auf ein Abo hat, sollte deine App wenn die Kontosperre aufgehoben wird.

Sie hören einen SubscriptionNotification Nachricht mit dem Typ SUBSCRIPTION_RECOVERED, um benachrichtigt zu werden, wenn ein Abo und der Nutzer sollte wieder Zugriff erhalten. Wenn Sie ein Abo abfragen Nach Erhalt dieser Benachrichtigung wird das Feld „expiryTime“ auf einen Zeitstempel gesetzt in der Zukunft liegen und das Feld subscriptionState auf Noch einmal SUBSCRIPTION_STATE_ACTIVE:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      ...
    }
  ],
}

Wenn der Nutzer seine Zahlungsmethode nicht vor Ende der Kontosperre korrigiert , erhältst du stattdessen ein RTDN vom Typ SUBSCRIPTION_CANCELED. Für Anweisungen zum Umgang mit einer Kündigung findest du unter Kündigungen. Wenn Sie nach einem auf diese Weise gekündigten Abonnement sucht, wird der zurückgegebene Das Feld expiryTime ist auf einen Zeitstempel in der Vergangenheit gesetzt:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_past,
      ...
    }
  ],
}

Unmittelbar nach der Benachrichtigung über die Kontoauflösung erhält auch eine RTDN vom Typ SUBSCRIPTION_EXPIRED, weil der Nutzer aus dem kostenpflichtigen Anspruch entfernt und das Abo ist mit der Kündigung abgewandert. Sie können wie gewohnt auf das Ablaufdatum reagieren.

Der Nutzer kann den Zugriff wiedererlangen, indem er dasselbe Abo oder eine beliebige andere Abos, die Sie über die App anbieten, während der bei ihrem ursprünglichen Kauf. In diesem Fall wird ein neues Kauftoken ausgegeben und der neuer Wert als Teil eines SUBSCRIPTION_PURCHASED-Ereignisses zurückgegeben wird, steht für diese neue Instanz.

Zugriff auf Kontosperre und Wiederherstellung

Abbildung 3 zeigt eine Zeitachse für ein Abo, für das eine Kontosperre gilt. wird wiederhergestellt, wenn der Nutzer seine Zahlungsmethode korrigiert.

<ph type="x-smartling-placeholder">
</ph>
Abbildung 3: Zeitachse für ein Abo, das in einen und wird wiederhergestellt, bevor sie endet.

Ähnlich wie im vorherigen Beispiel zeigt Abbildung 4 einen Zeitplan für ein Abo für die zuerst ein Kulanzzeitraum beginnt, bevor die Kontosperre aktiviert wird. erholt sich während der Warteschleife.

<ph type="x-smartling-placeholder">
</ph>
Abbildung 4: Zeitachse für ein Abo, für das ein Kulanzzeitraum gilt nach der Kontosperre aktiv und schließlich wiederhergestellt, bevor das Konto der Warteschleife zu Ende ist.

Beachten Sie die folgenden Punkte:

  • Bevor eine Kontosperre für ein Abo aktiviert wird, stellt Google Play zusätzliche bis zu 48 Stunden lang versucht, Ihre Zahlungsmethode zu belasten. Der Nutzer behält Abovorteile zu nutzen. Nach Ablauf dieses Zeitraums wird die Kontosperre aktiviert und der Nutzer Abovorteile zu nutzen.
  • Das Abo wird in die Kontosperre einbezogen, wenn es wird mit dem Status „Pausiert“ und einem fehlgeschlagenen Zahlungsmittel fortgesetzt.
  • Wenn die Kontosperre für ein Abo wiederhergestellt wird, wird das Verlängerungsdatum zurückgesetzt.

Ablauf

Nach Ablauf eines Abos sollte der Nutzer keinen Zugriff mehr darauf haben. A SubscriptionNotification Nachricht vom Typ SUBSCRIPTION_EXPIRED wurde gesendet in in diesem Fall. Wenn du diese Benachrichtigung erhältst, frage den Google Play-Entwickler API, um das neueste Abonnement zu erhalten Ressource. Nachdem Sie bestätigt haben, dass subscriptionState SUBSCRIPTION_STATE_EXPIRED ist, entfernen Sie die Berechtigung und registrieren den Kaufstatus in Ihrem Back-End. Die Aboressource sieht in etwa so aus:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": expiration_time_in_past,
      ...
    }
  ],
}

Kündigungen

Nutzer können Abos im Abocenter von Google Play freiwillig kündigen. oder ihr Abo wird automatisch gekündigt, wenn sie nach eine Kontosperre aktiv ist. Entwickler können auch eine Stornierung mit purchases.subscriptions.cancel Wenn ein Abo gekündigt wird, hat der Nutzer so lange Zugriff auf die Inhalte, bis bis zum Ende des aktuellen Abrechnungszeitraums. Nach Ablauf des Abrechnungszeitraums sollte der Zugriff widerrufen werden.

Die Kündigung eines Abos ohne Ratenzahlung und Verlängerung des Abos löst einen SUBSCRIPTION_CANCELED Benachrichtigung. Wann? erhalten Sie diese Benachrichtigung, wird das Abonnement Infomaterial die von der Google Play Developer API zurückgegeben wird, enthält das Feld subscriptionState. auf SUBSCRIPTION_STATE_CANCELED gesetzt ist und das Feld expiryTime den Datum, an dem der Nutzer den Zugriff auf das Abo verlieren sollte. Wenn dieses Datum in In der Vergangenheit sollte der Nutzer seine Berechtigung sofort verlieren. Das kann passieren, Beispiel: Wenn ein Nutzer ein Abo kündigt, während er ein Konto hat Zahlungsaussetzung aufgrund einer abgelehnten Zahlung.

Die Aboressource für einen stornierten Kauf sieht in etwa so aus: Beispiel:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": expiration_time,
      ...
    }
  ],
}

Bei Ratenabos eine SUBSCRIPTION_CANCELLATION_SCHEDULED wird bei einer vom Nutzer veranlassten Stornierung gesendet, wenn Zahlungen ausstehen für die Mindestlaufzeit. Die Stornierung steht noch aus und wird am Ende des aktuellen Zusicherungszeitraums. Wenn Sie diese Benachrichtigung erhalten, der von der Google Play Developer API zurückgegebene Aboressource enthält Das Feld "subscriptionState" wurde auf SUBSCRIPTION_STATE_ACTIVE festgelegt, da das Feld ist das Ratenabo bis zum Ende des Zusicherungszeitraums noch aktiv. Es ist jedoch ein leeres ausstehendes Abbruchobjekt vorhanden. Es wird eine SUBSCRIPTION_CANCELED-Benachrichtigung gesendet, gefolgt von einer SUBSCRIPTION_EXPIRED am Ende des Zusicherungszeitraums.

Die Aboressource für den Kauf eines Abos mit Ratenzahlung, das „Ausstehende Stornierung“ sieht in etwa so aus:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_plan01",
      "expiryTime": expiration_time,
      "autoRenewingPlan": {
        "autoRenewEnabled": true,
        "recurringPrice": {
          "currencyCode": "USD",
          "units": "1",
          "nanos": 990000000
        },
        "installmentDetails": {
          "initialCommittedPaymentsCount": 6,
          "remainingCommittedPaymentsCount": 5,
          "pendingCancellation": {}
      ...
        }
      }
    }
  ],
}

Im Feld canceledStateContext in der Aboressource finden Sie herausfinden, warum das Abo gekündigt wurde (z. B., ob das Abo vom Nutzer, vom System oder von Ihnen storniert wurde. Bisheriges Abo vom Nutzer storniert wurde, können Sie im Feld userInitiatedCancellation nachsehen, erfahren Sie, warum der Nutzer das Abo gekündigt hat. Dies kann bei der Kommunikation zu entwickeln.

Wenn ein Abo gekündigt, aber noch nicht abgelaufen ist, gilt Folgendes: immer noch von queryPurchasesAsync() Vielleicht möchten Sie in Ihrer App eine Nachricht mit dem Hinweis anzeigen, Abo gekündigt wurde und das Ablaufdatum angegeben ist.

Widerrufe

Ein Abo kann aus verschiedenen Gründen widerrufen werden, z. B. aufgrund Ihres Backends zum Widerrufen des Abos mithilfe von purchases.subscriptionsv2.revoke oder der Kauf wird zurückgebucht. Widerruft in diesem Fall das Berechtigung sofort erhalten. Eine SubscriptionNotification-Nachricht vom Typ In diesem Fall wird SUBSCRIPTION_REVOKED gesendet. Bei Erhalt dieser E-Mail Das Abonnement Infomaterial die von der Google Play Developer API zurückgegeben wird, enthält das Feld subscriptionState. auf SUBSCRIPTION_STATE_EXPIRED festgelegt.

Die Aboressource für einen widerrufenen Kauf sieht in etwa so aus: Beispiel:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": expiration_time,
      ...
    }
  ]
}

Aufgeschobene Abos

Es gibt eine Vielzahl von Gründen, warum Sie die Berechtigung. Vielleicht möchten Sie Nutzern kostenlosen Zugang als spezielle wenn Sie beispielsweise einen Film eine Woche lang kostenlos anbieten oder Zugang zu Kundschaft als Zeichen des Wohlwollens zu nutzen. Sie können die purchases.subscriptions.defer aus der Play Developer API aus, um die nächste Rechnungsstellung für eine sich automatisch verlängern. In diesem Fall wird ein SubscriptionNotification Nachricht vom Typ SUBSCRIPTION_DEFERRED gesendet. Während des Aufschubzeitraums Der Nutzer hat Ihre Inhalte mit vollem Zugriff abonniert, es fallen jedoch keine Kosten an. 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 Aboressource für ein verzögertes Abo sieht ähnlich aus wie die folgendes Beispiel:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_future,
      ...
    }
  ],
}

Pausierte Abos

Du kannst die absichtliche Abwanderung verringern, indem du Nutzern ermöglichst, ihr Abo zu pausieren. Wenn Sie die Funktion „Pausieren“ aktivieren, können Nutzer ihr Abo pausieren für einen Zeitraum zwischen einer Woche und drei Monaten, je nachdem, wiederkehrender Zeitraum.

Wiederholung von Abos Wöchentlich Monatlich Drei Monate Sechs Monate Jährlich
Verfügbare Pausenlängen* 1 Woche
2 Wochen
3 Wochen
4 Wochen
1 Monat
2 Monate
3 Monate
1 Monat
2 Monate
3 Monate
1 Monat
2 Monate
3 Monate
* Änderungen vorbehalten.

Eine Abo-Pause wird erst nach Ablauf des aktuellen Abrechnungszeitraums wirksam. Solange das Abo pausiert ist, hat der Nutzer keinen Zugriff auf das und zahlen nicht den Preis für die Verlängerung. Am Ende der Pause wird das Abo fortgesetzt und Google versucht, es zu verlängern. Ist die Fortsetzung erfolgreich, wird das Abo wieder aktiviert. Wenn die Fortsetzen aufgrund eines Zahlungsproblems fehlschlägt, wechselt der Nutzer in den Status der Kontosperre wie in den Abbildungen 5 und 6 dargestellt:

<ph type="x-smartling-placeholder">
</ph>
Abbildung 5: Eine nutzende Person macht eine Pause und setzt sie dann fort, Abo.
<ph type="x-smartling-placeholder">
</ph>
Abbildung 6. Ein Nutzer pausiert sein Abo und ruft Kontosperre.

Nutzer können das Abo auch jederzeit während der Laufzeit manuell fortsetzen. wie in Abbildung 6 dargestellt. Wenn ein Nutzer den Vorgang manuell fortsetzt, wird in das Datum für die manuelle Fortsetzung geändert.

Wenn das Abo eines Nutzers pausiert wird, wird die Play Billing Library nicht wieder angezeigt über das queryPurchasesAsync() . Wird das Abo fortgesetzt, wird die Methode queryPurchasesAsync() und gibt es erneut zurück.

Achte auf RTDNs, um zu erkennen, wenn ein Nutzer sein Abo pausiert. Diese können Sie die Nutzer in Ihrer App darüber informieren, hat sein Abo pausiert und hat keinen Zugriff mehr darauf. Sie sollten auch eine Nutzer können ihr Abo jederzeit manuell fortsetzen, indem sie eine Deeplink zu Google Play.

Eine SubscriptionNotification-Nachricht mit dem Typ SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED wird gesendet, wenn Ihr Nutzer sein Abo pausiert. Derzeit sollte der Nutzer weiterhin Zugriff auf ihr Abo bis zum nächsten Verlängerungsdatum zu verlängern und das Abonnement Infomaterial enthält autoRenewEnabled = true. Wert des Felds subscriptionState ist an diesem Punkt SUBSCRIPTION_STATE_ACTIVE.

Eine SubscriptionNotification-Nachricht vom Typ SUBSCRIPTION_PAUSED wird gesendet, wenn die die Pause in Kraft tritt. In diesem Fall sollte der Nutzer keinen Zugriff mehr auf seine Abo und die Aboressource enthält autoRenewEnabled = true, und das Feld subscriptionState auf SUBSCRIPTION_STATE_PAUSED gesetzt ist. Sie können um zu sehen, wann das Abo voraussichtlich wieder verlängert wird, indem Sie das PausedStateContext -Objekt enthält.

Eine SubscriptionNotification-Nachricht vom Typ SUBSCRIPTION_RENEWED wird gesendet, wenn Das Abo wird entweder automatisch am Ende der Pausierung fortgesetzt oder wenn der Nutzer das Abo manuell fortsetzen möchte. Diese sollten wie unter Verlängerungen beschrieben.

Eine SubscriptionNotification-Nachricht vom Typ SUBSCRIPTION_ON_HOLD wird gesendet, wenn Beim Versuch, das Abo nach der Pausierung fortzusetzen, ist ein Zahlungsfehler aufgetreten. Dies sollte wie unter Kontosperre beschrieben behandelt werden.

Erneut abonnieren

Für Basis-Abos mit automatischer Verlängerung wird im Google Play Store möglicherweise ein Schaltfläche Wieder abonnieren. Über diese Schaltfläche können Nutzer wieder Zugriff erhalten zu einem Abo. Sie kann aus verschiedenen Gründen nicht angezeigt werden, z. B. wenn ein Abo vor langer Zeit abgelaufen ist.

<ph type="x-smartling-placeholder">
</ph>
Abbildung 7: Konto > im Abschnitt „Abos“ der Seite Google Play Store App, auf der ein gekündigtes Abo mit einer Wieder abonnieren.

Obwohl die Schaltfläche immer mit Wieder abonnieren beschriftet ist, hängt ihre Funktionalität davon ab. vom Abostatus abhängig.

Wenn ein Abo gekündigt, aber noch nicht abgelaufen ist, ist der Nutzer immer noch und von Abovorteilen profitieren können. Wenn der Nutzer auf „Wieder abonnieren“ tippt, wird die Kündigung rückgängig gemacht und das Abo wird weiterhin verlängert. In der Google Play-Entwicklerdokumentation und in den APIs wird diese Aktion als Wiederherstellen bezeichnet.

Nachdem ein Abo mit automatischer Verlängerung abgelaufen ist, können Sie Nutzern den Kauf ermöglichen demselben Basis-Abo zu erhalten. Diese Aktion wird als Wieder abonnieren bezeichnet in Dokumentation und APIs für Google Play-Entwickler Sie können diese Option konfigurieren für jedes Basis-Abo in der Play Console oder die API verwenden.

Vor Ablauf wiederherstellen

Wenn Ihre App ausschließlich auf dem queryPurchasesAsync() um zu ermitteln, ob ein Nutzer Anspruch auf ein Abo hat, Wiederherstellungen automatisch verarbeiten, da die queryPurchasesAsync() werden stornierte Käufe weiterhin vor ihrem Ablaufdatum zurückgegeben. A das wiederhergestellte Abo so verlängert wird, als wäre es nicht gekündigt worden.

Wenn Ihre App den Abostatus mit einem Backend synchronisiert, sollten Sie beobachten, für SubscriptionNotification vom Typ SUBSCRIPTION_RESTARTED. Nachdem du diese RTDN erhalten hast, deine App auf die Benachrichtigung reagieren kann, aufzeichnen, dass das Abo jetzt abgeschlossen ist erneuert und es werden keine Wiederherstellungsmitteilungen mehr in Ihrer App angezeigt. Die Aboressource sieht in etwa so aus:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date
      ...
    }
  ],
}

Nach Ablauf des Abos wieder abonnieren

Wenn ein Basis-Abo mit automatischer Verlängerung über die Google Play Console oder die API konfiguriert wurde Damit Nutzer die Funktion „Wieder abonnieren“ nutzen können, können sie ein abgelaufenes Abo im Google Play Store

Das sind neue Käufe. Google Play gibt ein neues Kauftoken aus und das Backend eine RTDN vom Typ SUBSCRIPTION_PURCHASED empfängt. Kaufstatus enthält für diese Art von Out-of-App-Kauf keine linkedPurchaseToken die mit dem ursprünglichen Kauf verknüpft sind, ist vollständig abgelaufen. Dies sind neue Käufe, die von deinem Backend verwaltet werden müssen und bestätigen Sie wie jeden anderen Kauf.

Upgrades, Downgrades und ein neues Abo

Wenn ein Nutzer ein Upgrade oder Downgrade durchführt oder sich registriert, nachdem vor Ablauf des Abonnements kündigen, gilt die alte Das Abo wird ungültig und ein neues Abo wird erstellt mit um ein neues Kauftoken zu erhalten.

Darüber hinaus enthält das Abonnement Infomaterial von der Google Play Developer API zurückgegebene linkedPurchaseToken enthält das den alten Kauf angibt, über den der Nutzer ein Upgrade oder Downgrade durchgeführt hat oder ihr Abo neu abonnieren. Sie können das Kauftoken in diesem Feld verwenden, um das alte Abo abschließen und das bestehende Nutzerkonto identifizieren, damit Sie mit demselben Konto verknüpft sind.

Bevor Sie einem Nutzer in Ihrer App Upgrades, Downgrades oder erneute Abos anbieten, müssen Sie das bestehende Abo bestätigen. Beliebige Tarifänderung oder erneutes Abo wird blockiert, wenn die Bestätigung des vorhandenen Abos noch aussteht.

Wenn der Nutzer das Upgrade, Downgrade oder ein neues Abo erwirbt, Dies ist ein neuer Kauf, den Sie bestätigen müssen. Die empfohlene Methode Verwenden Sie dazu die Google Play Developer API. Die Aboressource sieht in etwa so aus:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "linkedPurchaseToken": old_purchase_token,
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ],
}

Preisänderungen

Weitere Informationen finden Sie im Best Practices-Leitfaden für Preisänderungen. . wenn es angebracht ist.

Wenn für bestehende Abonnenten Preisänderungen zustimmen werden, gilt Folgendes: eine RTDN erhalten hat, wenn der Nutzer den neuen Preis bestätigt oder ablehnt.

Nutzerbestätigung einer Opt-in-Preisänderung verarbeiten

Wenn ein Nutzer die Preiserhöhung für dein Abo akzeptiert, erhältst du eine SubscriptionNotification Nachricht vom Typ SUBSCRIPTION_PRICE_CHANGED_CONFIRMED. Mit einem Opt-out-Preis oder wenn die Preiserhöhung für das Abo verlängert wird, erhalten Sie eine SubscriptionNotification-Nachricht vom Typ SUBSCRIPTION_RENEWED. Das sollten Sie behandeln wie bei jeder anderen Verlängerung.

Umgang mit Fällen, in denen eine Opt-in-Preiserhöhung nicht akzeptiert wird

Wenn ein Nutzer Ihre Opt-in-Preiserhöhung nicht akzeptiert hat, bevor er verlängert werden muss zum höheren Preis abonniert, werden sie automatisch beendet und Sie erhalten eine SubscriptionNotification Nachricht vom Typ SUBSCRIPTION_CANCELED. Verarbeiten Sie dieses Ereignis wie in Kündigungen:

Nutzer können ihre Abos auch kündigen, um eine Opt-out-Preiserhöhung zu erhalten. mit demselben Mechanismus.

Lebenszyklus von Prepaid-Tarifen verwalten

Wie bei Abos mit automatischer Verlängerung müssen Sie Prepaid-Tarife bestätigen, bei jedem neuen Kauf. Bei Prepaid-Tarifen müssen Sie sowohl den Erstkauf als auch etwaige Aufladungen abzuwickeln, da die Nutzenden gesamten Kaufvorgang durchlaufen.

Aufgrund der kurzen Laufzeit von Prepaid-Tarifen ist es wichtig, den Kauf so schnell wie möglich bestätigen. Prepaid-Tarife mit einer Laufzeit von eine Woche oder länger müssen innerhalb von 3 Tagen bestätigt werden. Prepaid-Tarife mit einem Dauer von weniger als einer Woche muss innerhalb der Hälfte des Plans anerkannt werden Dauer Beispielsweise haben Entwickler 1,5 Tage Zeit, um den Kauf eines 3-Tage-Prepaid-Tarif.

<ph type="x-smartling-placeholder">
</ph>
Abbildung 8: Lebenszyklusstatus und Übergangsereignisse für für Abos.

Eine SubscriptionNotification-Nachricht mit dem Typ SUBSCRIPTION_PURCHASED an deinen RTDN-Client gesendet, Es wird ein Prepaid-Tarif abgeschlossen – inklusive jeder Aufladung. Rufen Sie die Methode purchases.subscriptionsv2.get Methode, um den aktuellen Status des Prepaid-Tarifs zu prüfen.

Für Aufladekäufe wird ein neues Kauftoken ausgegeben und Sie erhalten das vorherigen Kauftoken im Feld linkedPurchaseToken als Teil des neuen Status des Abokaufs Das Kauftoken ist für das Abo gültig sich bis 60 Tage nach Ablauf des Abonnements anzumelden. Nach diesem Datum wird das Kauftoken nicht mehr zum Aufrufen der Google Play Developer API gültig.

Die Aboressource für den Kauf eines Prepaid-Tarifs sieht in etwa so aus: folgendes Beispiel:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  "startTime": "2022-04-22T18:39:58.270Z",
  "regionCode": "US",
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "latestOrderId": "GPA.3333-4137-0319-36762",
  "acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
  "lineItems": [
    {
      "productId": "prepaid_plan01",
      "expiryTime": expiry_date,
      "prepaidPlan": {
        "allowExtendAfterTime": timestamp_after_which_topups_are_allowed
      }
    }
  ]
}

Im Feld expiryTime sehen Sie, wann die Berechtigung endet. Aufladen Käufe verlängern die Berechtigungszeit, indem sie sich ansammeln. Wenn also Der Nutzer zahlt auf, bevor seine ursprüngliche Berechtigung abgelaufen ist, wird die neue Zeit hinzugefügt. und zwar zusätzlich zum vorherigen Ablaufdatum.

Vielleicht möchten Sie in Ihrer App eine Nachricht mit dem Hinweis anzeigen, Prepaid-Abonnements können durch eine Aufladung verlängert werden. Um zu wissen, wann Nutzende Informationen zum Aufladen erhalten Sie im Feld allowExtendAfterTime im Abo .

Prepaid-Tarife werden nicht automatisch verlängert und können daher nicht gekündigt werden. Wenn Nutzende Kündigen eines Prepaid-Tarifs, können Sie warten, bis das Ablaufdatum erreicht ist.