Guida di riferimento alle notifiche in tempo reale per lo sviluppatore

Questo argomento elenca e descrive i tipi di notifiche in tempo reale per gli sviluppatori che puoi ricevere da Google Play.

Codifica

Ogni pubblicazione effettuata in un argomento Cloud Pub/Sub contiene un singolo campo di dati con codifica base64.

{
  "message": {
    "attributes": {
      "key": "value"
    },
    "data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
    "messageId": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}

Dopo aver decodificato il campo di dati codificato in Base64, DeveloperNotification contiene i seguenti campi:

{
  "version": string,
  "packageName": string,
  "eventTimeMillis": long,
  "oneTimeProductNotification": OneTimeProductNotification,
  "subscriptionNotification": SubscriptionNotification,
  "voidedPurchaseNotification": VoidedPurchaseNotification,
  "testNotification": TestNotification
}

Questi campi sono descritti nella tabella seguente.

Nome proprietà Valore Descrizione
versione stringa La versione di questa notifica. Inizialmente, il valore è "1.0". Questa versione è diversa dagli altri campi di versione.
packageName stringa Il nome del pacchetto dell'applicazione a cui si riferisce questa notifica (ad esempio, "com.some.thing").
eventTimeMillis lunghi Il timestamp dell'evento, in millisecondi dall'epoca.
subscriptionNotification SubscriptionNotification Se questo campo è presente, la notifica è correlata a un abbonamento e contiene informazioni aggiuntive relative all'abbonamento. Tieni presente che questo campo è mutuamente esclusivo con oneTimeProductNotification, voidedPurchaseNotification e testNotification.
oneTimeProductNotification OneTimeProductNotification Se questo campo è presente, la notifica riguarda un acquisto una tantum e contiene informazioni aggiuntive relative all'acquisto. Tieni presente che questo campo è mutuamente esclusivo con subscriptionNotification, voidedPurchaseNotification e testNotification.
voidedPurchaseNotification VoidedPurchaseNotification Se questo campo è presente, la notifica riguarda un acquisto annullato e contiene informazioni aggiuntive relative all'acquisto annullato. Tieni presente che questo campo è mutuamente esclusivo con oneTimeProductNotification, subscriptionNotification e testNotification.
testNotification TestNotification Se questo campo è presente, la notifica riguarda una pubblicazione di test. Questi vengono inviati solo tramite la Console per gli sviluppatori di Google Play. Tieni presente che questo campo è mutuamente esclusivo di oneTimeProductNotification, subscriptionNotification e voidedPurchaseNotification.

SubscriptionNotification

Un SubscriptionNotification contiene i seguenti campi:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
Nome proprietà Valore Descrizione
versione stringa La versione di questa notifica. Inizialmente, il valore è "1.0". Questa versione è diversa dagli altri campi di versione.
notificationType int Il valore notificationType di una sottoscrizione può avere i seguenti valori:
  • (1) SUBSCRIPTION_RECOVERED: un abbonamento è stato recuperato dalla sospensione dell'account.
  • (2) SUBSCRIPTION_RENEWED: un abbonamento attivo è stato rinnovato.
  • (3) SUBSCRIPTION_CANCELED: un abbonamento è stato annullato volontariamente o involontariamente. Per l'annullamento volontario, inviato quando l'utente annulla.
  • (4) SUBSCRIPTION_PURCHASED: è stato acquistato un nuovo abbonamento.
  • (5) SUBSCRIPTION_ON_HOLD: un abbonamento è stato messo in pausa nell'account (se abilitato).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD: un abbonamento è entrato nel periodo di tolleranza (se abilitato).
  • (7) SUBSCRIPTION_RESTARTED: l'utente ha ripristinato il suo abbonamento da Play > Account > Abbonamenti. L'abbonamento è stato annullato, ma non era ancora scaduto al momento del ripristino dell'utente. Per ulteriori informazioni, consulta Riparazioni.
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (OBSOLETO) - Una modifica del prezzo dell'abbonamento è stata confermata dall' utente.
  • (9) SUBSCRIPTION_DEFERRED: la data di ripetizione di un abbonamento è stata estesa.
  • (10) SUBSCRIPTION_PAUSED: un abbonamento è stato messo in pausa.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED: è stata modificata la programmazione della sospensione dell'abbonamento.
  • (12) SUBSCRIPTION_REVOKED: un abbonamento è stato revocato dall'utente prima della data di scadenza.
  • (13) SUBSCRIPTION_EXPIRED: un abbonamento è scaduto.
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED: una transazione in attesa di un abbonamento è stata annullata.
  • (19) SUBSCRIPTION_PRICE_CHANGE_UPDATED: i dettagli della variazione di prezzo di un articolo dell'abbonamento sono stati aggiornati.
purchaseToken stringa Il token fornito al dispositivo dell'utente al momento dell'acquisto dell'abbonamento.

Esempio

Ecco un esempio di notifica per l'acquisto di un nuovo abbonamento:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "subscriptionNotification":
  {
    "version":"1.0",
    "notificationType":4,
    "purchaseToken":"PURCHASE_TOKEN"
  }
}

