REST Resource: purchases.subscriptions

Risorsa: SubscriptionPurchase

Una risorsa SubscriptionPurchase indica lo stato dell'acquisto di un abbonamento da parte di un utente.

Rappresentazione JSON
{
  "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
}
Campi
kind

string

Questo tipo rappresenta un oggetto subscriptionPurchase nel servizio androidpublisher.

startTimeMillis

string (int64 format)

Ora in cui è stato concesso l'abbonamento, in millisecondi dall'epoca.

expiryTimeMillis

string (int64 format)

Ora in cui l'abbonamento scadrà, in millisecondi dall'epoca.

autoResumeTimeMillis

string (int64 format)

Ora in cui l'abbonamento verrà ripristinato automaticamente, in millisecondi dall'epoca. Presente solo se l'utente ha richiesto di mettere in pausa l'abbonamento.

autoRenewing

boolean

Indica se l'abbonamento verrà rinnovato automaticamente al raggiungimento dell'attuale data di scadenza.

priceCurrencyCode

string

Codice valuta ISO 4217 per il prezzo dell'abbonamento. Ad esempio, se il prezzo è specificato in sterline inglesi, priceCurrencyCode è "GBP".

priceAmountMicros

string (int64 format)

Prezzo dell'abbonamento. Per i paesi in cui i prezzi non devono includere le tasse, il prezzo non include le imposte. Per i paesi in cui i prezzi devono essere comprensivi di IVA, il prezzo include le tasse. Il prezzo è espresso in micro-unità, dove 1.000.000 micro-unità rappresentano un'unità della valuta. Ad esempio, se il prezzo dell'abbonamento è 1,99 €, priceAmountMicros è 1990000.

introductoryPriceInfo

object (IntroductoryPriceInfo)

Informazioni sul prezzo di lancio dell'abbonamento. È presente solo quando l'abbonamento è stato acquistato a un prezzo di lancio.

Questo campo non indica che l'abbonamento si trova attualmente nel periodo di prezzo di lancio.

countryCode

string

Codice paese/regione di fatturazione ISO 3166-1 alpha-2 dell'utente al momento della concessione dell'abbonamento.

developerPayload

string

Una stringa specificata dallo sviluppatore che contiene informazioni supplementari su un ordine.

paymentState

integer

Lo stato del pagamento dell'abbonamento. I valori possibili sono: 0. Pagamento in attesa 1. Pagamento ricevuto 2. Prova senza costi 3. Upgrade/downgrade posticipato in attesa

Non presente per gli abbonamenti annullati o scaduti.

cancelReason

integer

Il motivo per cui un abbonamento è stato annullato o non viene rinnovato automaticamente. I valori possibili sono: 0. L'utente ha annullato l'abbonamento 1. L'abbonamento è stato annullato dal sistema, ad esempio a causa di un problema di fatturazione. L'abbonamento è stato sostituito con un nuovo abbonamento 3. L'abbonamento è stato annullato dallo sviluppatore

userCancellationTimeMillis

string (int64 format)

Il momento in cui l'abbonamento è stato annullato dall'utente, in millisecondi dall'epoca. Presente solo se cancelReason è 0.

cancelSurveyResult

object (SubscriptionCancelSurveyResult)

Informazioni fornite dall'utente quando completa la procedura di annullamento dell'abbonamento (sondaggio sul motivo dell'annullamento).

orderId

string

L'ID ordine dell'ultimo ordine ricorrente associato all'acquisto dell'abbonamento. Se l'abbonamento è stato annullato perché il pagamento è stato rifiutato, questo sarà l'ID ordine dell'ordine con pagamento rifiutato.

linkedPurchaseToken

string

Il token di acquisto dell'acquisto originale se questo abbonamento è uno dei seguenti: 0. Nuova registrazione di un abbonamento annullato ma non scaduto 1. Eseguire l'upgrade/il downgrade da un abbonamento precedente

Ad esempio, supponiamo che un utente si registri inizialmente e tu riceva il token di acquisto X, poi l'utente annulla e completa il flusso di nuova registrazione (prima della scadenza dell'abbonamento) e tu riceva il token di acquisto Y e infine l'utente esegue l'upgrade dell'abbonamento e tu riceva il token di acquisto Z. Se chiami questa API con il token di acquisto Z, questo campo verrà impostato su Y. Se chiami questa API con il token di acquisto Y, questo campo verrà impostato su X. Se chiami questa API con il token di acquisto X, questo campo non verrà impostato.

