Visão geral da sub-API Notifications

Você pode usar a sub-API de notificações para receber notificações push quando os dados mudarem nas suas contas do Merchant Center. Em vez de sondar periodicamente a API para detectar mudanças, você pode se inscrever em feeds de eventos em tempo real entregues diretamente a um endpoint HTTPS configurado.

A sub-API Notifications oferece suporte a notificações para:

  • Mudanças no status do produto: receba alertas em tempo real quando o status de aprovação de um produto mudar (por exemplo, quando um produto for reprovado ou aprovado) em qualquer uma das suas contas ou subcontas vinculadas.
  • Mudanças no serviço de conta: receba alertas em tempo real quando um recurso AccountService for criado, atualizado ou excluído (por exemplo, quando uma relação de serviço de conta é estabelecida, modificada ou removida).

Pré-requisitos e configuração do URI de callback

Para receber notificações push, você precisa fornecer um callBackUri. O URI de retorno de chamada precisa atender aos seguintes requisitos:

  • Precisa ser um endereço HTTPS acessível publicamente com um certificado SSL válido assinado por uma autoridade certificadora reconhecida.
  • Precisa aceitar solicitações HTTP POST com o cabeçalho Content-Type definido como application/json.
  • Precisa retornar um dos seguintes códigos de status HTTP para confirmar que a notificação foi recebida:

    • 102
    • 200
    • 201
    • 202
    • 204

É possível usar o mesmo URI de callback para várias assinaturas. Para minimizar a carga em um único endpoint, use um URI de callback exclusivo por conta avançada e tipo de evento.

Gerenciar assinaturas

A sub-API Notifications oferece métodos para criar, listar, recuperar, atualizar e excluir configurações de notificação.

Crie uma assinatura

A criação de assinaturas é específica para o tipo de evento que você quer receber. Cada tipo de evento exige campos de configuração diferentes e oferece estruturas de payload distintas.

Para saber como criar assinaturas e ver exemplos de solicitações para cada tipo de evento, consulte os guias respectivos:

Listar assinaturas

Para listar todas as assinaturas de notificação de uma conta, envie uma solicitação GET para a coleção notificationsubscriptions:

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

Recuperar uma assinatura

Para ver detalhes de uma assinatura específica, use o nome do recurso dela:

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

Atualizar uma inscrição

Para atualizar o URI de callback de uma assinatura, envie uma solicitação PATCH com um update_mask especificando os campos a serem atualizados:

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

Excluir uma inscrição

Para parar de receber notificações, exclua a inscrição:

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

Decodificar notificações

Quando um evento ocorre, o Google envia uma notificação para seu callBackUri registrado. A notificação push chega em um envelope JSON com um payload data codificado em base64:

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

Decodifique a string de dados para acessar o payload do evento JSON. O exemplo de controlador do Spring Boot a seguir mostra como receber e decodificar notificações 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
  }
}

Próximas etapas

Para configurar assinaturas e processar payloads decodificados de eventos específicos, consulte: