Questo documento elenca e descrive i tipi di notifiche in tempo reale per lo sviluppatore che puoi ricevere da Google Play.
Codifica
Ogni pubblicazione in un argomento di Cloud Pub/Sub contiene un singolo campo di dati con codifica in base64.
{
"message": {
"attributes": {
"key": "value"
},
"data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
"messageId": "136969346945"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
Dopo aver decodificato il campo di dati con codifica in base64, DeveloperNotification contiene i seguenti campi:
{
"version": string,
"packageName": string,
"eventTimeMillis": long,
"oneTimeProductNotification": OneTimeProductNotification,
"subscriptionNotification": SubscriptionNotification,
"voidedPurchaseNotification": VoidedPurchaseNotification,
"pendingRefundReviewNotification": PendingRefundReviewNotification,
"testNotification": TestNotification
}
Questi campi sono descritti nella tabella seguente.
| Nome proprietà | Valore | Descrizione |
|---|---|---|
| versione | stringa | La versione di questa notifica. Inizialmente, è "1.0". Questa versione è diversa dagli altri campi della versione. |
| packageName | stringa | Il nome del pacchetto dell'applicazione a cui si riferisce questa notifica a (ad esempio, `com.some.thing`). |
| eventTimeMillis | lungo | Il timestamp in cui si è verificato l'evento, in millisecondi da l'epoca. |
| subscriptionNotification | SubscriptionNotification | Se questo campo è presente, la notifica è relativa a un abbonamento e contiene informazioni aggiuntive sull' abbonamento. Tieni presente che questo campo è mutuamente esclusivo con pendingRefundReviewNotification, oneTimeProductNotification, voidedPurchaseNotification, e testNotification. |
| oneTimeProductNotification | OneTimeProductNotification | Se questo campo è presente, la notifica è relativa a un acquisto una tantum e contiene informazioni aggiuntive sull'acquisto. Tieni presente che questo campo è mutuamente esclusivo con pendingRefundReviewNotification, subscriptionNotification, voidedPurchaseNotification e testNotification. |
| voidedPurchaseNotification | VoidedPurchaseNotification | Se questo campo è presente, la notifica è relativa a un acquisto annullato e contiene informazioni aggiuntive relative all'acquisto annullato. Tieni presente che questo campo è mutuamente esclusivo con pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification e testNotification. |
| pendingRefundReviewNotification | PendingRefundReviewNotification | Se questo campo è presente, la notifica è relativa a una richiesta di storno di addebito per la quale puoi suggerire una risoluzione. Rispondi a questa notifica chiamando l'API `ReviewRefund`. Tieni presente che questo campo è mutuamente esclusivo con subscriptionNotification, oneTimeProductNotification, voidedPurchaseNotification, e testNotification. |
| testNotification | TestNotification | Se questo campo è presente, la notifica è relativa a una pubblicazione di test. Queste notifiche vengono inviate solo tramite la Google Play Console. Tieni presente che questo campo è mutuamente esclusivo con pendingRefundReviewNotification, 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, è "1.0". Questa versione è diversa dagli altri campi della versione. |
| notificationType | int | Il notificationType per un abbonamento può avere i seguenti valori:
|
| purchaseToken | stringa | Il token fornito al dispositivo dell'utente al momento dell'acquisto dell'abbonamento. |
Esempio
Ecco un esempio di notifica per un nuovo acquisto di un 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 della versione. |
| notificationType | int | Il tipo di notifica. Può avere i seguenti valori:
|
| purchaseToken | stringa | Il token fornito al dispositivo dell'utente al momento dell'acquisto. |
| sku | stringa | L'ID del prodotto a pagamento singolo acquistato (ad esempio, "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 |
|---|---|---|
|
|
Il token associato all'acquisto che è stato annullato. Queste informazioni vengono fornite allo sviluppatore quando si verifica un nuovo acquisto |
|
|
L'ID ordine univoco associato alla transazione che è stata annullata. Per gli acquisti una tantum, questo 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. |
|
|
Il
|
|
|
Il
Tieni presente che quando viene rimborsata la quantità totale rimanente di un acquisto di più quantità, il |
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
}
}
Utilizzare VoidedPurchaseNotification
Quando il client RTDN riceve un VoidedPurchaseNotification, tieni presente le seguenti informazioni:
packageName: identifica l'app.eventTimeMillis: ti informa dell'ora in cui si è verificata la modifica dello 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 era un acquisto in-app o un abbonamento.refundType: specifica il tipo di rimborso che ha annullato l'acquisto.
PendingRefundReviewNotification
Un PendingRefundReviewNotification viene inviato quando un utente richiede uno storno per un acquisto e la richiesta richiede la revisione dello sviluppatore. Quando ricevi questa notifica, devi valutare la richiesta e fornire un suggerimento di rimborso e la prova dell'utilizzo dell'acquisto entro 24 ore chiamando l'API.ReviewRefund
Un PendingRefundReviewNotification contiene i seguenti campi:
{
"version": string,
"pendingRefundToken": string,
"orderId": string,
"refundReason": int,
"obfuscatedAccountId": string,
"obfuscatedProfileId": string
}
| Nome proprietà | Valore | Descrizione |
|---|---|---|
| versione | stringa | La versione di questa notifica. Inizialmente, è "1.0". Questa versione è diversa dagli altri campi della versione. |
| pendingRefundToken | stringa | Un token univoco che identifica la richiesta di rimborso in sospeso in corso di revisione. Passa questo token quando chiami l'API ReviewRefund. |
| orderId | stringa | L'ID ordine dell'acquisto soggetto alla revisione del rimborso in sospeso. |
| refundReason | int | Il motivo della richiesta di rimborso. Le revisioni in sospeso supportano solo CHARGEBACK (7) come motivo del rimborso. Il codice deve
gestire i nuovi motivi man mano che diventano disponibili. |
| obfuscatedAccountId | stringa | (Se applicabile) L'ID account utente offuscato specificato dallo sviluppatore fornito al momento dell'acquisto. |
| obfuscatedProfileId | stringa | (Se applicabile) L'ID profilo offuscato specificato dallo sviluppatore fornito al momento dell'acquisto. |
Esempio
Ecco un esempio di notifica di revisione del rimborso in sospeso:
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503350156918",
"pendingRefundReviewNotification":
{
"version":"1.0",
"pendingRefundToken":"example-token",
"orderId":"GPA.1234-5678-9012-34567",
"refundReason":7,
"obfuscatedAccountId":"user-account-id",
"obfuscatedProfileId":"user-profile-id"
}
}
TestNotification
Un TestNotification contiene i seguenti campi:
{
"version": string
}
| Nome proprietà | Valore | Descrizione |
|---|---|---|
| versione | stringa | La versione di questa notifica. Inizialmente, è "1.0". Questa versione è diversa dagli altri campi della versione. |
Esempio
Ecco un esempio di notifica di test:
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503350156918",
"testNotification":
{
"version":"1.0"
}
}