Voltar ao blog
Tutorial

Integrações: como sistemas conversam entre si

Por Flávio Emanuel · · 9 min de leitura

Por que integrar

Sistema que vive isolado obriga alguém a fazer o trabalho manualmente. Pedido entrou no webapp, alguém copia pro sistema de envio. Pagamento confirmou, alguém marca no financeiro. Cliente mandou mensagem, alguém digita a resposta.

Cada passo manual é um ponto de falha. A pessoa esquece, erra o dado, digita o valor errado, esquece de atualizar o status. E quanto mais o negócio cresce, mais esses passos manuais viram gargalo. O que funciona com 10 pedidos por dia quebra com 50.

Integração elimina esse trabalho repetitivo. O sistema faz sozinho o que antes dependia de uma pessoa copiando dado de um lugar pra outro. No AutoPars, são 5 integrações rodando juntas: pagamento, frete, WhatsApp, email e mídia. Cada uma resolve um pedaço do fluxo.

API: a porta de entrada

API (Application Programming Interface) é a interface que permite que um sistema converse com outro. Na prática: você manda uma requisição HTTP com os dados e recebe uma resposta estruturada.

Na prática, funciona assim: seu sistema manda uma requisição com dados estruturados, o outro sistema processa e devolve uma resposta. Você não precisa saber como o outro sistema funciona internamente.

Exemplo real do AutoPars: consultar o status de um envio no Melhor Envio.

GET https://api.melhorenvio.com/api/v2/me/shipment/tracking
Authorization: Bearer SEU_TOKEN

A API responde com JSON contendo o status atual do envio. O sistema lê a resposta e atualiza o pedido automaticamente. O comprador vê “em trânsito” sem ninguém ter digitado nada.

O padrão REST

A maioria das APIs que você vai encontrar segue o padrão REST:

  • URLs representam recursos: /api/products, /api/orders/123
  • Verbos HTTP indicam a ação: GET = ler, POST = criar, PUT = atualizar, DELETE = remover
  • Respostas vêm em JSON

Quando você domina REST, consegue integrar com praticamente qualquer serviço moderno. A lógica é sempre a mesma — muda o endpoint, muda o payload, mas o padrão é igual. E os códigos de status HTTP seguem convenção: 200 é sucesso, 201 é criado, 400 é erro de validação, 401 é não autenticado, 404 é não encontrado, 500 é erro interno do servidor. Saber ler esses códigos acelera muito o debugging quando uma integração não funciona.

Webhook: notificação em tempo real

API é quando você pergunta. Webhook é quando o outro sistema te avisa.

A diferença é importante. Se seu sistema precisa saber quando um pagamento foi confirmado, tem duas abordagens:

Polling (ruim): seu sistema pergunta pro gateway de pagamento a cada 30 segundos: “pagou? pagou? pagou?” Gasta recurso, é lento, e se o intervalo for grande demais, o cliente espera sem necessidade.

Webhook (bom): o gateway de pagamento manda um POST pra uma URL do seu sistema no momento exato da confirmação. Instantâneo, eficiente, sem desperdício.

No AutoPars, quando o comprador paga um boleto no Asaas, o sistema não fica perguntando. O Asaas manda um POST automático:

{
  "event": "PAYMENT_CONFIRMED",
  "payment": {
    "id": "pay_123",
    "value": 299.90,
    "status": "CONFIRMED"
  }
}

O sistema recebe, valida a origem, atualiza o pedido e dispara as próximas ações: notifica o vendedor via Zapi (WhatsApp) e manda email de confirmação via Resend. Tudo automático, em segundos.

Cuidados com webhooks

Webhooks funcionam bem mas precisam de atenção:

Sempre valide a origem. Qualquer pessoa pode mandar um POST pra sua URL de webhook. Valide token, assinatura ou IP do remetente. Sem validação, alguém pode simular um pagamento confirmado e liberar produto sem pagar.

Trate duplicatas. O mesmo evento pode chegar mais de uma vez (o provedor reenvia se não recebeu 200 OK na primeira tentativa). Seu sistema precisa ser idempotente: receber o mesmo evento duas vezes não pode causar ação duplicada.

Responda rápido. Retorne 200 OK imediatamente e processe em background se for pesado. Se demorar pra responder, o provedor pode considerar que falhou e reenviar.

E logue tudo. Quando algo não funciona (e vai acontecer), o log do webhook recebido é o que salva. Sem log, você fica no escuro tentando adivinhar o que deu errado.

As 5 integrações do AutoPars

Asaas (pagamento)

O fluxo completo: sistema cria a cobrança via API (boleto, Pix ou cartão) → cliente paga → Asaas avisa via webhook → sistema atualiza o pedido → notifica vendedor e comprador.

O que parece simples tem camadas. Boleto vence e precisa de tratamento (reenviar cobrança? cancelar pedido?). Pix confirma em tempo real mas precisa de QR code gerado dinamicamente. Cartão pode ter chargeback semanas depois e precisa de estorno no sistema. Cada forma de pagamento tem lógica própria.

No AutoPars, implementei split de pagamento: o valor da venda é dividido automaticamente entre a plataforma (taxa) e o vendedor (valor líquido). O Asaas faz o split no nível do gateway — o dinheiro já cai dividido.

