-
[whmcs] hook para remover suspensão por ticket e email
Pessoal,
Hoje eu enchi o saco do Carlo para fazer um um Hook bem bacana p/ whmcs, foram várias horas de testes até que a condição atual do script parece estar 100% funcional.
Objetivo do script:
No meu caso, estou utilizando em conjunto com um departamento de ticket para receber comprovantes de pagamento.
Como alguns clientes tem dificuldade de acessar o painel de controle, eu habilitei este departamento para abrir ticket automaticamente com o envio de emails.
E vamos supor que o site do cliente esteja suspenso, e mesmo sendo um cliente inadimplente, você crie a facilidade do serviço ser reativado automaticamente com a abertura do ticket.
O cliente precisa mencionar no ticket o domínio que está suspenso para que o script faça uma verificação e identifique o domínio do cliente e faça a remoção da suspensão.
Exemplo:
Titulo do ticket = Irrelevante
Texto do ticket:
Cara, pelo amor de deus, esqueci de fazer o pagamento, preciso que meu site volte a funcionar quanto antes, estou enviando o comprovante do deposito feito na sua conta, o site é meusite.com.br
Assim que o cliente abrir o ticket, o hook vai funcionar e vai remover a suspensão do cliente e o mais interessante "temporariamente"
Sendo assim, acredito que clientes que fazem deposito bancario, podem simplesmente enviar um email em vez de ficar no anonimato por ter dificuldade de acessar o painel de cliente.
Vamos a instalação:
Salve este codigo em PHP com o nome "liberarConta.php"
Código PHP:
<?php
function liberarConta($vars) {
if($vars['deptid'] == '1'){
/*
* 1: Qualquer um que enviar o e-mail com um domínio irá ser liberado.
* 0: O domínio só será liberado se o cliente for realmente dono do domínio
*/
$liberar = '1';
function pegaUrl($texto){
$pattern = '/[a-zA-Z0-9\.-]*\.[a-z]{2,}/';
preg_match_all($pattern, $texto, $url);
foreach($url[0] as $key => $value){
if(checkdnsrr($value))
$retorno[] = $value;
}
return $retorno;
}
$dominio = pegaUrl($vars['message']);
$userid = $vars['userid'];
$t = count($dominio);
if($t > 0){
$c = 1;
$sql = '';
foreach($dominio as $key){
if($t == $c)
$sql .= "domain LIKE '%". $key ."%'";
else
$sql .= "domain LIKE '%". $key ."%' OR ";
$c++;
}
include("../../dbconnect.php");
if($liberar == 0)
$sqlComando = "SELECT id FROM tblhosting WHERE userid='".$userid."' AND (" . $sql . ")";
else if($liberar == 1)
$sqlComando = "SELECT id FROM tblhosting WHERE " . $sql;
$query_dominios = mysql_query($sqlComando) or die (mysql_error());
while($query_dominios_while = mysql_fetch_assoc($query_dominios)){
$url = "http://seusite/whmcs/includes/api.php"; # URL to WHMCS API file
$username = "seu login do whmcs"; # Admin username goes here
$password = "sua senha do whmcs"; # Admin password goes here
$postfields["username"] = $username;
$postfields["password"] = md5($password);
$postfields["action"] = "moduleunsuspend"; #action performed by the API:Functions
$postfields["accountid"] = $query_dominios_while['id'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
$data = curl_exec($ch);
curl_close($ch);
$data = explode(";",$data);
foreach ($data AS $temp) {
$temp = explode("=",$temp);
$results[$temp[0]] = $temp[1];
}
if ($results["result"]=="success") {
function somar_dias($data, $dias) {
$data = explode("-", $data);
$resultado = date("Y-m-d", mktime(0, 0, 0, $data[1], $data[2]+$dias, $data[0]));
return $resultado;
}
mysql_query("UPDATE tblhosting SET overideautosuspend='on', overidesuspenduntil='".somar_dias(date("Y-m-d"), 5)."'") or die (mysql_error());
//mail('emailparaverificarbug@email.com.br', 'Debug', 'Sucesso - '.$postfields["accountid"]);
} else {
$erro = "The following error occured: ".$results["message"];
//mail('emailparaverificarbug@email.com.br', 'Debug', $erro);
}
}
}
}
}
add_hook("TicketOpen", 1, "liberarConta");
?>
Você deve configurar algumas linhas no script:
Linha 5 = Coloque o ID do departamento que vai aceitar os emails para remover a suspensão da conta (estou utilizando o departamento com ID 1)
Código PHP:
if($vars['deptid'] == '1'){
Linha 11 = Utilize 0 para receber solicitação de desbloqueio de clientes cadastrados ou 1 para qualquer ticket aberto
Código PHP:
$liberar = '1';
Linhas 54, 55 e 56 = A url da API do whmcs, Login e senha do whmcs
Código PHP:
$url = "http://seusite/whmcs/includes/api.php"; # URL to WHMCS API file
$username = "seu login do whmcs"; # Admin username goes here
$password = "sua senha do whmcs"; # Admin password goes here
Linha 84 = Definir o numero de dias para remoção temporaria da suspensão. (Está marcado com 5 dias)
Código PHP:
mysql_query("UPDATE tblhosting SET overideautosuspend='on', overidesuspenduntil='".somar_dias(date("Y-m-d"), 5)."'") or die (mysql_error());
Linhas 85 e 88 = Email para debug
Código PHP:
//mail('emailparaverificarbug@email.com.br', 'Debug', 'Sucesso - '.$postfields["accountid"]);
Código PHP:
//mail('emailparaverificarbug@email.com.br', 'Debug', $erro);
Depois envie o arquivo para:
Então teste para verificar se está tudo ok
Bom, como foi o Carlo que desenvolveu o script, peço que tire o escorpião do bolso e faça uma doação p/ ele 
Como o codigo ta aberto, se alguém souber de alguma complementação p/ melhorá-lo, acho que vai ajudar.
Segue o link dele: (aceita pagseguro, paypal e Moip)
Mdulo MoIP Pagamento Direto com Retorno Automtico Grátis.
Última edição por chuvadenovembro; 29-07-2011 às 02:15.
-
Muito legal, parabens.
-
-
Opa Alexandre,
O nome dele é Carlos Shneider, não sei se ele tem cadastro aqui no forum.
Mas ele tem feito uns modulos legais p/ whmcs, fez do moip, moip pd, pagseguro e autologin (este ultimo é p/ cliente acessar o whmcs sem precisar digitar login e senha...)
-
Vou ver se da certo aqui.
Obrigado por ajudar.
-
Eu tenho o habito de postar alguns tutoriais ou dicas nos foruns principalmente p/ poder utilizar no futuro, p/ mim é como armazenar nas nuvens hehehehe
Hoje não foi diferente, precisei utilizar este hook (pois não tinha ele mais no meu whmcs) e recorri ao forum.
-
hahaha, cara esperto
-
Chuva, to atras de um HooK ou alternativa para envio de e-mails de cancelamento tipo igual a envios de e-mails de cobrança, tipo configurei whmcs para cancelar contas com 40 dias, de ai tipo com 3 dias avisar ao cliente do cancelamento e exclusão de conta de ai com 5 com 2 dias etc..
To fazendo alguns testes mais ta osso, ideias?
<< favor verificar regras para assinaturas do forum >>
Permissões de Postagem
- Você não pode iniciar novos tópicos
- Você não pode enviar respostas
- Você não pode enviar anexos
- Você não pode editar suas mensagens
Regras do Fórum
|
|