purchaseType

integer

Il tipo di acquisto dell'abbonamento. Questo campo viene impostato solo se l'acquisto non è stato effettuato utilizzando il flusso di fatturazione in-app standard. I valori possibili sono: 0. Test (ovvero acquistato da un account di test delle licenze) 1. Promozionale (ovvero acquistato utilizzando un codice promozionale)

priceChange

object (SubscriptionPriceChange)

Le informazioni più recenti sulle variazioni di prezzo disponibili. Questo campo è presente solo quando è prevista una variazione di prezzo dell'abbonamento che deve ancora essere applicata.

Una volta rinnovato l'abbonamento con il nuovo prezzo o annullato l'abbonamento, non verranno restituite informazioni sulla variazione di prezzo.

profileName

string

Il nome del profilo dell'utente al momento dell'acquisto dell'abbonamento. Presente solo per gli acquisti effettuati con "Abbonati con Google".

emailAddress

string

L'indirizzo email dell'utente al momento dell'acquisto dell'abbonamento. Presente solo per gli acquisti effettuati con "Abbonati con Google".

givenName

string

Il nome specificato dell'utente al momento dell'acquisto dell'abbonamento. Presente solo per gli acquisti effettuati con "Abbonati con Google".

familyName

string

Il cognome dell'utente al momento dell'acquisto dell'abbonamento. Presente solo per gli acquisti effettuati con "Abbonati con Google".

profileId

string

L'ID profilo Google dell'utente al momento dell'acquisto dell'abbonamento. Presente solo per gli acquisti effettuati con "Abbonati con Google".

acknowledgementState

integer

Lo stato di conferma del prodotto in abbonamento. I valori possibili sono: 0. Ancora da confermare 1. Confermato

externalAccountId

string

Identificatore dell'account utente nel servizio di terze parti. Presente solo se il collegamento dell'account è avvenuto nell'ambito del flusso di acquisto dell'abbonamento.

promotionType

integer

Il tipo di promozione applicata a questo acquisto. Questo campo viene impostato solo se è stata applicata una promozione al momento dell'acquisto dell'abbonamento. I valori possibili sono: 0. Codice monouso 1. Codice vanity

promotionCode

string

Il codice promozionale applicato a questo acquisto. Questo campo viene impostato solo se è stata applicata una promozione con codice personalizzato al momento dell'acquisto dell'abbonamento.

obfuscatedExternalAccountId

string

Una versione offuscata dell'ID associato in modo univoco all'account dell'utente nella tua app. Presente per i seguenti acquisti: * Se il collegamento dell'account è avvenuto nell'ambito del flusso di acquisto dell'abbonamento. * È stato specificato utilizzando https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid al momento dell'acquisto.

obfuscatedExternalProfileId

string

Una versione offuscata dell'ID associato in modo univoco al profilo dell'utente nella tua app. Presente solo se specificato utilizzando https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid al momento dell'acquisto.

IntroductoryPriceInfo

Contiene le informazioni sul prezzo di lancio di un abbonamento.

Rappresentazione JSON
{
  "introductoryPriceCurrencyCode": string,
  "introductoryPriceAmountMicros": string,
  "introductoryPricePeriod": string,
  "introductoryPriceCycles": integer
}
Campi
introductoryPriceCurrencyCode

string

Codice valuta ISO 4217 per il prezzo dell'abbonamento introduttivo. Ad esempio, se il prezzo è specificato in sterline inglesi, priceCurrencyCode è "GBP".

introductoryPriceAmountMicros

string (int64 format)

