Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Postado

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;
            }
        }
    }
});
?>

 


Postado
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

Postado
<?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.

Postado
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.

Postado
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.

Postado

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...

Postado
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();
    }
    
});

 

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.
Nota: Sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Infelizmente, seu conteúdo contém termos que não são permitimos. Edite seu conteúdo para remover as palavras destacadas abaixo.
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Concorda com os nossos termos?

-