Panoramica della sub-API Notifications

Puoi utilizzare la sub-API Notifications per ricevere notifiche push quando i dati cambiano nei tuoi account Merchant Center. Anziché eseguire periodicamente il polling dell'API per rilevare le modifiche, puoi iscriverti ai feed di eventi in tempo reale inviati direttamente a un endpoint HTTPS configurato da te.

La sub-API Notifications supporta le notifiche per:

  • Modifiche allo stato del prodotto: ricevi avvisi in tempo reale quando lo stato di approvazione di un prodotto cambia (ad esempio, quando un prodotto viene disapprovato o approvato) in uno dei tuoi account o subaccount collegati.
  • Modifiche al servizio dell'account: ricevi avvisi in tempo reale quando una risorsa AccountService viene creata, aggiornata o eliminata (ad esempio quando viene stabilita, modificata o rimossa una relazione di servizio dell'account).

Prerequisiti e configurazione dell'URI di callback

Per ricevere notifiche push, devi fornire un callBackUri. L'URI di callback deve soddisfare i seguenti requisiti:

  • Deve essere un indirizzo HTTPS accessibile pubblicamente con un certificato SSL valido firmato da un'autorità di certificazione riconosciuta.
  • Deve accettare le richieste HTTP POST con l'intestazione Content-Type impostata su application/json.
  • Deve restituire uno dei seguenti codici di stato HTTP per confermare la ricezione della notifica:

    • 102
    • 200
    • 201
    • 202
    • 204

Puoi utilizzare lo stesso URI di callback per più abbonamenti. Per ridurre al minimo il carico su un singolo endpoint, utilizza un URI di callback univoco per account avanzato e tipo di evento.

Gestisci abbonamenti

La sub-API Notifications fornisce metodi per creare, elencare, recuperare, aggiornare ed eliminare le configurazioni di notifica.

Creare una sottoscrizione

La creazione della sottoscrizione è specifica per il tipo di evento che vuoi ricevere. Ogni tipo di evento richiede campi di configurazione diversi e fornisce strutture di payload distinte.

Per scoprire come creare abbonamenti e visualizzare le richieste di esempio per ogni tipo di evento, consulta le rispettive guide:

Elenco sottoscrizioni

Per elencare tutte le sottoscrizioni di notifica per un account, invia una richiesta GET alla raccolta notificationsubscriptions:

GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions

Recupera un abbonamento

Per ottenere i dettagli di una sottoscrizione specifica, utilizza il nome della risorsa della sottoscrizione:

GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}

Aggiorna un abbonamento

Per aggiornare l'URI di callback per un abbonamento esistente, invia una richiesta PATCH con un update_mask che specifichi i campi da aggiornare:

PATCH https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}?update_mask=callBackUri
{
  "callBackUri": "https://example.com/updated-callback"
}

Elimina una sottoscrizione

Per interrompere la ricezione delle notifiche, elimina la sottoscrizione:

DELETE https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}

Decodifica le notifiche

Quando si verifica un evento, Google invia una notifica al tuo callBackUri registrato. La notifica push arriva in un envelope JSON con un payload data con codifica base64:

{"message":{"data":"{base64_encoded_string}"}}

Decodifica la stringa di dati per accedere al payload dell'evento JSON. Il seguente controller Spring Boot di esempio mostra come ricevere e decodificare le notifiche push:

@RestController
public class ExampleController {
@RequestMapping(value = "/push",
  method = RequestMethod.POST,
  consumes = {"application/json"},
  produces = {"text/plain"})
  @ResponseStatus(HttpStatus.OK)
  public void handleNotification(@RequestBody String message) {
        JSONObject jsonObject = new JSONObject(message);
        JSONObject jsonMessage = jsonObject.getJSONObject("message");
        String encodedData = jsonMessage.getString("data");
        byte[] decodedBytes = Base64.getDecoder().decode(encodedData);
        String decodedPayload = new String(decodedBytes);
        // Process decodedPayload according to the registered event type
  }
}

Passaggi successivi

Per configurare le sottoscrizioni e gestire i payload decodificati per eventi specifici, consulta: