- Risorsa: SubscriptionPurchase
- IntroductoryPriceInfo
- SubscriptionCancelSurveyResult
- SubscriptionPriceChange
- Metodi
Risorsa: SubscriptionPurchase
Deprecato: utilizza SubscriptionPurchaseV2. 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 ( |
| Campi | |
|---|---|
kind |
Questo tipo rappresenta un oggetto subscriptionPurchase nel servizio androidpublisher. |
startTimeMillis |
Ora in cui è stato concesso l'abbonamento, in millisecondi trascorsi dall'epoca. |
expiryTimeMillis |
Ora in cui l'abbonamento scadrà, in millisecondi dall'epoca. |
autoResumeTimeMillis |
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 |
Indica se l'abbonamento verrà rinnovato automaticamente al raggiungimento della data di scadenza attuale. |
priceCurrencyCode |
Codice valuta ISO 4217 per il prezzo dell'abbonamento. Ad esempio, se il prezzo è specificato in sterline inglesi, priceCurrencyCode è "GBP". |
priceAmountMicros |
Prezzo dell'abbonamento. Per i paesi in cui i prezzi non sono comprensivi di imposte, il prezzo non include le tasse. 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 di micro-unità rappresentano un'unità della valuta. Ad esempio, se il prezzo dell'abbonamento è 1,99 €, priceAmountMicros è 1990000. |
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 |
Codice paese/regione di fatturazione ISO 3166-1 alpha-2 dell'utente al momento della concessione dell'abbonamento. |
developerPayload |
Una stringa specificata dallo sviluppatore che contiene informazioni supplementari su un ordine. |
paymentState |
Lo stato del pagamento dell'abbonamento. I valori possibili sono: 0. Pagamento in attesa 1. Pagamento ricevuto 2. Prova senza costi 3. Upgrade/downgrade differito in attesa Non presente per gli abbonamenti annullati o scaduti. |
cancelReason |
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 |
Il momento in cui l'abbonamento è stato annullato dall'utente, in millisecondi dall'epoca. Presente solo se cancelReason è 0. |
cancelSurveyResult |
Informazioni fornite dall'utente quando completa il flusso di annullamento dell'abbonamento (sondaggio sul motivo dell'annullamento). |
orderId |
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 |
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 l'abbonamento 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 |
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 |
Le informazioni più recenti disponibili sulle variazioni di prezzo. 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 |
Il nome del profilo dell'utente al momento dell'acquisto dell'abbonamento. Presente solo per gli acquisti effettuati con "Abbonati con Google". |
emailAddress |
L'indirizzo email dell'utente al momento dell'acquisto dell'abbonamento. Presente solo per gli acquisti effettuati con "Abbonati con Google". |
givenName |
Il nome specificato dell'utente al momento dell'acquisto dell'abbonamento. Presente solo per gli acquisti effettuati con "Abbonati con Google". |
familyName |
Il cognome dell'utente al momento dell'acquisto dell'abbonamento. Presente solo per gli acquisti effettuati con "Abbonati con Google". |
profileId |
L'ID profilo Google dell'utente al momento dell'acquisto dell'abbonamento. Presente solo per gli acquisti effettuati con "Abbonati con Google". |
acknowledgementState |
Lo stato di conferma del prodotto in abbonamento. I valori possibili sono: 0. Ancora da confermare 1. Confermato |
externalAccountId |
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 |
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 |
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 |
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 |
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 |
Codice valuta ISO 4217 per il prezzo dell'abbonamento introduttivo. Ad esempio, se il prezzo è specificato in sterline inglesi, priceCurrencyCode è "GBP". |
introductoryPriceAmountMicros |
Prezzo di lancio dell'abbonamento, tasse escluse. La valuta corrisponde a priceCurrencyCode. Il prezzo è espresso in micro-unità, dove 1.000.000 di micro-unità rappresentano un'unità della valuta. Ad esempio, se il prezzo dell'abbonamento è 1,99 €, priceAmountMicros è 1990000. |
introductoryPricePeriod |
Il periodo di prezzo di lancio, 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 |
Il numero di periodi di fatturazione per offrire prezzi di lancio. |
SubscriptionCancelSurveyResult
Informazioni fornite dall'utente quando completa il flusso di annullamento dell'abbonamento (sondaggio sul motivo dell'annullamento).
| Rappresentazione JSON |
|---|
{ "cancelSurveyReason": integer, "userInputCancelReason": string } |
| Campi | |
|---|---|
cancelSurveyReason |
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 |
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 ( |
| Campi | |
|---|---|
newPrice |
Il nuovo prezzo con cui verrà rinnovato l'abbonamento se la variazione di prezzo viene accettata dall'utente. |
state |
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 |
|
|---|---|
|
Conferma l'acquisto di un abbonamento. |
(deprecated) |
Deprecato: utilizza purchases.subscriptionsv2.cancel. |
(deprecated) |
Deprecato: utilizza purchases.subscriptionsv2.defer. |
(deprecated) |
Deprecato: utilizza purchases.subscriptionsv2.get. |
(deprecated) |
Deprecato: utilizza orders.refund. |
(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 | Descrizione | Risoluzione |
|---|---|---|---|
400 / 410 |
subscriptionExpired |
L'abbonamento è scaduto e l'operazione richiesta non può essere eseguita. | Controlla l'ora di scadenza dell'abbonamento. Questa operazione non è consentita sugli abbonamenti scaduti. |
400 |
subscriptionInvalidArgument |
Nella richiesta di abbonamento è stato fornito un argomento non valido. | Consulta la documentazione dell'API e assicurati che tutti i campi obbligatori siano forniti e formattati correttamente. |
400 |
invalidPurchaseState |
L'acquisto non è in uno stato valido per eseguire l'operazione richiesta. Ad esempio, potresti tentare di confermare un acquisto già consumato o annullare un abbonamento non attivo. | Prima di tentare l'operazione, controlla lo stato attuale della risorsa utilizzando l'API Get corrispondente. Assicurati che la risorsa si trovi in uno stato appropriato per l'azione. |
400 |
invalidValue |
Nella richiesta è stato fornito un valore non valido. Questo errore viene spesso restituito per un token di acquisto non valido o con errori di formato. | Correggi il valore del campo non valido nel corpo o nei parametri della richiesta in base al riferimento API. |
400 |
prepaidSubscriptionNotSupported |
L'operazione richiesta non è supportata per gli abbonamenti prepagati. | Assicurati che l'operazione sia applicabile al tipo di abbonamento. Questo errore è specifico per metodi come Annulla, Posticipa, Rimborso o Revoca. |
400 |
productNotOwnedByUser |
Il token di acquisto fornito è valido, ma l'utente non possiede attualmente il prodotto. Ciò può accadere se l'acquisto è stato rimborsato, revocato o è scaduto prima della conferma. | Prima di tentare l'operazione, controlla lo stato attuale della risorsa utilizzando l'API Get corrispondente. Assicurati che la risorsa si trovi in uno stato appropriato per l'azione. |
400 |
purchaseTokenMismatch |
Il token di acquisto fornito non corrisponde all'acquisto, al nome del pacchetto, all'ID abbonamento o all'ID prodotto. | Verifica che tutti i dettagli della richiesta siano corretti e corrispondano tra loro. |
400 |
required |
Nella richiesta manca un campo o un parametro obbligatorio. | Consulta la documentazione dell'API per assicurarti di includere tutti i campi e i parametri obbligatori. |
400 |
unsupportedIabType |
L'operazione non è supportata per il tipo di fatturazione in-app specificato. | Assicurati che il metodo API sia compatibile con il tipo di articolo gestito. |
403 |
userInsufficientPermission |
L'utente non dispone di autorizzazioni sufficienti per eseguire l'operazione richiesta. | Assicurati che l'utente autenticato disponga delle autorizzazioni necessarie in Google Play Console. Per ulteriori dettagli, consulta Utilizzo di un service account. |
404 |
notFound |
Impossibile trovare la risorsa richiesta. | Verifica che gli identificatori (ad es. token di acquisto, nome del pacchetto, ID prodotto, ID abbonamento) siano corretti. |
409 |
concurrentUpdate |
È stato effettuato un tentativo di aggiornamento di un oggetto in fase di aggiornamento simultaneo. | Riprova a inviare la richiesta con il backoff esponenziale. Evita modifiche simultanee alla stessa risorsa. |
410 |
purchaseTokenNoLongerValid |
Il token di acquisto non è più valido perché l'account utente associato è stato eliminato o il record di acquisto non esiste più. | Interrompi l'utilizzo di questo token di acquisto. |
410 |
subscriptionNoLongerAvailable |
L'acquisto dell'abbonamento non è più disponibile per la query perché è scaduto da troppo tempo. | Questo errore indica che l'abbonamento è scaduto da più di 60 giorni. Non devi più eseguire query su questi abbonamenti. |
5xx |
Generic error |
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 Google Play per eventuali interruzioni note. |