Ir para conteúdo
Fórum Script Brasil
  • 0

Sistema De Bloqueio Por Falta De Pagamento


mzaidan

Pergunta

Pessoal, estou montando um site.

Nesse site existirá uma contribuição.

Assim, gostaria de saber se alguém tem algum script pronto, que bloqueie o acesso da pessoa por falta de pagamento.

Assim que ela pagar, junto ao pagseguro, e o pagamento computado, o acesso seria liberado automaticamente.

Alguém tem algo do tipo?

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
O que interessa é isto (https://pagseguro.uol.com.br/desenvolvedor/retorno_automatico_de_dados.jhtml):

<?php

header('Content-Type: text/html; charset=ISO-8859-1');

define('TOKEN', 'cole aqui o token do vendedor');

class PagSeguroNpi {
    
    private $timeout = 20; // Timeout em segundos
    
    public function notificationPost() {
        $postdata = 'Comando=validar&Token='.TOKEN;
        foreach ($_POST as $key => $value) {
            $valued    = $this->clearStr($value);
            $postdata .= "&$key=$valued";
        }
        return $this->verify($postdata);
    }
    
    private function clearStr($str) {
        if (!get_magic_quotes_gpc()) {
            $str = addslashes($str);
        }
        return $str;
    }
    
    private function verify($data) {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml");
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_TIMEOUT, $this->timeout);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        $result = trim(curl_exec($curl));
        curl_close($curl);
        return $result;
    }

}

if (count($_POST) > 0) {
    
    // POST recebido, indica que é a requisição do NPI.
    $npi = new PagSeguroNpi();
    $result = $npi->notificationPost();
    
    $transacaoID = isset($_POST['TransacaoID']) ? $_POST['TransacaoID'] : '';
    
    if ($result == "VERIFICADO") {
        //O post foi validado pelo PagSeguro.
    } else if ($result == "FALSO") {
        //O post não foi validado pelo PagSeguro.
    } else {
        //Erro na integração com o PagSeguro.
    }
    
} else {
    // POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro.
    // No término do checkout o usuário é redirecionado para este bloco.
    ?>
    <h3>Obrigado por efetuar a compra.</h3>
    <?php
}

?>
O script já está todo comentado, a parte onde você vai implementar é no final:
if (count($_POST) > 0) {
    
    // POST recebido, indica que é a requisição do NPI.
    $npi = new PagSeguroNpi();
    $result = $npi->notificationPost();
    
    $transacaoID = isset($_POST['TransacaoID']) ? $_POST['TransacaoID'] : '';
    
    if ($result == "VERIFICADO") {
        //O post foi validado pelo PagSeguro.
    } else if ($result == "FALSO") {
        //O post não foi validado pelo PagSeguro.
    } else {
        //Erro na integração com o PagSeguro.
    }
    
} else {
    // POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro.
    // No término do checkout o usuário é redirecionado para este bloco.
    ?>
    <h3>Obrigado por efetuar a compra.</h3>
    <?php
}
Aqui:
if ($result == "VERIFICADO") {
        //O post foi validado pelo PagSeguro.
    }
Você deve verificar o que retornou do gateway na variável $StatusTransacao se foi Completo ou Aprovado é porque o pagamento foi feito, caso contrário não foi feito ainda ou está cancelado (tem todos os status no link que passei), logo, você teria que testar:
if($result == "VERIFICADO" AND ($StatusTransacao == 'Completo' OR $StatusTransacao == 'Aprovado')){
        //Atualiza o seu BD
    }

Eu não entendi essa variável $StatusTransacao.

Coloco assim mesmo como você disse?

porque não a vi no código do pagseguro

Link para o comentário
Compartilhar em outros sites

  • 0

https://pagseguro.uol.com.br/desenvolvedor/..._de_dados.jhtml

Ai tem a lista de todas as informações que são enviadas ao site, na tabela a coluna NOME são os nomes dos campos/variáveis que são enviados para o site, a classe já transforma tudo em variáveis para serem usadas.

Link para o comentário
Compartilhar em outros sites

  • 0

Não estou entendendo como essa página ficaria retornando os posts.

Suponha que uma compra demore 2 dias para ser dada como certa, como que essa mesma página vai me mostrar esses dados??

Eu não teria que gravar nada nela? Tipo o e-mail do cliente, sei la, alguma coisa.

Não estou entendendo muito bem o que fazer.

É só colocar esse código com meu token e pronto??

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

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

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...