Customizar URL Afiliados

Postado em 17/09/2009 por Edvan

teste

Poucas empresas utilizam o sistema de afiliados que o WHMCS oferece por não conhecer as funcionalidade ou achar bem limitado. Essa semana um cliente me procurou perguntando se era possível alterar a URL de redirecionamento. Inicialmente eu informei que não era possível exceto se alterasse o Domain na aba General. Daí fiquei me perguntando como um sistema desse porte não teria como customizar. Comecei então a dá uma garimpada no fórum oficial da WHMCS e achei este post bem interessante e apartir dele adaptei para a necessidade do cliente.

Poucos sabem mais alguns arquivos do WHMCS não são criptografados com ioncube, por exemplo o aff.php que fica na raiz do WHMCS veja abaixo:

<?phpdefine("CLIENTAREA",true);include("dbconnect.php");include("includes/functions.php");

if (isset($aff)) {    update_query("tblaffiliates",array("visitors"=>"+1"),array("id"=>$aff));    setcookie("WHMCSAffiliateID", $aff, time()+90*24*60*60);}header("HTTP/1.1 301 Moved Permanently");header("Location: ".$CONFIG["Domain"]);?>

Com isso podemos efetuar diversas customizações basta entender um pouquinho de programação PHP ( nada muito dificil, risos ).

Por exemplo a customização que adaptei abaixo permite que possamos usar os grupos/produtos do WHMCS através da URL de indicação dos afiliados e permanecer com a padronização já existente no WHMCS.

<?php

define("CLIENTAREA",true);

include("dbconnect.php");include("includes/functions.php");

if (isset($aff)) {        update_query("tblaffiliates",array("visitors"=>"+1"),array("id"=>$aff));        setcookie("WHMCSAffiliateID", $aff, time()+90*24*60*60);}

$params = '';// redirecionamento para o grupo de produtosif (isset($_GET['gid'])) {        $gid = (int)$_GET['gid'];        if ($gid > 0) {                $params = '?gid=' . $gid;        }

header('HTTP/1.1 301 Moved Permanently');header('Location: ' . $CONFIG['SystemURL'] . '/cart.php' . $params);

}// redirecionamento para o produtoelseif (isset($_GET['pid'])) {        $pid = (int)$_GET['pid'];        if ($pid > 0) {                $params = '?a=add&pid=' . $pid;        }

header('HTTP/1.1 301 Moved Permanently');header('Location: ' . $CONFIG['SystemURL'] . '/cart.php' . $params);}

// redirecionamento padrão, caso na URL não conste o PID ou o GIDelse{header("HTTP/1.1 301 Moved Permanently");header("Location: ".$CONFIG["Domain"]);}

?> 

Exemplo prático:

Padrão = http://www.edvan.com.br/financeiro/aff.php?aff=003 ( redirecionamento para URL http://www.edvan.com.br )

Site principal

Por Produto = http://www.edvan.com.br/financeiro/aff.php?aff=003&pid=23 ( redirecionamento para o carrinho de pagamento do determinado produto )

Produto (pid) determinado

Por Grupo de Produtos = http://www.edvan.com.br/financeiro/aff.php?aff=003&gid=14 ( redirecionamento para o carrinho de pagamento do determinado grupo )

Grupo de Produtos (gid)

O pid ou gid você localiza em Configuration | Products/Services editando o produto ou o grupo, exemplo do grupo:

Exemplo gid

Você poderá customizar o arquivo por exemplo, para o afiliado 003 desejo que seja redirecionado para um determinado link, moleza:

<?php

define("CLIENTAREA",true);

include("dbconnect.php");include("includes/functions.php");

if (isset($aff)) {    update_query("tblaffiliates",array("visitors"=>"+1"),array("id"=>$aff));    setcookie("WHMCSAffiliateID", $aff, time()+90*24*60*60);}

if ($aff=="003") {header("HTTP/1.1 301 Moved Permanently");header('Location: http://servicos.edvan.com.br/');} 

else{

header("HTTP/1.1 301 Moved Permanently");header("Location: ".$CONFIG["Domain"]);

}?>

Resultado quando acessar o link http://www.edvan.com.br/financeiro/aff2.php?aff=003 ele vai gravar o cookie para aquele afiliado e vai redirecionar para o link especifico. Usando o $_GET dá para criar códigos e redirecionar para hotsite e etc…

Gostou? Comente!