OneTimeProductNotification

Un OneTimeProductNotification contiene i seguenti campi:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "sku": string
}
Nome proprietà Valore Descrizione
versione stringa La versione di questa notifica. Inizialmente sarà "1.0". Questa versione è diversa dagli altri campi di versione.
notificationType int Il tipo di notifica. Può avere i seguenti valori:
  • (1) ONE_TIME_PRODUCT_PURCHASED: un prodotto a pagamento singolo è stato acquistato da un utente.
  • (2) ONE_TIME_PRODUCT_CANCELED: un acquisto di un prodotto a pagamento singolo in sospeso è stato annullato dall'utente.
purchaseToken stringa Il token fornito al dispositivo dell'utente al momento dell'acquisto.
sku stringa L'ID prodotto a pagamento singolo acquistato (ad es. "sword_001")

Esempio

Ecco un esempio di notifica per un nuovo acquisto una tantum:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "oneTimeProductNotification":
  {
    "version":"1.0",
    "notificationType":1,
    "purchaseToken":"PURCHASE_TOKEN",
    "sku":"my.sku"
  }
}

VoidedPurchaseNotification

Un VoidedPurchaseNotification contiene i seguenti campi:

Nome proprietà

Valore

Descrizione

purchaseToken

string

Il token associato all'acquisto annullato. Queste informazioni vengono fornite allo sviluppatore al momento di un nuovo acquisto.

orderId

string

L'ID ordine univoco associato alla transazione annullata. Per gli acquisti una tantum, rappresenta l'unico ID ordine generato per l'acquisto. Per gli abbonamenti con rinnovo automatico, viene generato un nuovo ID ordine per ogni transazione di rinnovo.

productType

int

Il valore productType per un acquisto annullato può avere i seguenti valori:

  • (1) PRODUCT_TYPE_SUBSCRIPTION - Un acquisto di un abbonamento è stato annullato.
  • (2) PRODUCT_TYPE_ONE_TIME - Un acquisto una tantum è stato annullato.

refundType

int

Il valore refundType per un acquisto annullato può avere i seguenti valori:

  • (1) REFUND_TYPE_FULL_REFUND: l'acquisto è stato annullato completamente.
  • (2) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND: l'acquisto è stato annullato parzialmente tramite un rimborso parziale basato sulla quantità, applicabile solo agli acquisti di più quantità. Un acquisto può essere annullato parzialmente più volte.

Tieni presente che quando la quantità totale rimanente di un acquisto con più quantità viene rimborsata, refundType sarà REFUND_TYPE_FULL_REFUND.

Esempio

Ecco un esempio di notifica per un nuovo acquisto annullato:

{
  "version":"1.0",
  "packageName":"com.some.app",
  "eventTimeMillis":"1503349566168",
  "voidedPurchaseNotification":
  {
    "purchaseToken":"PURCHASE_TOKEN",
    "orderId":"GS.0000-0000-0000",
    "productType":1
    "refundType":1
  }
}

Utilizzo di VoidedPurchaseNotification

Quando il cliente RTDN riceve un VoidedPurchaseNotification, prendi nota delle seguenti informazioni:

  • packageName: identifica l'app.
  • eventTimeMillis: viene comunicato allo sviluppatore l'ora in cui si è verificata la variazione di stato.
  • purchaseToken: il token fornito al dispositivo dell'utente al momento dell'acquisto del prodotto.
  • orderId: identifica l'ordine associato alla transazione annullata.
  • productType: indica se l'acquisto annullato è stato un acquisto in-app o un abbonamento.
  • refundType: indica il tipo di rimborso che ha annullato l'acquisto.

Se per modificare i diritti devi solo trovare l'acquisto e l'ordine giusti, a questo punto hai tutte le informazioni di cui hai bisogno. Per scoprire come ottenere ulteriori informazioni sull'acquisto annullato, consulta l'API Google Play Voided Purchases, un modello pull che fornisce dati aggiuntivi per gli acquisti annullati tra un determinato timestamp.

Per gli acquisti con più quantità annullati parzialmente, il campo refundableQuantity fornito da purchases.products contiene il numero rimanente di prodotti acquistati che non sono stati annullati.

TestNotification

Un TestNotification contiene i seguenti campi:

{
  "version": string
}
Nome proprietà Valore Descrizione
versione stringa La versione di questa notifica. Inizialmente, il valore è "1.0". Questa versione è diversa dagli altri campi di versione.

Esempio

Ecco un esempio di notifica di prova:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "testNotification":
  {
    "version":"1.0"
  }
}