- Ressource: SubscriptionPurchase
- IntroductoryPriceInfo
- SubscriptionCancelSurveyResult
- SubscriptionPriceChange
- Methoden
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 ( |
| Felder | |
|---|---|
kind |
Dieser Typ stellt ein „subscriptionPurchase“-Objekt im androidpublisher-Dienst dar. |
startTimeMillis |
Zeitpunkt, zu dem das Abo gewährt wurde, in Millisekunden seit der Epoche. |
expiryTimeMillis |
Zeitpunkt, zu dem das Abo abläuft, in Millisekunden seit der Epoche. |
autoResumeTimeMillis |
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 |
Gibt an, ob das Abo automatisch verlängert wird, wenn es abläuft. |
priceCurrencyCode |
ISO 4217-Währungscode für den Abopreis. Wenn der Preis beispielsweise in britischen Pfund angegeben ist, lautet priceCurrencyCode „GBP“. |
priceAmountMicros |
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 |
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 |
ISO 3166-1 Alpha-2-Ländercode für das Abrechnungsland des Nutzers zum Zeitpunkt der Gewährung des Abos. |
developerPayload |
Ein vom Entwickler angegebener String mit zusätzlichen Informationen zu einer Bestellung. |
paymentState |
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 |
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 |
Der Zeitpunkt, zu dem das Abo vom Nutzer gekündigt wurde, in Millisekunden seit der Epoche. Wird nur angezeigt, wenn „cancelReason“ = 0 ist. |
cancelSurveyResult |
Informationen, die der Nutzer angibt, wenn er den Ablauf zum Kündigen des Abos abschließt (Umfrage zum Kündigungsgrund). |
orderId |
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 |
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 |
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 |
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 |
Der Profilname des Nutzers zum Zeitpunkt des Abo-Kaufs. Wird nur bei Käufen über „Abonnieren mit Google“ angezeigt. |
emailAddress |
Die E-Mail-Adresse des Nutzers zum Zeitpunkt des Abokaufs. Nur bei Käufen über „Abonnieren mit Google“ vorhanden. |
givenName |
Der Vorname des Nutzers, als das Abo gekauft wurde. Wird nur bei Käufen über „Abonnieren mit Google“ angezeigt. |
familyName |
Der Nachname des Nutzers zum Zeitpunkt des Abo-Kaufs. Wird nur bei Käufen über „Abonnieren mit Google“ angezeigt. |
profileId |
Die Google-Profil-ID des Nutzers zum Zeitpunkt des Kaufs des Abos. Wird nur bei Käufen über „Abonnieren mit Google“ angezeigt. |
acknowledgementState |
Der Bestätigungsstatus des Aboprodukts. Mögliche Werte: 0. Noch nicht bestätigt 1. Bestätigt |
externalAccountId |
Nutzerkonto-ID im Drittanbieterdienst. Wird nur angezeigt, wenn die Kontoverknüpfung im Rahmen des Abo-Kaufvorgangs erfolgt ist. |
promotionType |
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 |
Der für diesen Kauf verwendete Gutscheincode. Dieses Feld wird nur festgelegt, wenn beim Kauf des Abos ein Aktionscode angewendet wurde. |
obfuscatedExternalAccountId |
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 |
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 |
ISO 4217-Währungscode für den Einführungspreis des Abos. Wenn der Preis beispielsweise in britischen Pfund angegeben ist, lautet priceCurrencyCode „GBP“. |
introductoryPriceAmountMicros |
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 |
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 |
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 |
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 |
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 ( |
| Felder | |
|---|---|
newPrice |
Der neue Preis, zu dem das Abo verlängert wird, wenn der Nutzer die Preisänderung akzeptiert. |
state |
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 |
|
|---|---|
|
Bestätigt einen Abo-Kauf. |
|
Kündigt den Kauf eines Abos durch einen Nutzer. |
|
Verschiebt den Abo-Kauf eines Nutzers auf einen bestimmten zukünftigen Ablaufzeitpunkt. |
(deprecated) |
Eingestellt: Verwenden Sie stattdessen „purchases.subscriptionsv2.get“. |
(deprecated) |
Nicht mehr unterstützt: Verwenden Sie stattdessen „orders.refund“. |
(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. |