DBPixel Postado Agosto 6 Compartilhar Postado Agosto 6 Olá pessoal, Desenvolvi um hook para o WHMCS que redireciona automaticamente o usuário após o login à página de pagamento caso exista ao menos uma fatura vencida. Esse hook pode ajudar a garantir que os clientes "estejam cientes" e "forçar" o pagamento para ter acesso a outras funcionalidades dentro da sua área do cliente e pode ser personalizado conforme necessário. Segue o código do hook: <?php if (!defined("WHMCS")) { die("This file cannot be accessed directly"); } use WHMCS\Database\Capsule; add_hook('ClientAreaPage', 1, function($vars) { // Verifique se o usuário está logado if (isset($_SESSION['uid'])) { // Obtenha o ID do usuário $userId = (int) $_SESSION['uid']; // Consulta para obter a fatura mais vencida do usuário logado $invoice = Capsule::table('tblinvoices') ->where('userid', $userId) ->where('status', 'Unpaid') ->where('duedate', '<', date('Y-m-d')) ->orderBy('duedate', 'asc') ->first(); // Verifique se há uma fatura vencida if ($invoice) { $invoiceId = $invoice->id; $urlContainsInvoiceId = strpos($_SERVER['REQUEST_URI'], ''.$invoiceId) !== false; // Verifique se a página atual não contém o ID da fatura if (!$urlContainsInvoiceId) { $url = 'viewinvoice.php?id=' . $invoiceId; header('Location: ' . $url); exit; } } } }); ?> 3 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Enio F. Postado Agosto 6 Compartilhar Postado Agosto 6 muito interessante, obrigado por compartilhar! 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Eugenio Silva Postado Agosto 6 Compartilhar Postado Agosto 6 1 hora atrás, DBPixel disse: Olá pessoal, Desenvolvi um hook para o WHMCS que redireciona automaticamente o usuário após o login à página de pagamento caso exista ao menos uma fatura vencida. Esse hook pode ajudar a garantir que os clientes "estejam cientes" e "reforçar" o pagamento para ter acesso a outras funcionalidades dentro da sua área do cliente e pode ser personalizado conforme necessário. Segue o código do hook: <?php if (!defined("WHMCS")) { die("This file cannot be accessed directly"); } use WHMCS\Database\Capsule; add_hook('ClientAreaPage', 1, function($vars) { // Verifique se o usuário está logado if (isset($_SESSION['uid'])) { // Obtenha o ID do usuário $userId = (int) $_SESSION['uid']; // Consulta para obter a fatura mais vencida do usuário logado $invoice = Capsule::table('tblinvoices') ->where('userid', $userId) ->where('status', 'Unpaid') ->where('duedate', '<', date('Y-m-d')) ->orderBy('duedate', 'asc') ->first(); // Verifique se há uma fatura vencida if ($invoice) { $invoiceId = $invoice->id; $urlContainsInvoiceId = strpos($_SERVER['REQUEST_URI'], ''.$invoiceId) !== false; // Verifique se a página atual não contém o ID da fatura if (!$urlContainsInvoiceId) { $url = 'viewinvoice.php?id=' . $invoiceId; header('Location: ' . $url); exit; } } } }); ?> Te mandei add 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Musial Postado Agosto 6 Compartilhar Postado Agosto 6 <?php if (!defined("WHMCS")) { die("This file cannot be accessed directly"); } use WHMCS\Database\Capsule; add_hook('ClientAreaPage', 1, function($vars) { // Verifique se o usuário está logado if (isset($_SESSION['uid'])) { // Obtenha o ID do usuário $userId = (int) $_SESSION['uid']; // Verifique se já redirecionou após o login if (!isset($_SESSION['redirected_after_login'])) { // Consulta para obter a fatura mais vencida do usuário logado $invoice = Capsule::table('tblinvoices') ->where('userid', $userId) ->where('status', 'Unpaid') ->where('duedate', '<', date('Y-m-d')) ->orderBy('duedate', 'asc') ->first(); // Verifique se há uma fatura vencida if ($invoice) { $invoiceId = $invoice->id; $urlContainsInvoiceId = strpos($_SERVER['REQUEST_URI'], ''.$invoiceId) !== false; // Verifique se a página atual não contém o ID da fatura if (!$urlContainsInvoiceId) { $url = 'viewinvoice.php?id=' . $invoiceId; $_SESSION['redirected_after_login'] = true; header('Location: ' . $url); exit; } } } } }); ?> Segue uma outra versão do hook desenvolvido pelo @DBPixel, onde nessa versão ele redireciona o usuário apenas uma vez (por sessão) para a fatura vencida, e não "prende" o usuário nessa fatura até pagá-la. 3 Citar Link para o comentário Compartilhar em outros sites More sharing options...
MMHospedagem Postado Agosto 7 Compartilhar Postado Agosto 7 Em 06/08/2024 em 15:58, Musial disse: <?php if (!defined("WHMCS")) { die("This file cannot be accessed directly"); } use WHMCS\Database\Capsule; add_hook('ClientAreaPage', 1, function($vars) { // Verifique se o usuário está logado if (isset($_SESSION['uid'])) { // Obtenha o ID do usuário $userId = (int) $_SESSION['uid']; // Verifique se já redirecionou após o login if (!isset($_SESSION['redirected_after_login'])) { // Consulta para obter a fatura mais vencida do usuário logado $invoice = Capsule::table('tblinvoices') ->where('userid', $userId) ->where('status', 'Unpaid') ->where('duedate', '<', date('Y-m-d')) ->orderBy('duedate', 'asc') ->first(); // Verifique se há uma fatura vencida if ($invoice) { $invoiceId = $invoice->id; $urlContainsInvoiceId = strpos($_SERVER['REQUEST_URI'], ''.$invoiceId) !== false; // Verifique se a página atual não contém o ID da fatura if (!$urlContainsInvoiceId) { $url = 'viewinvoice.php?id=' . $invoiceId; $_SESSION['redirected_after_login'] = true; header('Location: ' . $url); exit; } } } } }); ?> Segue uma outra versão do hook desenvolvido pelo @DBPixel, onde nessa versão ele redireciona o usuário apenas uma vez (por sessão) para a fatura vencida, e não "prende" o usuário nessa fatura até pagá-la. Olá que legal, vou tentar ajudar tambem! Segue minha versão. <?php if (!defined("WHMCS")) { die("This file cannot be accessed directly"); } use WHMCS\Database\Capsule; add_hook('UserLogin', 1, function($vars) { $userId = $vars["user"]["id"]; $invoice = Capsule::table('tblinvoices')->where('userid', $userId)->where('status', 'Unpaid')->where('duedate', '<', date('Y-m-d'))->orderBy('duedate', 'asc')->first(); if ($invoice) { $invoiceId = $invoice->id; $url = "viewinvoice.php?id={$invoiceId}"; header('Location: ' . $url); exit(); } }); O codigo acima faz exatamente a mesma coisa porem ele faz o redirecionamento no login do usuario. 1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
LtiWeb Soluções Postado Agosto 7 Compartilhar Postado Agosto 7 Nossa eu não uso WHMCS a uns 7 anos... mais quando vejo essas idéias chega até coça ! rsrsrsrsrsr 1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
DBPixel Postado Agosto 8 Autor Compartilhar Postado Agosto 8 17 horas atrás, LtiWeb Soluções disse: Nossa eu não uso WHMCS a uns 7 anos... mais quando vejo essas idéias chega até coça ! rsrsrsrsrsr Hahahaha, A idéia e distribuir estas utilidades pro pessoal, se tudo correr bem até o mês que vem tentaremos disponibilizar um autologin gratuito e outros módulos, gateways, os módulos do gofas nos auxiliaram muito, esses hooks e addons podem auxiliar outros também. 1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Streaming Postado Agosto 8 Compartilhar Postado Agosto 8 Os 2 primeiros códigos, eu copiei e colei num arquivo que criei em PHP e subi na conta do meu WHMCS e ambos deram certo. Já o do nosso amigo @MMHospedagem, fazendo exatamente igual, dá esta mensagem: Citar Oops! Something went wrong and we couldn't process your request. Please go back to the previous page and try again. Não conheço programação, mas me chamou atenção o código ser bem curto, então pode ser que eu tivesse de fazer mais algo, em vez de apenas copiar igual fiz com os códigos que foram postados antes... 1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
MMHospedagem Postado Agosto 8 Compartilhar Postado Agosto 8 50 minutos atrás, Streaming disse: Os 2 primeiros códigos, eu copiei e colei num arquivo que criei em PHP e subi na conta do meu WHMCS e ambos deram certo. Já o do nosso amigo @MMHospedagem, fazendo exatamente igual, dá esta mensagem: Não conheço programação, mas me chamou atenção o código ser bem curto, então pode ser que eu tivesse de fazer mais algo, em vez de apenas copiar igual fiz com os códigos que foram postados antes... O erro esta no Capsule::table esqueci de declara no inicio do codigo use WHMCS\Database\Capsule; segue codigo corrigido <?php if (!defined("WHMCS")) { die("This file cannot be accessed directly"); } use WHMCS\Database\Capsule; add_hook('UserLogin', 1, function($vars) { $userId = $vars["user"]["id"]; $invoice = Capsule::table('tblinvoices')->where('userid', $userId)->where('status', 'Unpaid')->where('duedate', '<', date('Y-m-d'))->orderBy('duedate', 'asc')->first(); if ($invoice) { $invoiceId = $invoice->id; $url = "viewinvoice.php?id={$invoiceId}"; header('Location: ' . $url); exit(); } }); 1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.