Baratão Combustíveis — parceiro de posto de gasolina

Autenticação federada por JWT, webhook de compra, onboarding com cupons no Clube e a correção de segurança da accessKey.

Atualizado em 24/08/20267 min de leituraIntegrações externas

Parcialmente citado no PDF anterior (branch SUST-426), mas sem detalhamento do fluxo. É um parceiro real — a única ocorrência "falsa" de Baratão é um template de e-mail no Manager que usa o nome como exemplo de campanha, sem lógica condicional de whitelabel.

Backend (urbis-api, módulo genérico gasStation)

  • POST /auth/authorize-user-for-baratao (BarataoGuard) — gera um JWT próprio (BARATAO_JWT_SECRET, 1h de validade) com nome, e-mail, CPF, telefone, whitelabelId e incentiveUserId, para autenticar dentro da webview sem reenviar senha.
  • POST /incentive/gas-station/update-data (mesmo guard) — webhook que o Baratão chama para informar o status de uma compra vinculada a um IncentiveUser. Entrada: { dataCompra, incentiveUserId, valorTotal, pago, usado, dataVencimento }. Valida incentive.specialOfferType === 'gasStation' e, se virou 'acquired', dispara e-mail de confirmação + pesquisa de satisfação.
⚠️ Gap conhecido: não há checagem de idempotência (externalTransactionIdentifier) — reenvio do mesmo evento reprocessa o update e pode reenviar o e-mail de confirmação. Mitigado por não haver movimentação financeira direta na Urbis, mas ainda é um gap a corrigir.

Clube (urbis-club)

  • Onboarding do posto (GasStationOnboarding, 7 passos): para o Baita, o passo de índice 4 é substituído (registry baitaOverrides.gasStationOnboarding.replaceStep) pelo BaitaOnboardCouponStep, com 2 cupons aplicados manualmente no caixa/bomba: BAITAPRIMEIRAVEZ20 (primeira vez) e BAITA (cliente fiel).
  • Ao concluir, o front geocodifica cidade/UF (Google Maps Geocoding API — chave hardcoded no cliente, ponto de atenção de segurança) e chama o proxy Next.js /api/authorize-user-for-baratao, que injeta a accessKey no servidor e retorna um token.
  • Com token + lat/lng, o app abre uma webview para https://baratao-phi.vercel.app/. Não há geração de cupom/voucher dentro da Urbis para esse tipo de oferta.

🔒 Correção de segurança (~13/08/2026)

Antes, a accessKey do Baratão (@urbis-baratao-25-combustiveis-key) ia hardcoded no header de uma chamada feita direto do navegador — visível no bundle JS e no Network tab. Corrigido movendo a chamada para um proxy server-side (src/pages/api/authorize-user-for-baratao.ts), com a env GAS_STATION_ACCESS_KEY só acessível no servidor e resposta com Cache-Control: no-store. O mesmo padrão foi aplicado ao fluxo O Globo.

Manager: existe uma branch histórica (SUST-426-onboarding-personalizado-para-baratao-baita) e um template de e-mail promocional "Semana do Consumidor" que destaca o parceiro. Esse template é genérico — qualquer clube pode usá-lo.

baratão
combustível
posto
webview
jwt
segurança
onboarding

Este artigo foi útil?

Artigos relacionados

Voltar para a Documentação Baita