Integração com o iFood: o problema na homologação do developer
O desafio Hoje eu quero falar da Temperô, um SaaS multi-tenant de gestão de restaurantes: pedidos, cozinha, caixa, comandas, várias unidades por restaurante. Stack em Node/TypeScript/Express, Postgres com pg puro (sem ORM, SQL cru, migrations numeradas). O objetivo era simples de enunciar,mas em termos de produção, bem difícil de sustentar: um pedido feito no marketplace iFood precisa entrar…
O objetivo é falar sobre a Temperô, um SaaS multi-tenant de gestão de restaurantes que integra o marketplace iFood. A integração exige que pedidos feitos no iFood entrem no fluxo operacional da Temperô, indo para a cozinha, produção e entrega, com o status sincronizado em ambos os sentidos. No entanto, durante o desenvolvimento, surgiram vários problemas.
Uma das principais dificuldades foi a implementação de um sistema de polling, em vez de um webhook, para receber eventos do iFood. O iFood oferece dois modelos de credencial: distribuído (OAuth2 por restaurante/unidade) e centralizado (uma única credencial para toda a plataforma). Escolheram a opção centralizada, o que exigiu refatorar o cache de token.
No caminho, também houve um bug sutil envolvendo o mapeamento de código abreviado 'code' para o nome extenso 'fullCode' de eventos. O switch que processava os eventos comparava contra 'code', mas o valor real era 'PLC'. Essa correção foi fácil, mas o aprendizado foi valioso, pois enfatizou a importância de sempre comparar contra o campo canônico definido na documentação.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.