Voltar
Integrar suas páginas de venda
Você instala este trecho de código uma única vez em cada página de venda. Depois disso, nunca mais precisa mexer no código do projeto: os links de checkout dos embaixadores são resolvidos automaticamente pelo painel.
- 1
Cadastre o produto no painel
Em Administração → Produtos, informe nome, identificador, a URL da página de venda e o link de checkout padrão (usado quando não há embaixador). - 2
Cadastre os embaixadores
Em Administração → Embaixadores, adicione nome, email e o código que aparecerá na URL. Só emails cadastrados conseguem entrar no painel. - 3
Cole o código na página de venda
<!-- Programa de Embaixadores — cole antes de </body> --> <script> (function () { var API = "https://seu-painel.lovable.app/api/public/affiliate-link"; var PRODUTO = "meu-produto"; var KEY = "amb_ref_" + PRODUTO; // 1) Codigo no final da URL: https://suapagina.com/ae001 var partes = location.pathname.split("/").filter(function (p) { return p; }); var ultima = partes.length ? partes[partes.length - 1] : ""; var ref = /^[A-Za-z]{2}[A-Za-z0-9-]{1,30}$/.test(ultima) && ultima !== PRODUTO ? ultima : ""; // 2) Ou no formato ?ref=ae001 if (!ref) { var params = new URLSearchParams(location.search); ref = params.get("ref") || params.get("emb") || ""; } // Sem codigo na URL => pagina original, mantem o checkout padrao. if (!ref) return; try { localStorage.setItem(KEY, ref); } catch (e) {} fetch(API + "?ref=" + encodeURIComponent(ref) + "&product=" + encodeURIComponent(PRODUTO)) .then(function (r) { return r.json(); }) .then(function (d) { if (!d || !d.checkout_url) return; // Troca todos os botoes/links de compra pelo checkout do embaixador var alvos = document.querySelectorAll('[data-checkout], a[href*="checkout"], a[href*="pay"]'); for (var i = 0; i < alvos.length; i++) alvos[i].setAttribute("href", d.checkout_url); // Mostra o nome do embaixador onde existir data-embaixador if (d.ambassador_name) { var nomes = document.querySelectorAll("[data-embaixador]"); for (var j = 0; j < nomes.length; j++) nomes[j].textContent = d.ambassador_name; } // Registra o clique (opcional) if (d.is_affiliate && d.ambassador_id) { document.addEventListener("click", function (ev) { var a = ev.target && ev.target.closest ? ev.target.closest("a") : null; if (!a || a.getAttribute("href") !== d.checkout_url) return; try { fetch(API, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ ambassador_id: d.ambassador_id, product_id: d.product_id }), keepalive: true }); } catch (e) {} }, true); } }) .catch(function () {}); })(); </script>Ele substitui automaticamente qualquer link com o atributo
data-checkoute links que contenham "checkout" ou "pay". Para garantir, adicionedata-checkoutnos seus botões de compra. - 4
Divulgação
Cada embaixador copia no painel o próprio link:suapagina.com/produto?ref=CODIGO. O código fica salvo no navegador, então funciona mesmo se o visitante navegar entre páginas.
Endpoint público
Se preferir integrar do seu jeito, consulte diretamente:
GET /api/public/affiliate-link?ref=CODIGO&product=IDENTIFICADOR