Panoramica della sub-API Notifications

Puoi utilizzare la sub-API Notifiche 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 abbonarti ai feed di eventi in tempo reale forniti direttamente a un endpoint HTTPS che configuri.

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 qualsiasi dei tuoi account o subaccount collegati.
  • Modifiche al servizio 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 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 dell'abbonamento è 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 richieste di esempio per ogni tipo di evento, consulta le guide pertinenti:

Elenco sottoscrizioni

Per elencare tutte le iscrizioni alle notifiche per un account, invia una richiesta GET alla raccolta notificationsubscriptions:

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

Recuperare un abbonamento

Per ottenere i dettagli di un abbonamento specifico, utilizza il nome della risorsa dell'abbonamento:

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

Aggiornare un abbonamento

Per aggiornare l'URI di callback per un abbonamento esistente, invia una richiesta PATCH con un update_mask che specifica 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"
}

Eliminare un abbonamento

Per interrompere la ricezione di notifiche, elimina l'abbonamento:

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

Decodificare 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 gli abbonamenti e gestire i payload decodificati per eventi specifici, consulta: