API acquisti annullati

L'API Voided Purchases di Google Play fornisce un elenco di ordini associati ad 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 e agli abbonamenti all'app una tantum.

Un acquisto può essere annullato nei seguenti modi:

  • L'utente richiede un rimborso per il suo ordine.
  • L'utente annulla l'ordine.
  • Un ordine viene riaddebitato.
  • Lo sviluppatore annulla o rimborsa l'ordine.

  • Google annulla o rimborsa l'ordine.

Utilizzando 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. Per fornire l'autorizzazione, devi utilizzare un client OAuth o un account di servizio. Se utilizzi un account di servizio, attiva l'autorizzazione "Visualizza report finanziari" in questo account.

Per scoprire di più su come ottenere l'accesso autorizzato alle API Google Play Developer, consulta le seguenti guide:

Visualizzazione degli acquisti annullati

Utilizza il metodo GET per richiedere un elenco degli 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, ognuno dei quali è facoltativo:

startTime

Il tempo, in millisecondi, a partire dall'epoca di Unix, relativo all'acquisto annullato meno recente che vuoi visualizzare nella risposta. Per impostazione predefinita, startTime è impostato su 30 giorni fa.

L'API può mostrare solo gli acquisti annullati che si sono verificati negli ultimi 30 giorni. Gli acquisti annullati precedenti non vengono inclusi nella risposta, a prescindere dal valore che hai fornito per startTime.

endTime

Il tempo, in millisecondi dall'epoca Unix, dell'ultimo acquisto annullato che vuoi visualizzare nella risposta. Per impostazione predefinita, endTime è impostato sull'ora attuale.

maxResults
Il numero massimo di acquisti annullati che compare in ogni risposta. Per impostazione predefinita, questo valore è 1000. Tieni presente che anche il valore massimo di questo parametro è 1000.
token
Un token di continuazione da una risposta precedente, che ti consente di visualizzare più risultati.
digita

Il tipo di acquisti annullati visualizzati 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.

La risposta è una stringa JSON che contiene un elenco di acquisti annullati. Se il numero di risultati supera il numero specificato nel parametro di richiesta maxResults, la risposta include un valore nextPageToken, che puoi passare a 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. (La giornata inizia e termina a mezzanotte del fuso orario del Pacifico).
  • 30 query in un periodo di 30 secondi.

Linee guida per le richieste iniziali

Durante la richiesta iniziale dell'API, potresti voler recuperare tutti i dati disponibili per la tua app. È improbabile che questo processo esaurisca la tua quota giornaliera. Per ottenere i dati relativi agli 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 parametro token alla successiva richiesta.

Best practice

Quando utilizzi questa API nella tua app, ricorda che ci sono molti motivi per annullare un acquisto e che non esiste un'unica soluzione che funzioni in tutti i casi. Quando progetti i tuoi criteri e le tue strategie di revoca, dovresti tenere a mente i tuoi utenti. A questo scopo, puoi applicare queste pratiche consigliate:

  • Utilizza questa API come uno dei numerosi elementi in una strategia completa per affrontare i comportamenti indesiderati. La revoca dell'accesso ai prodotti in-app di solito è più efficace se combinata con un'app che offre prezzi ragionevoli per gli acquisti in-app, un design dell'app che scoraggia comportamenti indesiderati, una base utenti solida la cui cultura rifiuta tale comportamento e canali di assistenza utenti reattivi ed efficienti.
  • Amministrare i criteri di revoca in modo uniforme per garantire l'equità a tutti gli utenti.
  • Valuta la possibilità di creare un criterio temporaneo per risolvere i comportamenti indesiderati. Ad esempio, inizia con gli avvisi in-app per i reati iniziali, quindi riassegna le risposte man mano che continuano a verificarsi i comportamenti indesiderati. Come ultima alternativa, puoi impedire a un utente di interagire con la tua app.
  • Quando introduci un criterio di revoca e ogni volta che lo 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 i tuoi utenti e informali ogni volta che intraprendi azioni, 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 mettono in atto questo tipo di comportamenti. Agire su queste informazioni come prima linea di difesa.