Melhor Envio (frete)

Três etapas: cálculo de frete, geração de etiqueta e rastreamento.

O comprador coloca o CEP, o sistema consulta a API do Melhor Envio com o CEP de origem (vendedor), CEP de destino (comprador), e dimensões do produto. Retorna opções de transportadora com preço e prazo. O comprador escolhe, e quando o pedido é confirmado, o sistema gera a etiqueta de envio automaticamente.

Rastreamento funciona via webhook: o Melhor Envio avisa quando o status do envio muda (postado, em trânsito, saiu pra entrega, entregue). O sistema atualiza e o comprador vê o status sem ninguém copiar código de rastreio manualmente.

Zapi (WhatsApp)

Notificação automática pelo WhatsApp. “Seu pedido foi confirmado”, “sua peça saiu pra entrega”, “pagamento recebido”. O sistema manda a mensagem via API da Zapi. Ninguém digita manualmente.

WhatsApp tem uma taxa de abertura muito maior que email. No contexto do AutoPars, onde o vendedor é dono de loja de autopeças e vive no WhatsApp, receber notificação ali é mais eficiente que email.

Resend (email transacional)

Confirmação de cadastro, recuperação de senha, status de pedido, nota fiscal. Email transacional é diferente de email marketing — é email que o sistema dispara em resposta a uma ação do usuário, não campanha em massa.

Resend tem uma API limpa e documentação boa. Implementar leva horas, não dias. O email sai formatado em HTML com template responsivo. Um detalhe que faz diferença: email transacional precisa de domínio verificado com SPF e DKIM configurados corretamente, senão cai em spam. O Resend facilita essa parte, mas é responsabilidade do dev garantir que a configuração de DNS tá certa antes de ir pra produção.

Cloudflare Stream (mídia)

Upload de imagens e vídeos de produtos. O vendedor sobe o arquivo no frontend, o sistema salva no Cloudflare com URL otimizada pra CDN global. Imagens servidas do ponto mais próximo do comprador, carregamento rápido.

Como organizo no código

Com 5 integrações no mesmo projeto, organização é o que evita o código virar bagunça. Cada integração é um módulo isolado com sua própria estrutura:

src/
  integrations/
    asaas/
      client.ts       (configuração base: URL, token, headers)
      payments.ts     (criar, consultar, cancelar cobrança)
      webhooks.ts     (handler que recebe e processa eventos)
    melhor-envio/
      client.ts
      shipping.ts     (cálculo de frete, geração de etiqueta)
      tracking.ts     (consulta e webhook de rastreamento)
    whatsapp/
      client.ts
      messages.ts     (templates de mensagem, envio)
    resend/
      client.ts
      emails.ts       (templates, envio transacional)
    cloudflare/
      client.ts
      upload.ts       (upload de imagem/vídeo, URL de CDN)

Se o Asaas muda a API v2 pra v3, só mexo na pasta asaas/. Se preciso trocar Zapi por Evolution API pro WhatsApp, troco a implementação dentro de whatsapp/ sem mexer no resto do sistema. Cada integração é uma caixa preta pro resto do código.

Práticas que evitam dor de cabeça

Tokens de API ficam em variáveis de ambiente, nunca no código. Se vazar um token no Git, o estrago pode ser grande.

Tenha fallback pra quando a API externa cair. E ela vai cair. Melhor Envio fora do ar não pode impedir o comprador de finalizar o pedido. Mostra mensagem, salva os dados, e processa quando voltar.

Logue todas as requisições e respostas. Quando o webhook do Asaas chega e o pedido não atualiza, o log mostra se o evento chegou, se o payload tava correto, e onde o processamento falhou.

Timeout de 5 segundos em toda requisição externa. Se a API não responder em 5 segundos, não vai responder. Seu sistema não pode ficar travado esperando.

E retry com backoff exponencial pra falhas temporárias. Primeira tentativa imediata, segunda em 1 segundo, terceira em 4 segundos. Se falhou 3 vezes, loga o erro e notifica.

Quanto isso adiciona ao projeto

Cada integração adiciona de 1 a 2 semanas ao desenvolvimento, dependendo da complexidade da API e da qualidade da documentação.

APIs bem documentadas (Resend, Stripe) são rápidas. Docs claros, SDK atualizado, exemplos que funcionam. Implemento em 3-4 dias.

APIs com documentação ruim ou SDK desatualizado levam mais tempo. Preciso testar endpoint por endpoint, descobrir comportamentos não documentados, e tratar erros que a documentação não menciona.

No AutoPars com 5 integrações, isso representou cerca de 40% do tempo total de desenvolvimento. Pro usuário final é invisível — ele clica em “comprar” e tudo acontece. Mas por trás, são 5 sistemas diferentes conversando pra fazer aquele clique funcionar.

Se você tá planejando um webapp sob medida, leve integrações em conta no orçamento e no prazo. Cada API que o sistema precisa conversar adiciona complexidade real.

Próximo passo

Precisa de um dev que entrega de verdade?

Seja pra um projeto pontual, reforço no time, ou parceria de longo prazo. Vamos conversar.

Falar no WhatsApp

Respondo em até 2h durante horário comercial.