Valide a assinatura do payload assim que recebê-lo, antes de qualquer processamento ou leitura dos dados. Faça a validação diretamente no byte array, sem fazer parse do conteúdo.
Request com espaços extras
Confira o exemplo de uma request com payload equivalente ao do primeiro exemplo, apenas com alguns espaços extras que afetam a assinatura, mas igualmente válida:
Confira o exemplo de outra request com payload equivalente, agora formatada para facilitar a leitura, o que também acarreta em outra assinatura igualmente válida:
Envie uma resposta com o código 202 Acceptedem até 5 segundos para confirmar o recebimento do evento. O sistema considera essa resposta como sucesso e não tentará reenviar o evento. Ignoramos o corpo da resposta, exceto em auditorias internas para falhas de entrega. Nesses casos, envie a resposta no formato especificado.
Casos de erro
O propósito da request do webhook é integrar o evento com sucesso. Use respostas de erro apenas para indicar falha na integração, ou seja, quando o servidor não recebeu ou não processou o evento corretamente.O webhook reconhece erros HTTP 5xx como falhas de recebimento ou processamento. O sistema só faz retentativas para esta classe de erros.As respostas de erro impactam o fluxo de retentativas e devem ser usadas apenas quando for necessário tentar a entrega novamente.Ao retornar um erro, envie o payload especificado abaixo para detalhar o motivo na auditoria interna. Ignoramos quaisquer outros formatos ou campos, como XML.
{"error": "error message"}
Se todas as tentativas de entrega falharem, o webhook descarta o evento. O sistema não fará novas tentativas de entrega desse evento.
O iFood define o número máximo de tentativas, o intervalo entre elas e o tempo de timeout. Informaremos qualquer atualização com antecedência. Consideramos timeout para requests com mais de 5 segundos de resposta e tentamos reenviar eventos por até 15 minutos. Se o endpoint responder com 202 após 5 segundos, o sistema ainda tentará reenviar o evento.