mzaidan Postado Junho 6, 2011 Denunciar Share Postado Junho 6, 2011 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 7, 2011 Denunciar Share Postado Junho 7, 2011 http://www.php.net/manual/en/session.examples.basic.php Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mzaidan Postado Junho 7, 2011 Autor Denunciar Share Postado Junho 7, 2011 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 7, 2011 Denunciar Share Postado Junho 7, 2011 https://pagseguro.uol.com.br/desenvolvedor/..._de_dados.jhtmlAi 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mzaidan Postado Junho 7, 2011 Autor Denunciar Share Postado Junho 7, 2011 Valeu cara, tu és o mestre! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mzaidan Postado Junho 7, 2011 Autor Denunciar Share Postado Junho 7, 2011 (editado) Fiz o teste aqui, paguei e retornou para essa página aqui:"http://lojavirtual.moskaurbana.com.br/retorno/"Está sempre retornando para essa página. Editado Junho 7, 2011 por mzaidan Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mzaidan Postado Junho 7, 2011 Autor Denunciar Share Postado Junho 7, 2011 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?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
mzaidan
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
31 respostass a esta questão
Posts Recomendados
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.