API acquisti annullati

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:

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 con voidedQuantity, 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 parametro token 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.