REST Resource: purchases.subscriptions

Ressource: SubscriptionPurchase

Eine SubscriptionPurchase-Ressource gibt den Status des Abo-Kaufs eines Nutzers an.

JSON-Darstellung
{
  "kind": string,
  "startTimeMillis": string,
  "expiryTimeMillis": string,
  "autoResumeTimeMillis": string,
  "autoRenewing": boolean,
  "priceCurrencyCode": string,
  "priceAmountMicros": string,
  "introductoryPriceInfo": {
    object (IntroductoryPriceInfo)
  },
  "countryCode": string,
  "developerPayload": string,
  "paymentState": integer,
  "cancelReason": integer,
  "userCancellationTimeMillis": string,
  "cancelSurveyResult": {
    object (SubscriptionCancelSurveyResult)
  },
  "orderId": string,
  "linkedPurchaseToken": string,
  "purchaseType": integer,
  "priceChange": {
    object (SubscriptionPriceChange)
  },
  "profileName": string,
  "emailAddress": string,
  "givenName": string,
  "familyName": string,
  "profileId": string,
  "acknowledgementState": integer,
  "externalAccountId": string,
  "promotionType": integer,
  "promotionCode": string,
  "obfuscatedExternalAccountId": string,
  "obfuscatedExternalProfileId": string
}
Felder
kind

string

Dieser Typ stellt ein „subscriptionPurchase“-Objekt im androidpublisher-Dienst dar.

startTimeMillis

string (int64 format)

Zeitpunkt, zu dem das Abo gewährt wurde, in Millisekunden seit der Epoche.

expiryTimeMillis

string (int64 format)

Zeitpunkt, zu dem das Abo abläuft, in Millisekunden seit der Epoche.

autoResumeTimeMillis

string (int64 format)

Zeitpunkt, zu dem das Abo automatisch reaktiviert wird, in Millisekunden seit der Epoche. Wird nur angezeigt, wenn der Nutzer das Abo pausieren möchte.

autoRenewing

boolean

Gibt an, ob das Abo automatisch verlängert wird, wenn es abläuft.

priceCurrencyCode

string

ISO 4217-Währungscode für den Abopreis. Wenn der Preis beispielsweise in britischen Pfund angegeben ist, lautet priceCurrencyCode „GBP“.

priceAmountMicros

string (int64 format)

Preis des Abos. In Ländern, in denen Steuern nicht im Preis enthalten sind, wird der Preis ohne Steuern angegeben. In Ländern, in denen Steuern im Preis enthalten sind, wird der Preis inklusive Steuern angezeigt. Der Preis wird in Mikroeinheiten angegeben, wobei 1.000.000 Mikroeinheiten einer Währungseinheit entsprechen. Wenn der Abopreis beispielsweise 1, 99 € beträgt, ist „priceAmountMicros“ gleich 1990000.

introductoryPriceInfo

object (IntroductoryPriceInfo)

Informationen zum Einführungspreis des Abos. Ist nur vorhanden, wenn das Abo zu einem Einführungspreis gekauft wurde.

Dieses Feld gibt nicht an, ob für das Abo derzeit ein Abrechnungszeitraum zum Einführungspreis gilt.

countryCode

string

ISO 3166-1 Alpha-2-Ländercode für das Abrechnungsland des Nutzers zum Zeitpunkt der Gewährung des Abos.

developerPayload

string

Ein vom Entwickler angegebener String mit zusätzlichen Informationen zu einer Bestellung.

paymentState

integer

Der Zahlungsstatus des Abos. Mögliche Werte: 0. Zahlung ausstehend 1. Zahlung erhalten 2. Kostenloser Testzeitraum 3 Aufgeschobenes Upgrade/Downgrade ausstehend

Für gekündigte oder abgelaufene Abos nicht vorhanden.

cancelReason

integer

Der Grund, warum ein Abo gekündigt wurde oder nicht automatisch verlängert wird. Mögliche Werte: 0. Der Nutzer hat das Abo 1 gekündigt. Das Abo wurde vom System gekündigt, z. B. aufgrund eines Abrechnungsproblems. Das Abo wurde durch ein neues Abo 3 ersetzt. Das Abo wurde vom Entwickler gekündigt

userCancellationTimeMillis

string (int64 format)

Der Zeitpunkt, zu dem das Abo vom Nutzer gekündigt wurde, in Millisekunden seit der Epoche. Wird nur angezeigt, wenn „cancelReason“ = 0 ist.

cancelSurveyResult

object (SubscriptionCancelSurveyResult)