Prezzo di lancio dell'abbonamento, tasse escluse. La valuta corrisponde a priceCurrencyCode. Il prezzo è espresso in micro-unità, dove 1.000.000 micro-unità rappresentano un'unità della valuta. Ad esempio, se il prezzo dell'abbonamento è 1,99 €, priceAmountMicros è 1990000.

introductoryPricePeriod

string

Il periodo di prezzo introduttivo, specificato nel formato ISO 8601. I valori comuni sono (a titolo esemplificativo) "P1W" (una settimana), "P1M" (un mese), "P3M" (tre mesi), "P6M" (sei mesi) e "P1Y" (un anno).

introductoryPriceCycles

integer

Il numero di periodi di fatturazione per offrire prezzi di lancio.

SubscriptionCancelSurveyResult

Informazioni fornite dall'utente quando completa la procedura di annullamento dell'abbonamento (sondaggio sul motivo dell'annullamento).

Rappresentazione JSON
{
  "cancelSurveyReason": integer,
  "userInputCancelReason": string
}
Campi
cancelSurveyReason

integer

Il motivo dell'annullamento scelto dall'utente nel sondaggio. I valori possibili sono: 0. Altro 1. Non uso abbastanza il servizio 2. Problemi tecnici 3. Per motivi di costi 4. Ho trovato un'app migliore

userInputCancelReason

string

Il motivo dell'annullamento dell'input personalizzato da parte dell'utente. Presente solo quando cancelReason è 0.

SubscriptionPriceChange

Contiene le informazioni sulla variazione di prezzo di un abbonamento che possono essere utilizzate per controllare il percorso dell'utente per la variazione di prezzo nell'app. Ciò può avvenire sotto forma di richiesta di conferma da parte dell'utente o di personalizzazione dell'esperienza per una conversione riuscita.

Rappresentazione JSON
{
  "newPrice": {
    object (Price)
  },
  "state": integer
}
Campi
newPrice

object (Price)

Il nuovo prezzo con cui verrà rinnovato l'abbonamento se la modifica del prezzo viene accettata dall'utente.

state

integer

Lo stato attuale della modifica del prezzo. I valori possibili sono: 0. In attesa: stato di una variazione di prezzo in attesa dell'approvazione dell'utente. In questo stato, puoi richiedere facoltativamente la conferma all'utente utilizzando l'API In-App. 1. Accettata: stato di una variazione di prezzo accettata con cui l'abbonamento verrà rinnovato, a meno che non venga annullato. La variazione di prezzo entra in vigore in una data futura, al momento del rinnovo dell'abbonamento. Tieni presente che la modifica potrebbe non essere applicata al successivo rinnovo dell'abbonamento.

Metodi

acknowledge

Conferma l'acquisto di un abbonamento.

cancel

Annulla l'acquisto di un abbonamento di un utente.

defer

Rimanda l'acquisto dell'abbonamento di un utente fino a una data di scadenza futura specificata.

get
(deprecated)

Deprecato: utilizza purchases.subscriptionsv2.get.

refund
(deprecated)

Deprecato: utilizza orders.refund.

revoke
(deprecated)

Deprecato: utilizza purchases.subscriptionsv2.revoke.

Codici di errore

Le operazioni di questa risorsa restituiscono i seguenti codici di errore HTTP:

Codice di errore Motivo Risoluzione
5xx Errore generico nel server Google Play. Riprova a inviare la richiesta.

Se il problema persiste, contatta il tuo Account Manager Google Play o invia una richiesta di assistenza. Ti consigliamo di controllare la dashboard dello stato di Play per eventuali interruzioni note.

409 Errore di aggiornamento della concorrenza.

È stato effettuato un tentativo di aggiornamento di un oggetto in fase di aggiornamento. Ad esempio, un acquisto viene confermato chiamando il metodo acknowledgePurchase() della libreria Fatturazione Play e chiamando contemporaneamente il metodo purchases.products.acknowledge dell'API Play Developer.

Riprova a inviare la richiesta.
410 L'acquisto dell'abbonamento non è più disponibile per la query perché è scaduto da troppo tempo. Generata durante l'interrogazione di un abbonamento scaduto da più di 60 giorni. Non devi più eseguire query su questi abbonamenti.