POST HTTPS para o seu endpoint quando algo muda na sua conta. Use webhooks em vez
de consultar periodicamente os endpoints de listagem.
Eventos
O nome do evento vem no header
X-Webhook-Event. Faça o roteamento por esse header, não pela URL. O payload completo
de cada evento está na referência da API, em Webhooks.
shippingUpdated não inclui o id do pedido na Cubbo. Correlacione-o com order_number e store_id.Configurar seu endpoint
Seu endpoint deve usarhttps e um nome de domínio. Endereços IP são rejeitados.
Configure-o no app da Cubbo: abra Integrações, encontre sua integração Open API e clique em
Configurar Webhooks. Lá você ativa os webhooks de pedidos, inventário e remessas de estoque, define as URLs,
adiciona headers personalizados, testa a URL e copia o segredo compartilhado. Veja Configure sua integração.
Se o seu endpoint exige credenciais de cliente OAuth, peça ao seu contato na Cubbo para configurá-las.
O feed de inventário só envia eventos enquanto o feed de pedidos estiver ativado. O feed de recebimentos é independente.
Teste de conectividade
Quando a Cubbo verifica sua URL, ela envia este corpo, sem headers de assinatura e semX-Webhook-Event:
2xx em até 10 segundos. Aceite esse ping mesmo que ele não seja assinado, caso contrário a verificação falha.
Headers
Os headers estáticos configurados para a sua integração também são adicionados.
Verificar a assinatura
Todo evento é assinado com HMAC-SHA256 usando o secret do seu webhook. Verifique-a antes de confiar no corpo.1
Leia o corpo bruto
Use exatamente os bytes que você recebeu. Não faça o parse e a re-serialização do JSON: a ordem das chaves e os espaços devem coincidir.
2
Monte a string assinada
Junte quatro valores com um ponto literal: o ID da mensagem,
isa, exp e o corpo bruto.3
Calcule e compare
Calcule o HMAC-SHA256 dessa string. Use o secret como uma string UTF-8 simples, sem decodificá-lo.
Compare o digest hexadecimal em minúsculas com
X-Cubbo-Hmac-SHA256 em tempo constante.4
Verifique a expiração
Rejeite a requisição se o horário atual for posterior a
exp. Permita alguns segundos de diferença de relógio.Responder e novas tentativas
Responda com qualquer status2xx assim que tiver armazenado o evento e, em seguida, processe-o de forma assíncrona. Respostas
lentas correm o risco de timeout e de uma nova tentativa.
Os eventos de inventário e de recebimento são entregues um de cada vez por integração, em ordem. Uma entrega com falha
retém os eventos seguintes até ser bem-sucedida ou esgotar as novas tentativas.
Tratar duplicados
As novas tentativas reenviam o mesmo corpo, mas com um novo ID de mensagem,isa, exp e assinatura. Nunca faça a deduplicação por
X-Cubbo-Webhook-Message-Id.
Guarde as chaves processadas por pelo menos 26 horas, a maior janela de novas tentativas. Os valores de
sequence crescem, mas podem pular
números, então não espere que aumentem de um em um.