L'API Voided Purchases di Google Play fornisce un elenco degli ordini associati agli acquisti annullati dall'utente. Puoi utilizzare le informazioni presenti in questo elenco per implementare un sistema di revoca che impedisca all'utente di accedere ai prodotti di questi ordini.
Questa API si applica agli ordini in-app una tantum e agli abbonamenti all'app.
Un acquisto può essere annullato nei seguenti modi:
- L'utente richiede il rimborso dell'ordine.
- L'utente annulla il suo ordine.
- L'ordine viene riaddebitato.
Lo sviluppatore annulla o rimborsa l'ordine.
Google annulla o rimborsa l'ordine.
Se utilizzi questa API, contribuisci a creare un'esperienza più equilibrata e equa per tutti gli utenti della tua app, in particolare se la tua app è un gioco.
Ottenere l’accesso
Per utilizzare l'API Voided Purchases, devi disporre dell'autorizzazione per visualizzare le informazioni finanziarie. L'autorizzazione viene fornita utilizzando un client OAuth o un account di servizio. Se utilizzi un account di servizio, abilita l'autorizzazione "Visualizzazione di rapporti finanziari" in questo account.
Per scoprire di più su come ottenere l'accesso autorizzato alle API Google Play Developer, consulta le seguenti guide:
- Configurazione dei client di accesso alle API
- Aggiungere utenti all'account sviluppatore e gestire le autorizzazioni
Visualizzazione degli acquisti annullati
Utilizza il metodo GET
per richiedere un elenco di acquisti annullati. Nella richiesta, includi il nome completo del pacchetto dell'app, ad esempio com.google.android.apps.maps
, e il token di autorizzazione che hai ricevuto quando hai ottenuto l'accesso all'API.
GET https://www.googleapis.com/androidpublisher/v3/applications/ your_package_name/purchases/voidedpurchases?access_token=your_auth_token
Puoi anche includere i seguenti parametri nella richiesta, ciascuno dei quali è facoltativo:
- startTime
Il tempo, in millisecondi dall'epoca di Unix, dell'acquisto annullato meno recente che vuoi visualizzare nella risposta. Per impostazione predefinita, l'elemento
startTime
è impostato sui 30 giorni fa.L'API può mostrare solo gli acquisti annullati che sono stati effettuati negli ultimi 30 giorni. I vecchi acquisti annullati non vengono inclusi nella risposta, a prescindere dal valore fornito per
startTime
.- endTime
Il tempo, in millisecondi dall'epoca di Unix, dell'ultimo acquisto annullato che vuoi visualizzare nella risposta. Per impostazione predefinita, l'ora attuale è impostata su
endTime
.- maxResults
- Il numero massimo di acquisti annullati visualizzati in ciascuna risposta. Per impostazione predefinita, questo valore è 1000. Tieni presente che anche il valore massimo di questo parametro è 1000.
- token
- Un token di continuazione di una risposta precedente, che ti consente di visualizzare più risultati.
- Tipo
Il tipo di acquisti annullati visualizzato in ogni risposta. Se il valore è impostato su 0, verranno restituiti solo gli acquisti in-app annullati. Se impostato su 1, verranno restituiti sia gli acquisti in-app annullati sia gli acquisti di abbonamenti annullati. Il valore predefinito è 0.
- includeQuantityBasedPartialRefund
Indica se includere gli acquisti annullati di rimborsi parziali basati sulla quantità, applicabili solo agli acquisti di più quantità. Se
true
, è possibile restituire altri acquisti annullati convoidedQuantity
, che indica la quantità del rimborso di un rimborso parziale basato sulla quantità. Il valore predefinito èfalse
.
La risposta è una stringa JSON che contiene un elenco di acquisti annullati. Se
sono presenti più risultati rispetto al numero specificato nel parametro di richiesta maxResults
,
la risposta include un valore nextPageToken
, che puoi passare in una
richiesta successiva per visualizzare altri risultati. Il primo risultato nell'elenco mostra
l'acquisto annullato meno recente.
{ "tokenPagination": { "nextPageToken": "next_page_token" }, "voidedPurchases": [ { "kind": "androidpublisher#voidedPurchase", "purchaseToken": "some_purchase_token", "purchaseTimeMillis": "1468825200000", "voidedTimeMillis": "1469430000000", "orderId": "some_order_id", "voidedSource": "0", "voidedReason": "4" }, { "kind": "androidpublisher#voidedPurchase", "purchaseToken": "some_other_purchase_token", "purchaseTimeMillis": "1468825100000", "voidedTimeMillis": "1470034800000", "orderId": "some_other_order_id", "voidedSource": "2", "voidedReason": "5" }, ] }
Quote
L'API Voided Purchases imposta le seguenti quote per pacchetto:
- 6000 query al giorno. Il giorno inizia e termina alla mezzanotte del fuso orario del Pacifico USA.
- 30 query in un periodo di 30 secondi.
Linee guida per le richieste iniziali
Durante la richiesta iniziale dell'API, ti consigliamo di recuperare tutti i dati disponibili per la tua app. Sebbene sia improbabile, questo processo potrebbe esaurire la tua quota giornaliera. Per ottenere i dati sugli acquisti annullati in modo più sicuro e coerente, segui queste best practice:
- Utilizza il valore predefinito per il parametro
maxResults
. In questo modo, se utilizzi l'intera quota di query per un giorno, puoi recuperare i dettagli di 6.000.000 acquisti annullati. - Se una risposta include un valore per
nextPageToken
, assegna questo valore al parametrotoken
durante la prossima richiesta.
Best practice
Quando utilizzi questa API nella tua app, ricorda che esistono molti motivi per annullare un acquisto e che non esiste un'unica soluzione che funzioni in tutti i casi. Dovresti tenere a mente gli utenti quando progetti le strategie e i criteri di revoca. Per farlo, puoi applicare queste pratiche consigliate:
- Utilizza questa API come uno dei numerosi elementi in una strategia completa per risolvere i comportamenti indesiderati. La revoca dell'accesso ai prodotti in-app di solito è più efficace se combinata con un'app che ha prezzi ragionevoli per gli acquisti in-app, un design dell'app che scoraggia comportamenti indesiderati, una base utenti solida la cui cultura rifiuta tali comportamenti e canali di assistenza utenti reattivi ed efficienti.
- Amministra in modo uniforme le norme sulle revoche per garantire l'equità per tutti gli utenti.
- Valuta la possibilità di creare un criterio temporaneo per affrontare i comportamenti indesiderati. Ad esempio, inizia con gli avvisi in-app per i reati precoci, quindi riassegna le tue risposte man mano che il comportamento indesiderato di un utente persiste. Come ultima alternativa possibile, puoi impedire a un utente di interagire con la tua app.
- Quando introduci una norma sulla revoca e ogni volta che la aggiorni, utilizza i canali di promozione della tua app per informare gli utenti delle modifiche. Concedi agli utenti il tempo di comprendere chiaramente queste modifiche prima che vengano applicate nella tua app.
- Sii trasparente con gli utenti e informali ogni volta che intraprendi un'azione, ad esempio revocando il loro accesso a un prodotto in-app. Idealmente, gli utenti dovrebbero essere in grado di contestare le tue decisioni e queste controversie dovrebbero essere trattate in modo equo.
- Monitora i moduli di feedback e i forum della community per capire cosa spinge gli utenti a comportarsi in modi indesiderati e come portano a commettere simili comportamenti. Agire su queste informazioni come prima linea di difesa.