Código v3 simplificado, com health-check integrado e diagnóstico em tempo real.
Diagnóstico do Worker em Tempo Real
Informe a URL do seu Worker e clique em Diagnosticar para verificar se ele está ativo e com o código correto
Causa Raiz do Problema
/) no final, ou estar apontando para o Worker errado.finsight-omie-proxy e finsight) e o FinSight está apontando para o errado.O novo código (v3) responde a um GET /health retornando {"ok":true,"version":"FINSIGHT_WORKER_V3"}. Isso permite verificar, sem login nem chaves OMIE, se o Worker está com o código certo. Use o diagnóstico acima para confirmar antes de testar a integração.
Passo a Passo — Deploy do Worker v3
Worker já criado — só atualizar o código
Acesse dash.cloudflare.com e faça login na sua conta.
No menu lateral, clique em "Workers & Pages".
Na lista, clique no Worker finsight-omie-proxy.
Clique em "Edit Code" (ícone de lápis ou botão azul no canto superior direito).
Apagar tudo e colar o novo código simplificado
Qualquer resquício do código anterior causará conflito. Use Ctrl+A → Delete para garantir.
Clique dentro da área de código do editor.
Pressione Ctrl+A (Windows/Linux) ou Cmd+A (Mac) para selecionar tudo.
Pressione Delete ou Backspace.
O editor deve ficar completamente vazio — sem nenhuma linha.Clique em "Copiar código v3" abaixo e cole no editor (Ctrl+V / Cmd+V).
Clique no botão azul "Deploy" (canto superior direito do editor) e aguarde a mensagem de sucesso.
Mensagem esperada: "Deployed successfully" ou "Your Worker has been deployed"./**
* FinSight — Cloudflare Worker v3 (DEFINITIVO)
* Proxy CORS para API OMIE ERP — Prospecta
*
* FORMATO: Service Worker clássico — sem "export default", sem módulos ES.
* Funciona em 100% das contas Cloudflare sem configuração adicional.
*
* VERSÃO: 3.0 — 2026-03-31
* IDENTIFICADOR: FINSIGHT_WORKER_V3
*/
var OMIE_BASE = 'https://app.omie.com.br/api/v1';
addEventListener('fetch', function (event) {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
// 1. Preflight CORS
if (request.method === 'OPTIONS') {
return new Response(null, { status: 204, headers: corsH() });
}
// 2. Health-check: GET / retorna JSON de status
if (request.method === 'GET') {
var u = new URL(request.url);
var path = u.pathname.replace(/^\/+|\/+$/g, '');
if (!path || path === 'health') {
return json({ ok: true, version: 'FINSIGHT_WORKER_V3', ts: Date.now() }, 200);
}
return json({ error: 'Use POST para chamadas OMIE.' }, 405);
}
// 3. Apenas POST daqui em diante
if (request.method !== 'POST') {
return json({ error: 'Método não permitido. Use POST.' }, 405);
}
// 4. Extrai o endpoint do path
var url = new URL(request.url);
var endpoint = url.pathname.replace(/^\/+|\/+$/g, '');
if (!endpoint) {
return json({ error: 'Endpoint OMIE não informado. Exemplo: POST /geral/categorias' }, 400);
}
var omieUrl = OMIE_BASE + '/' + endpoint + '/';
// 5. Lê o body
var body;
try {
body = await request.text();
JSON.parse(body);
} catch (e) {
return json({ error: 'Body inválido ou não é JSON.', detail: e.message }, 400);
}
// 6. Encaminha para OMIE
var omieRes;
try {
omieRes = await fetch(omieUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
body: body,
});
} catch (e) {
return json({ error: 'Falha ao conectar com OMIE.', detail: e.message, url: omieUrl }, 502);
}
// 7. Repassa resposta com headers CORS
var respBody = await omieRes.text();
var ct = omieRes.headers.get('Content-Type') || 'application/json';
return new Response(respBody, {
status: omieRes.status,
headers: Object.assign({ 'Content-Type': ct, 'X-Worker-Version': 'FINSIGHT_WORKER_V3' }, corsH()),
});
}
function corsH() {
return {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, X-Proxy-Token',
'Access-Control-Max-Age': '86400',
};
}
function json(obj, status) {
return new Response(JSON.stringify(obj), {
status: status || 200,
headers: Object.assign({ 'Content-Type': 'application/json' }, corsH()),
});
}
Confirmar e copiar a URL gerada pelo Cloudflare
Após o deploy, feche o editor clicando em "← finsight-omie-proxy" no topo.
Na seção "Preview" da página do Worker, você verá a URL. Ela terá este formato:
Copie essa URL e use o Diagnóstico no topo desta página para confirmar que o Worker v3 está ativo antes de continuar.
Deve aparecer:{"ok":true,"version":"FINSIGHT_WORKER_V3"}
Salvar URL e testar conexão com o OMIE
No FinSight, clique em Configurações ⚙️ no menu lateral.
Confirme que os campos estão preenchidos:
• App Key:2853300480030https://finsight-omie-proxy.SEU-USUARIO.workers.dev
Clique em "Salvar", depois em "Testar Conexão".
Resultado esperado: badge 🟢 "Conectado" + mensagem de sucesso.Clique em "Sincronizar 🔄" na barra superior para importar os dados financeiros reais.
Sidebar verde "OMIE: Conectado" e dashboards com dados reais da Prospecta.
Guia de diagnóstico rápido para cada mensagem de erro
| Mensagem de erro | Causa provável | Solução |
|---|---|---|
405 — não é JSON |
Worker com código antigo (export default) |
Substituir pelo Worker v3 (Passo 2) |
405 — logo após deploy |
Cache do Cloudflare (versão antiga ainda ativa) | Aguardar 2 min e testar novamente. Se persistir, refazer o deploy. |
400 — Endpoint não informado |
URL do Worker sem o path do endpoint | URL correta no FinSight: sem barra no final (/) |
401 — Credenciais inválidas |
App Key ou App Secret incorretos | Verificar as chaves no painel OMIE → Configurações → API |
403 — Acesso negado |
Permissões insuficientes no App OMIE | Verificar permissões do App no painel OMIE |
502 — Falha ao conectar OMIE |
OMIE instável ou fora do ar | Aguardar alguns minutos e tentar novamente |
| "Proxy indisponível" | URL do Worker vazia ou incorreta no FinSight | Copiar a URL correta do Cloudflare e salvar no FinSight |
Diagnóstico: versão diferente de FINSIGHT_WORKER_V3 |
Worker com código v1 ou v2 ainda implantado | Repetir o Passo 2 (apagar tudo e colar o código v3) |
Confirme cada item antes de considerar a integração concluída