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 )
Por Produto = http://www.edvan.com.br/financeiro/aff.php?aff=003&pid=23 ( redirecionamento para o carrinho de pagamento do determinado produto )

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 )
O pid ou gid você localiza em Configuration | Products/Services editando o produto ou o grupo, exemplo do grupo:
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!