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. 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. 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. 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-checkout e links que contenham "checkout" ou "pay". Para garantir, adicione data-checkout nos seus botões de compra.

  4. 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