Leia Também:

  • YMA

    Muito bom, parabéns! Acho que vou usar isso, obrigado.

  • http://www.diretoriobrasil.com.br Felipe

    Então é só add isso “aff=003&gid=14″ depois da url do produto para sentenciar uma venda do afiliado?

    desculpe, não consegui entender muito bem.

    como monto uma URL de um produto para caracterizar a venda do afiliado?

    parabens pela iniciativa!!!
    abs!

  • http://www.whmcs.blog.br Edvan

    Não… só precisa adicionar &gid=XX ou pid=XX

    Dá uma lida novamente no post pois tá explicando como vc. consegue obter o ID do grupo ou produto.

  • http://www.whmcs.blog.br Edvan

    Obrigado Yuri.

  • jaldemir

    após fazer estas mudanças ocorre o seguinte erro ao cadastrar um novo afiliado :
    Warning: Division by zero in /home/sejavirt/public_html/whmcs/affiliates.php on line 0
    não cadastrando o usuario como afiliado

    tem como me ajudar sei que este tópico é antigo mas estou precisando de ajuda

  • http://www.whmcs.blog.br Edvan

    Jaldemir,

    Verifique o código PHP pois tem algo errado.

  • http://www.megahost.com.br Alexandre Duran

    Como sempre, perfeita a dica ! O Matt deveria te por como sócio do WHMCS :-)

  • http://www.whmcs.blog.br Edvan

    Vlw.

    Tá mais fácil o mar secar kkkk

  • http://rendanahora.hd1.com.br Renda na Hora

    gostei do post

  • Fabrício

    O que devo colocar depois do $CONFIG para que o código abra um outro site que não seja o mesmo domínio registrado no WHMCS?

    Se alguém puder ajudar, eu ficaria muito grato.

    Abraços, e parabéns pelo post.

  • andrea

    olá, maravilha de dica.

    Só fiquei com uma dúvida, quando é o caso de vários afliados eu posso criar um redirecionamento para cada um? é só repetir a linha de comando if ($aff==”003″) ….Certo?

    Comigo aconteceu o seguinte:Eu queria que quando o cliente clicasse fosse para a página do vendedor. fiz o primeiro, rodou perfeito.
    Fiz o segundo, testei. Rodou perfeito.

    Quando fiz o terceiro, mandei ir para a página principal, pq o terceiro não era de vendedor, e sim somente de afiliado.

    Agora percebi que quando clico nos links gerados vão todos para a página inicial. O sistema contabiliza a visita direitinho, mas não está mais indo para a página de cada vendedor.

    Já vi e revi os códigos, tentei repetir todo o comando else abaixo do final de cada linha de redirecionamento e nada. Será que terei que fazer um código inteiro (da primeira a ultima linha) para cada vendedor?

  • http://www.whmcs.blog.br Edvan

    Andrea,

    Certamente é codificação, você tá errando em algo.

    • andrea

      Oi Edvan,

      Mas é ai que está a minha dúvida.

      Eu devo repetir tudo para cada afiliado? se não for tudo repito começando onde e terminando onde?

      Pelo que percebi ele atribui a todos a linha que designei apenas ao último. E não estou conseguindo que cada um cumpra a sua atribuição.

      Veja como estou fazendo.

      ……

      “+1″),array(“id”=>$aff));
      setcookie(“WHMCSAffiliateID”, $aff, time()+90*24*60*60);
      }

      if ($pid) {
      header(“Location: cart.php?a=add&pid=$pid”);
      exit;
      }

      if ($aff==”005″) {header(“HTTP/1.1 301 Moved Permanently”);header(‘Location: http://xxxxxxxxxxxxxxxx.com/inicio/andrea/‘);}

      if ($aff==”003″) {header(“HTTP/1.1 301 Moved Permanently”);header(‘Location: http://xxxxxxxxxxxxxxxx.com/inicio/lucianavieira/‘);}

      if ($aff==”006″) {header(“HTTP/1.1 301 Moved Permanently”);header(‘Location: http://xxxxxxxxxxxxxxxx.com/inicio/‘);}
      else{
      header(“HTTP/1.1 301 Moved Permanently”);
      header(“Location: “.$CONFIG["Domain"]);

      }?>
      ……..

      Realmente não sei onde estou errando.

  • http://www.whmcs.blog.br Edvan

    Você está errando na codificação.

    Vou te dá uma dica, ao invés de IF use switch http://php.net/manual/en/control-structures.switch.php

  • andrea

    Nossa, obrigadão.

    Nem precisei usar switch.
    dando uma olhada no modelo que enviou vi que era só substituir o “if” por “elseif”.
    Resolveu.
    Eu não conhecia esta função.

    Valeuzão mesmo, me resolveu um grande problema.
    Sou sua fã.

  • Rafael Granado

    Edvan, só tive uma dúvida. Como eu descubro o ID de afiliado de um cliente?

  • http://www.whmcs.blog.br Edvan

    Vá no perfil do cliente, clique no link View Affiliate Details e verá o Affiliate ID conforme exemplo http://awesomescreenshot.com/0a099b882

  • http://www.w3criacoes.com Tiago Matos

    Bom dia! Eu tenho um cliente já cadastrado, é possível afiliar ele à um usuário também já cadastrado? Ou só dá para afiliar novos clientes através da URL?

  • http://www.whmcs.blog.br Edvan
    • http://www.w3criacoes.com Tiago Matos

      Valeu, deu certo! :)

  • http://networkking.com.br Rafael Granado

    Edvan, tenho outra dúvida.

    Eu quero que um afiliado divulgue um link para o cliente apenas se registrar no meu site sem comprar nada, para poder baixar o trial de um produto.

    A pagina do registro seria o register.php, tem como fazer esse link com o affiliate ID incluso?

  • http://www.whmcs.blog.br Edvan

    Rafael,

    Talvez funcione pois fica armazenado em forma de cookie.

    Minha sugestão é que você crie um produto trial e com isso ficará mais fácil e funcional o processamento do afiliado!

  • Elias

    Edvan por favor me ajuda fazer o sistema de afiliados nao estou conseguindo me add no msn: elias_psy_dance@hotmail.com se puder me ajudar agradeço muito.

  • Tiago

    Amigo, como eu faço para direcionar para uma determinada URL.
    Ex: /aff.php?aff=003&URL=http://www.site.com.br/pagina.php 

    Ai depois que computar o código do afiliado vai para a página informada.

    • whmcsblogbr

      Tiago,

      Não entendi o que você precisa… dá uma lida com atenção no post e veja a que ele se propõe.

  • whmcsblogbr

    Eu até citei o exemplo lá:

    if ($aff==”003″) {header(“HTTP/1.1 301 Moved Permanently”);header(‘Location: http://servicos.edvan.com.br/‘);}

    No header você define qualquer URL!

Serviços WHMCS

Enquetes

Você gostou das novidades da Versão 5.0?

View Results

Loading ... Loading ...

Facebook



Licenças WHMCS




Acompanhe