REST Resource: purchases.products

Risorsa: ProductPurchase

Una risorsa ProductPurchase indica lo stato dell'acquisto di un prodotto in-app da parte di un utente.

Rappresentazione JSON
{
  "kind": string,
  "purchaseTimeMillis": string,
  "purchaseState": integer,
  "consumptionState": integer,
  "developerPayload": string,
  "orderId": string,
  "purchaseType": integer,
  "acknowledgementState": integer,
  "purchaseToken": string,
  "productId": string,
  "quantity": integer,
  "obfuscatedExternalAccountId": string,
  "obfuscatedExternalProfileId": string,
  "regionCode": string,
  "refundableQuantity": integer
}
Campi
kind

string

Questo tipo rappresenta un oggetto inappPurchase nel servizio androidpublisher.

purchaseTimeMillis

string (int64 format)

L'ora in cui è stato acquistato il prodotto, in millisecondi dall'epoca (1° gennaio 1970).

purchaseState

integer

Lo stato dell'acquisto dell'ordine. I valori possibili sono: 0. Acquistato 1. Annullato 2. In attesa

consumptionState

integer

Lo stato di consumo del prodotto in-app. I valori possibili sono: 0. Ancora da consumare 1. Hai consumato

developerPayload

string

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

orderId

string

L'ID ordine associato all'acquisto del prodotto in-app.

purchaseType

integer

Il tipo di acquisto del prodotto in-app. 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). Non include gli acquisti di punti Play. 2. Con premio (ad es. dalla visualizzazione di un annuncio video anziché dal pagamento)

acknowledgementState

integer

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

purchaseToken

string

Il token di acquisto generato per identificare questo acquisto. Potrebbe non essere presente.

productId

string

Lo SKU del prodotto in-app. Potrebbe non essere presente.

quantity

integer

La quantità associata all'acquisto del prodotto in-app. Se non è presente, la quantità è 1.

obfuscatedExternalAccountId

string

Una versione offuscata dell'ID associato in modo univoco all'account dell'utente nella tua app. Presente solo se 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.

regionCode

string

Codice regione di fatturazione ISO 3166-1 alpha-2 dell'utente al momento della concessione del prodotto.

refundableQuantity

integer

La quantità idonea per il rimborso, ovvero la quantità per cui non è stato effettuato alcun rimborso. Il valore riflette i rimborsi parziali e totali basati sulla quantità.

Metodi

acknowledge

Conferma un acquisto di un articolo in-app.

consume

Utilizza un acquisto per un articolo in-app.

get

Controlla lo stato di acquisto e consumo di un elemento in-app.

Codici di errore

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

Codice di errore Motivo Descrizione Risoluzione
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 un formato non corretto. Correggi il valore del campo non valido nel corpo della richiesta o nei parametri in base al riferimento API.
400 productNotOwnedByUser Il token di acquisto fornito è valido, ma l'utente non possiede attualmente il prodotto. Ciò può verificarsi 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 elemento 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.
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 Play per eventuali interruzioni note.