Informationen, die der Nutzer angibt, wenn er den Ablauf zum Kündigen des Abos abschließt (Umfrage zum Kündigungsgrund).

orderId

string

Die Bestell-ID der letzten wiederkehrenden Bestellung, die mit dem Kauf des Abos verknüpft ist. Wenn das Abo gekündigt wurde, weil die Zahlung abgelehnt wurde, ist dies die Bestell-ID der Bestellung, bei der die Zahlung abgelehnt wurde.

linkedPurchaseToken

string

Das Kauf-Token des ursprünglichen Kaufs, wenn es sich bei diesem Abo um eines der folgenden handelt: 0. Erneute Registrierung für ein gekündigtes, aber nicht abgelaufenes Abo 1. Upgrade/Downgrade von einem vorherigen Abo

Angenommen, ein Nutzer registriert sich und Sie erhalten das Kauf-Token X. Dann kündigt der Nutzer und durchläuft den Registrierungsvorgang noch einmal (bevor sein Abo abläuft). Sie erhalten das Kauf-Token Y. Schließlich führt der Nutzer ein Upgrade seines Abos durch und Sie erhalten das Kauf-Token Z. Wenn Sie diese API mit dem Kauf-Token Z aufrufen, wird dieses Feld auf Y gesetzt. Wenn Sie diese API mit dem Kauf-Token Y aufrufen, wird dieses Feld auf X gesetzt. Wenn Sie diese API mit dem Kauf-Token X aufrufen, wird dieses Feld nicht festgelegt.

purchaseType

integer

Die Art des Kaufs des Abos. Dieses Feld wird nur festgelegt, wenn dieser Kauf nicht über den Standard-In-App-Abrechnungsablauf erfolgt ist. Mögliche Werte: 0. Test (d.h. über ein Lizenztestkonto gekauft) 1. Gutschein (d.h. mit einem Gutscheincode gekauft)

priceChange

object (SubscriptionPriceChange)

Die neuesten Informationen zu Preisänderungen. Diese Option ist nur verfügbar, wenn eine bevorstehende Preisänderung für das Abo noch nicht angewendet wurde.

Sobald das Abo zum neuen Preis verlängert oder gekündigt wurde, werden keine Informationen zur Preisänderung mehr zurückgegeben.

profileName

string

Der Profilname des Nutzers zum Zeitpunkt des Abo-Kaufs. Wird nur bei Käufen über „Abonnieren mit Google“ angezeigt.

emailAddress

string

Die E-Mail-Adresse des Nutzers zum Zeitpunkt des Abokaufs. Nur bei Käufen über „Abonnieren mit Google“ vorhanden.

givenName

string

Der Vorname des Nutzers, als das Abo gekauft wurde. Wird nur bei Käufen über „Abonnieren mit Google“ angezeigt.

familyName

string

Der Nachname des Nutzers zum Zeitpunkt des Abo-Kaufs. Wird nur bei Käufen über „Abonnieren mit Google“ angezeigt.

profileId

string

Die Google-Profil-ID des Nutzers zum Zeitpunkt des Kaufs des Abos. Wird nur bei Käufen über „Abonnieren mit Google“ angezeigt.

acknowledgementState

integer

Der Bestätigungsstatus des Aboprodukts. Mögliche Werte: 0. Noch nicht bestätigt 1. Bestätigt

externalAccountId

string

Nutzerkonto-ID im Drittanbieterdienst. Wird nur angezeigt, wenn die Kontoverknüpfung im Rahmen des Abo-Kaufvorgangs erfolgt ist.

promotionType

integer

Der Typ des Angebots, das auf diesen Kauf angewendet wurde. Dieses Feld wird nur festgelegt, wenn beim Kauf des Abos ein Angebot angewendet wurde. Mögliche Werte: 0. Einmalcode 1 Vanity-Code

promotionCode

string

Der für diesen Kauf verwendete Gutscheincode. Dieses Feld wird nur festgelegt, wenn beim Kauf des Abos ein Aktionscode angewendet wurde.

obfuscatedExternalAccountId

string

Eine verschleierte Version der ID, die eindeutig mit dem Konto des Nutzers in Ihrer App verknüpft ist. Sie ist bei den folgenden Käufen vorhanden: * Wenn die Kontoverknüpfung im Rahmen des Abo-Kaufvorgangs erfolgt ist. * Sie wurde beim Kauf mit https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid angegeben.

obfuscatedExternalProfileId

string

Eine verschleierte Version der ID, die eindeutig mit dem Profil des Nutzers in Ihrer App verknüpft ist. Nur vorhanden, wenn sie beim Kauf mit https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid angegeben wurde.

