DBPixel Posted August 6 Share Posted August 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 Quote Link to comment Share on other sites More sharing options...
Enio F. Posted August 6 Share Posted August 6 muito interessante, obrigado por compartilhar! 0 Quote Link to comment Share on other sites More sharing options...
Eugenio Silva Posted August 6 Share Posted August 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 Quote Link to comment Share on other sites More sharing options...
Musial Posted August 6 Share Posted August 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 Quote Link to comment Share on other sites More sharing options...
MMHospedagem Posted August 7 Share Posted August 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 Quote Link to comment Share on other sites More sharing options...
LtiWeb Soluções Posted August 7 Share Posted August 7 Nossa eu não uso WHMCS a uns 7 anos... mais quando vejo essas idéias chega até coça ! rsrsrsrsrsr 1 Quote Link to comment Share on other sites More sharing options...
DBPixel Posted August 8 Author Share Posted August 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. 0 Quote Link to comment Share on other sites More sharing options...
Streaming Posted August 8 Share Posted August 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 Quote Link to comment Share on other sites More sharing options...
MMHospedagem Posted August 8 Share Posted August 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.