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 |
Questo tipo rappresenta un oggetto inappPurchase nel servizio androidpublisher. |
purchaseTimeMillis |
L'ora in cui è stato acquistato il prodotto, in millisecondi dall'epoca (1° gennaio 1970). |
purchaseState |
Lo stato dell'acquisto dell'ordine. I valori possibili sono: 0. Acquistato 1. Annullato 2. In attesa |
consumptionState |
Lo stato di consumo del prodotto in-app. I valori possibili sono: 0. Ancora da consumare 1. Hai consumato |
developerPayload |
Una stringa specificata dallo sviluppatore che contiene informazioni supplementari su un ordine. |
orderId |
L'ID ordine associato all'acquisto del prodotto in-app. |
purchaseType |
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 |
Lo stato di conferma del prodotto in-app. I valori possibili sono: 0. Ancora da confermare 1. Confermato |
purchaseToken |
Il token di acquisto generato per identificare questo acquisto. Potrebbe non essere presente. |
productId |
Lo SKU del prodotto in-app. Potrebbe non essere presente. |
quantity |
La quantità associata all'acquisto del prodotto in-app. Se non è presente, la quantità è 1. |
obfuscatedExternalAccountId |
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 |
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 |
Codice regione di fatturazione ISO 3166-1 alpha-2 dell'utente al momento della concessione del prodotto. |
refundableQuantity |
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 |
|
|---|---|
|
Conferma un acquisto di un articolo in-app. |
|
Utilizza un acquisto per un articolo in-app. |
|
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. |