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
AccountServicefor 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
POSTcom o cabeçalhoContent-Typedefinido comoapplication/json. Precisa retornar um dos seguintes códigos de status HTTP para confirmar que a notificação foi recebida:
102200201202204
É 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:
- Inscrever-se para receber notificações sobre mudanças no status do produto
- Inscrever-se para receber notificações sobre mudanças no serviço da conta
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:
- Receber notificações push sobre mudanças no status do produto:
saiba como se inscrever para receber atualizações de aprovação e reprovação de produtos e analisar
o payload
ProductStatusChangeMessage. - Receber notificações push sobre mudanças no serviço da conta:
saiba como se inscrever para receber atualizações sobre relacionamentos de contas e analisar o
payload
ResourceChangeMessage.