IntroductoryPriceInfo

Enthält die Informationen zum Einführungspreis für ein Abo.

JSON-Darstellung
{
  "introductoryPriceCurrencyCode": string,
  "introductoryPriceAmountMicros": string,
  "introductoryPricePeriod": string,
  "introductoryPriceCycles": integer
}
Felder
introductoryPriceCurrencyCode

string

ISO 4217-Währungscode für den Einführungspreis des Abos. Wenn der Preis beispielsweise in britischen Pfund angegeben ist, lautet priceCurrencyCode „GBP“.

introductoryPriceAmountMicros

string (int64 format)

Der Einführungspreis des Abos ohne Steuern. Die Währung ist dieselbe wie priceCurrencyCode. Der Preis wird in Mikroeinheiten angegeben, wobei 1.000.000 Mikroeinheiten einer Einheit der Währung entsprechen. Wenn der Abopreis beispielsweise 1, 99 € beträgt, ist „priceAmountMicros“ gleich 1990000.

introductoryPricePeriod

string

Zeitraum des Einführungspreises im ISO 8601-Format. Häufige Werte sind unter anderem „P1W“ (eine Woche), „P1M“ (ein Monat), „P3M“ (drei Monate), „P6M“ (sechs Monate) und „P1Y“ (ein Jahr).

introductoryPriceCycles

integer

Die Anzahl der Abrechnungszeiträume, für die der Einführungspreis angeboten wird.

SubscriptionCancelSurveyResult

Informationen, die der Nutzer angibt, wenn er den Ablauf zum Kündigen des Abos abschließt (Umfrage zum Kündigungsgrund).

JSON-Darstellung
{
  "cancelSurveyReason": integer,
  "userInputCancelReason": string
}
Felder
cancelSurveyReason

integer

Der Kündigungsgrund, den der Nutzer in der Umfrage ausgewählt hat. Mögliche Werte: 0. Sonstiges 1 Ich nutze diesen Dienst zu selten. Technische Probleme 3. Aus Kostengründen 4. Weil ich eine bessere App gefunden habe

userInputCancelReason

string

Der benutzerdefinierte Grund für die Kündigung der Eingabe durch den Nutzer. Nur vorhanden, wenn „cancelReason“ = 0.

SubscriptionPriceChange

Enthält die Informationen zur Preisänderung für ein Abo, mit denen der Nutzerablauf für die Preisänderung in der App gesteuert werden kann. Das kann in Form einer Bestätigung durch den Nutzer oder einer Anpassung der Nutzerfreundlichkeit für eine erfolgreiche Conversion erfolgen.

JSON-Darstellung
{
  "newPrice": {
    object (Price)
  },
  "state": integer
}
Felder
newPrice

object (Price)

Der neue Preis, zu dem das Abo verlängert wird, wenn der Nutzer die Preisänderung akzeptiert.

state

integer

Der aktuelle Status der Preisänderung. Mögliche Werte: 0. Ausstehend: Status für eine ausstehende Preisänderung, die darauf wartet, dass der Nutzer zustimmt. In diesem Status können Sie optional die In-App API verwenden, um die Bestätigung des Nutzers einzuholen. 1. Akzeptiert: Status für eine akzeptierte Preisänderung. Das Abo wird verlängert, sofern es nicht gekündigt wird. Die Preisänderung wird an einem zukünftigen Datum wirksam, wenn das Abo verlängert wird. Die Änderung erfolgt möglicherweise nicht bei der nächsten Aboverlängerung.

Methoden

acknowledge

Bestätigt einen Abo-Kauf.

cancel

Kündigt den Kauf eines Abos durch einen Nutzer.

defer

Verschiebt den Abo-Kauf eines Nutzers auf einen bestimmten zukünftigen Ablaufzeitpunkt.

get
(deprecated)

Eingestellt: Verwenden Sie stattdessen „purchases.subscriptionsv2.get“.

refund
(deprecated)

Nicht mehr unterstützt: Verwenden Sie stattdessen „orders.refund“.

revoke
(deprecated)

Eingestellt: Verwenden Sie stattdessen „purchases.subscriptionsv2.revoke“.

Fehlercodes

Die Vorgänge dieser Ressource geben die folgenden HTTP-Fehlercodes zurück:

Fehlercode Grund Beschreibung Auflösung
400 / 410 subscriptionExpired Das Abo ist abgelaufen und der angeforderte Vorgang kann nicht ausgeführt werden. Prüfen Sie das Ablaufdatum des Abos. Dieser Vorgang ist für abgelaufene Abos nicht zulässig.
400 subscriptionInvalidArgument In der Anfrage für das Abo wurde ein ungültiges Argument angegeben. Sehen Sie in der API-Dokumentation nach, ob alle erforderlichen Felder angegeben und korrekt formatiert sind.
400 invalidPurchaseState Der Kauf hat keinen gültigen Status für den angeforderten Vorgang. Möglicherweise versuchen Sie, einen bereits genutzten Kauf zu bestätigen oder ein Abo zu kündigen, das nicht aktiv ist. Prüfen Sie den aktuellen Status der Ressource mit der entsprechenden Get API, bevor Sie den Vorgang ausführen. Achten Sie darauf, dass sich die Ressource in einem geeigneten Zustand für die Aktion befindet.
400 invalidValue In der Anfrage wurde ein ungültiger Wert angegeben. Dieser Fehler wird häufig zurückgegeben, wenn das Kauf-Token fehlerhaft oder ungültig ist. Korrigieren Sie den ungültigen Feldwert im Anfragetext oder in den Parametern anhand der API-Referenz.
400 prepaidSubscriptionNotSupported Der angeforderte Vorgang wird für Prepaid-Abos nicht unterstützt. Prüfen Sie, ob der Vorgang für den Abotyp gilt. Dieser Fehler tritt nur bei Methoden wie „Cancel“, „Defer“, „Refund“ oder „Revoke“ auf.
400 productNotOwnedByUser Das angegebene Kauf-Token ist gültig, der Nutzer besitzt das Produkt aber derzeit nicht. Das kann passieren, wenn der Kauf vor der Bestätigung erstattet, widerrufen oder abgelaufen ist. Prüfen Sie den aktuellen Status der Ressource mit der entsprechenden Get API, bevor Sie den Vorgang ausführen. Achten Sie darauf, dass sich die Ressource in einem geeigneten Zustand für die Aktion befindet.
400 purchaseTokenMismatch Das angegebene Kauf-Token stimmt nicht mit dem Kauf, dem Paketnamen, der Abo-ID oder der Produkt-ID überein. Prüfen Sie, ob alle Angaben im Antrag korrekt sind und zueinander passen.
400 required In der Anfrage fehlt ein erforderliches Feld oder ein erforderlicher Parameter. In der API-Dokumentation finden Sie Informationen dazu, ob alle Pflichtfelder und ‑parameter enthalten sind.
400 unsupportedIabType Der Vorgang wird für den angegebenen In-App-Abrechnungstyp nicht unterstützt. Achten Sie darauf, dass die API-Methode mit dem verwalteten Elementtyp kompatibel ist.
403 userInsufficientPermission Der Nutzer hat nicht die erforderlichen Berechtigungen, um den angeforderten Vorgang auszuführen. Prüfen Sie, ob der authentifizierte Nutzer die erforderlichen Berechtigungen in der Google Play Console hat. Weitere Informationen finden Sie unter Dienstkonto verwenden.
404 notFound Die angeforderte Ressource wurde nicht gefunden. Prüfen Sie, ob die Kennzeichnungen (z.B. Kauf-Token, Paketname, Produkt-ID, Abo-ID) korrekt sind.
409 concurrentUpdate Es wurde versucht, ein Objekt zu aktualisieren, das gleichzeitig aktualisiert wird. Wiederholen Sie die Anfrage mit exponentiellem Backoff. Vermeiden Sie gleichzeitige Änderungen an derselben Ressource.
410 purchaseTokenNoLongerValid Das Kauf-Token ist dauerhaft ungültig, weil das zugehörige Nutzerkonto gelöscht wurde oder der Kaufdatensatz nicht mehr vorhanden ist. Verwenden Sie dieses Kauf-Token nicht mehr.
410 subscriptionNoLongerAvailable Der Abo-Kauf kann nicht mehr abgefragt werden, da er schon zu lange abgelaufen ist. Diese Fehlermeldung weist darauf hin, dass das Abo seit mehr als 60 Tagen abgelaufen ist. Sie sollten diese Abos nicht mehr abfragen.
5xx Generic error Allgemeiner Fehler auf dem Google Play-Server. Wiederholen Sie Ihre Anfrage.

Wenn das Problem weiterhin besteht, wenden Sie sich an Ihren Google Play-Kundenbetreuer oder senden Sie eine Supportanfrage. Prüfen Sie im Play-Status-Dashboard, ob bekannte Ausfälle vorliegen.