Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

herculesmarketing

retorno automatico pagseguro com autoentrega de produtos digitais.(PHP

Recommended Posts

Olá pessoal. esse é meu primeiro tópico no forum imasters. estou perdidinho da silva!(acho que é consequencia de eu ter feitos cursos xués de php asp, javascript, mysql onde quase nada aprendi e tive que apelar pros cursos "completos" em 25 aulas de CD-roms nas bancas de revistas rsrs), em fim, faltei a aula de logica, algoritimos, e não desenvolvo aplicações(ainda vou estudar logica como louco que acho que sou rsrs), por não saber "escrever" em nenhuma linguagem, meu negogocio e ser apenas um fuçador, se estou usando CMS, ao tentar instalar um plugin, module, component, o sistema me retorna um erro, eu raramente vou perguntando, depois de fazer muitas pesquisas com inumeras variações de palavras chaves relacionadas no google, e ou procurar interpretar o erro, e baseado no diretorio apresentado no erro, encontro o arquivo(se em php ou xml ou .ini), abro e encontro o erro e FIX! faço a correção ou adptação, dificilmente pergunto de cara...mas...

 

Mas estou a semanas apanhando para o retorno automatico com entrega via downloads de infoprodutos, ja na area guia do desenvolvedor no pagseguro, baixei tudo quanto foi biblioteca(magento, oscommerce, joomla-virtuemart, WP-ecommerce; o ideal seria aprender jogar isso num mini site que fiz em html + css + php + mysql) baixei tudo quanto foi pagina de guia, mas não consigo desencalhar! o lance é o seguinte: ta quase tudo explicadinho, mas nunca dizem onde aquele código vai.. onde ele vai ser "jogado": em um scrip php no meu diretorio home; ou naquela pagina da minha pagseguro onde geramos o Token e ativamos a URL? temo que ter um scrip com função mail.php, o que eu jogo no corpo do meu site?

 

alguém poderia por favor jogar um passo a passo aqui no forum ao pé da letra? :(

 

----> o comprador entraria no meu site, efetuaria a compra, recebria um email de retorno avisando que a transação foi feita, (obrigado pela sua compra, estaremos aguardando a efetivação do pagamento.

E ao ser efetivado esse pagamento, a pessoa receberia os arquivos comprados via downloads automaticamente. (tem gente vendendo isso na web)

no seu emails(se enviado pelo pagseguro atraves de email apos o pagamento onde envio esses arquivos para o pagseguro?) ou essa entrega é feita por uma pagina de downloads que eu mesmo faço, e o pagseguro envia o link da mesma por email? To perdido... :( alguem me ajuda e a milhares de pobres mortais que trabalham com produtos digitais que fazem sucesso no ecommerce no mundo todo? ja fiz uma venda de faturei 49,00 e to com espectativa de futuro melhor minha gente..

procurei video tutorial(incrivel ninguem ter hospedado isso no youtube!), e outros posts em diversos forums mas não obtive êxito :(

 

Help me please :(

Abraço aê.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola eu tenho esperiencia ja nessa area de venda

no seu caso axo q você queria tipo colocar um sistema q a pessoa pagasse e recebese no email o produto digital, tipo eu ñ faço assim, mas talves seja possivel, no pag seguro ñ da pra hospeda, o q você pode fazer é assim, a pessoa compra ai você hospeda o arquivo no 4shared ai asim q o pagamneto for efetuado o pag seguro envia a senha parea abrir o arquivo que você hospedou, por exemplo pegue seu produto digital coloque numa pasta zipada com senha , e hospede, ai a pessoa baixa e usa a senha para abrir, eu uso esse metodo e facil simples e garantido , olha o meu http://www.artnolapis.tk

ai eu vendo um curso de desenho, a pessoa baixa paga e eu passo a senha pra ela abrir

mas ñ se esqueça de avisar as pessoas baixarem o arquivo primeiro, porq e se a pessoa paga e o servidor onde da hospedado sai do ar?

o q sei é isso ñ sei se ajuda

qualquer duvida só perguntar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola eu tenho esperiencia ja nessa area de venda

no seu caso axo q você queria tipo colocar um sistema q a pessoa pagasse e recebese no email o produto digital, tipo eu ñ faço assim, mas talves seja possivel, no pag seguro ñ da pra hospeda, o q você pode fazer é assim, a pessoa compra ai você hospeda o arquivo no 4shared ai asim q o pagamneto for efetuado o pag seguro envia a senha parea abrir o arquivo que você hospedou, por exemplo pegue seu produto digital coloque numa pasta zipada com senha , e hospede, ai a pessoa baixa e usa a senha para abrir, eu uso esse metodo e facil simples e garantido , olha o meu http://www.artnolapis.tk

ai eu vendo um curso de desenho, a pessoa baixa paga e eu passo a senha pra ela abrir

mas ñ se esqueça de avisar as pessoas baixarem o arquivo primeiro, porq e se a pessoa paga e o servidor onde da hospedado sai do ar?

o q sei é isso ñ sei se ajuda

qualquer duvida só perguntar.

 

Welton: entenda a minha questão: entregar pelo rapidshare seria uma forma de entrega, e isso eu posso conseguir sem precisar dele e de forma independente, simplesmente criando um area restria a um diretorio do meu site usando php para permitir só entradas de membros que pagaram, mas ainda assim precisaria de verificar os pagamentos para poder liberar a senha e o importante é ter essa entrega sem nenhuma entervenção minha, ou seja, ele paga e recebe sem eu ao menos abrir meu email. preguiça minha? sou muito folgado? NÃO, é porque temos que nos adaptar as novas tecnologias, outras pessoas estão trabalando deforma segura, e arpida tipo assim> pagou, certamente receberá o produto, não será minha ausencia da internet por estar por ex. doente, blecaute da internet aqui na minha cidadizinha etc...pra eu poder sair de ferias e ter meu negocio de vendas digitais rodando, isso é possivel sim, e sei de gente que faz assim. o retorno auitomatico do pagseguro pode sim fazer a entrega depois de eles detectarem o pagamento, sem menos você saber que vendeu. e nem o cliente espera por minhas ações, comodidade para ele tambem. mas valeu a intenção. OBrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal. esse é meu primeiro tópico no forum imasters. estou perdidinho da silva!(acho que é consequencia de eu ter feitos cursos xués de php asp, javascript, mysql onde quase nada aprendi e tive que apelar pros cursos "completos" em 25 aulas de CD-roms nas bancas de revistas rsrs), em fim, faltei a aula de logica, algoritimos, e não desenvolvo aplicações(ainda vou estudar logica como louco que acho que sou rsrs), por não saber "escrever" em nenhuma linguagem, meu negogocio e ser apenas um fuçador, se estou usando CMS, ao tentar instalar um plugin, module, component, o sistema me retorna um erro, eu raramente vou perguntando, depois de fazer muitas pesquisas com inumeras variações de palavras chaves relacionadas no google, e ou procurar interpretar o erro, e baseado no diretorio apresentado no erro, encontro o arquivo(se em php ou xml ou .ini), abro e encontro o erro e FIX! faço a correção ou adptação, dificilmente pergunto de cara...mas...

 

Mas estou a semanas apanhando para o retorno automatico com entrega via downloads de infoprodutos, ja na area guia do desenvolvedor no pagseguro, baixei tudo quanto foi biblioteca(magento, oscommerce, joomla-virtuemart, WP-ecommerce; o ideal seria aprender jogar isso num mini site que fiz em html + css + php + mysql) baixei tudo quanto foi pagina de guia, mas não consigo desencalhar! o lance é o seguinte: ta quase tudo explicadinho, mas nunca dizem onde aquele código vai.. onde ele vai ser "jogado": em um scrip php no meu diretorio home; ou naquela pagina da minha pagseguro onde geramos o Token e ativamos a URL? temo que ter um scrip com função mail.php, o que eu jogo no corpo do meu site?

 

alguém poderia por favor jogar um passo a passo aqui no forum ao pé da letra? :(

 

----> o comprador entraria no meu site, efetuaria a compra, recebria um email de retorno avisando que a transação foi feita, (obrigado pela sua compra, estaremos aguardando a efetivação do pagamento.

E ao ser efetivado esse pagamento, a pessoa receberia os arquivos comprados via downloads automaticamente. (tem gente vendendo isso na web)

no seu emails(se enviado pelo pagseguro atraves de email apos o pagamento onde envio esses arquivos para o pagseguro?) ou essa entrega é feita por uma pagina de downloads que eu mesmo faço, e o pagseguro envia o link da mesma por email? To perdido... :( alguem me ajuda e a milhares de pobres mortais que trabalham com produtos digitais que fazem sucesso no ecommerce no mundo todo? ja fiz uma venda de faturei 49,00 e to com espectativa de futuro melhor minha gente..

procurei video tutorial(incrivel ninguem ter hospedado isso no youtube!), e outros posts em diversos forums mas não obtive êxito :(

 

Help me please :(

Abraço aê.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estava com o mesmo problema, porém, resolvi parcialmente, eu consegui configurar o retorno automático para enviar um email automaticamente para o cliente com o link da página de download quando receber o post do pagseguro com status completo ou aprovado, o problema é que me parece que o pagseguro envia o post mais de uma vez, então, automaticamente esse email é enviado para o cliente umas três vezes. Falta apenas inserir um código php para verificar no banco de dados se o email já foi enviado e não enviar novamente, não tenho muito conhecimento em php e mysql mas acredito que em breve estarei resolvendo esse pequeno problema e estarei postando novamente, mas se ajudar, segue o código php abaixo:

 

Obs.: Para o envio de email, você deve utilizar o phpmailer, pelo menos comigo funcionou numa boa, é só baixar na net e tranferir para o seu servidor.

 

retorno.php

 

<?

##############################################################

# CONFIGURAÇÕES

##############################################################

include "phpmailer/class.phpmailer.php";

$retorno_site = 'seu site'; // Site para onde o usuário vai ser redirecionado

$retorno_token = 'seu token'; // Token gerado pelo PagSeguro

 

$retorno_host = 'endereço do seu banco de dados'; // Local da base de dados MySql

$retorno_database = 'nome do seu banco de dados'; // Nome da base de dados MySql

$retorno_usuario = 'usuario'; // Usuario com acesso a base de dados MySql

$retorno_senha = 'senha'; // Senha de acesso a base de dados MySql

 

 

###############################################################

# NÃO ALTERE DESTA LINHA PARA BAIXO, SOMENTE A PARTE DO EMAIL

################################################################

 

$lnk = mysql_connect($retorno_host, $retorno_usuario, $retorno_senha) or die ('Nao foi possível conectar ao MySql: ' . mysql_error());

mysql_select_db($retorno_database, $lnk) or die ('Nao foi possível ao banco de dados selecionado no MySql: ' . mysql_error());

 

// Validando dados no PagSeguro

 

$PagSeguro = 'Comando=validar';

$PagSeguro .= '&Token=' . $retorno_token;

$Cabecalho = "Retorno PagSeguro";

 

foreach ($_POST as $key => $value)

{

$value = urlencode(stripslashes($value));

$PagSeguro .= "&$key=$value";

}

 

if (function_exists('curl_exec'))

{

$curl = true;

}

elseif ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen ('ssl://pagseguro.uol.com.br', 443, $errno, $errstr, 30)) )

{

$fsocket = true;

}

elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $errno, $errstr, 30))

{

$fsocket = true;

}

 

if ($curl == true)

{

$ch = curl_init();

 

curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx');

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $PagSeguro);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_TIMEOUT, 30);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

 

curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx');

$resp = curl_exec($ch);

 

curl_close($ch);

$confirma = (strcmp ($resp, "VERIFICADO") == 0);

}

elseif ($fsocket == true)

{

$Cabecalho = "POST /Security/NPI/Default.aspx HTTP/1.0\r\n";

$Cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n";

$Cabecalho .= "Content-Length: " . strlen($PagSeguro) . "\r\n\r\n";

 

if ($fp || $errno>0)

{

fputs ($fp, $Cabecalho . $PagSeguro);

$confirma = false;

$resp = '';

while (!feof($fp))

{

$res = @fgets ($fp, 1024);

$resp .= $res;

if (strcmp ($res, "VERIFICADO") == 0)

{

$confirma=true;

break;

}

}

fclose ($fp);

}

else

{

echo "$errstr ($errno)<br />\n";

}

}

 

 

if ($confirma) {

 

// Recebendo Dados

$TransacaoID = $_POST['TransacaoID'];

$VendedorEmail = $_POST['VendedorEmail'];

$Referencia = $_POST['Referencia'];

$TipoFrete = $_POST['TipoFrete'];

$ValorFrete = $_POST['ValorFrete'];

$Extras = $_POST['Extras'];

$Anotacao = $_POST['Anotacao'];

$TipoPagamento = $_POST['TipoPagamento'];

$StatusTransacao = $_POST['StatusTransacao'];

$CliNome = $_POST['CliNome'];

$CliEmail = $_POST['CliEmail'];

$CliEndereco = $_POST['CliEndereco'];

$CliNumero = $_POST['CliNumero'];

$CliComplemento = $_POST['CliComplemento'];

$CliBairro = $_POST['CliBairro'];

$CliCidade = $_POST['CliCidade'];

$CliEstado = $_POST['CliEstado'];

$CliCEP = $_POST['CliCEP'];

$CliTelefone = $_POST['CliTelefone'];

$NumItens = $_POST['NumItens'];

 

$sql = mysql_query("SELECT COUNT(*) AS conta FROM PagSeguroTransacoes WHERE TransacaoID = '$TransacaoID'");

$conta = mysql_result($sql,0,$conta);

 

if($conta == 0){//se não existe a transacao!

 

// Gravando Dados

mysql_query("INSERT into PagSeguroTransacoes SET

TransacaoID='$TransacaoID',

VendedorEmail='$VendedorEmail',

Referencia='$Referencia',

TipoFrete='$TipoFrete',

ValorFrete='$ValorFrete',

Extras='$Extras',

Anotacao='$Anotacao',

TipoPagamento='$TipoPagamento',

StatusTransacao='$StatusTransacao',

CliNome='$CliNome',

CliEmail='$CliEmail',

CliEndereco='$CliEndereco',

CliNumero='$CliNumero',

CliComplemento='$CliComplemento',

CliBairro='$CliBairro',

CliCidade='$CliCidade',

CliEstado='$CliEstado',

CliCEP='$CliCEP',

CliTelefone='$CliTelefone',

NumItens='$NumItens',

Data=now();");

 

 

}elseif($conta == 1){//se existe atualiza o status!

mysql_query("UPDATE PagSeguroTransacoes SET StatusTransacao = '$StatusTransacao'

WHERE TransacaoID = '$TransacaoID'");

 

if ($StatusTransacao == 'Completo' OR $StatusTransacao == 'Aprovado') {

 

$mail = new PHPMailer();

$mail->IsSMTP();

$mail->SMTPAuth = true;

$mail->SMTPSecure = "ssl";

$mail->Host = "smtp.gmail.com"; // Se for gmail, por exemplo!

$mail->Port = 465; //Se for gmail, por exemplo!

 

$mail->Username = "seu email";

$mail->Password = "senha do seu email";

 

$mail->From = "seu email novamente";

$mail->FromName = "seu nome";

 

$mail->AddAddress ($CliEmail, $CliNome); // Pega o email e o nome do cliente

$mail->Subject = "Pagamento concluido";

 

 

$texto = "Obrigado, seu pagamento foi efetuado com sucesso! Para ter acesso ao conteudo do site, acesse: www.seusite.com.br/download"; // Página onde estiver hospedado seu produto!

 

$mail->Body = $texto;

 

 

 

(!$mail->Send()); //Envia o email

 

 

}

 

}

 

}

 

 

 

 

Header("Location: $retorno_site"); exit();

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estava com o mesmo problema, porém, resolvi parcialmente, eu consegui configurar o retorno automático para enviar um email automaticamente para o cliente com o link da página de download quando receber o post do pagseguro com status completo ou aprovado, o problema é que me parece que o pagseguro envia o post mais de uma vez, então, automaticamente esse email é enviado para o cliente umas três vezes. Falta apenas inserir um código php para verificar no banco de dados se o email já foi enviado e não enviar novamente, não tenho muito conhecimento em php e mysql mas acredito que em breve estarei resolvendo esse pequeno problema e estarei postando novamente, mas se ajudar, segue o código php abaixo:

 

Obs.: Para o envio de email, você deve utilizar o phpmailer, pelo menos comigo funcionou numa boa, é só baixar na net e tranferir para o seu servidor.

 

retorno.php

 

<?

##############################################################

# CONFIGURAÇÕES

##############################################################

include "phpmailer/class.phpmailer.php";

$retorno_site = 'seu site'; // Site para onde o usuário vai ser redirecionado

$retorno_token = 'seu token'; // Token gerado pelo PagSeguro

 

$retorno_host = 'endereço do seu banco de dados'; // Local da base de dados MySql

$retorno_database = 'nome do seu banco de dados'; // Nome da base de dados MySql

$retorno_usuario = 'usuario'; // Usuario com acesso a base de dados MySql

$retorno_senha = 'senha'; // Senha de acesso a base de dados MySql

 

 

###############################################################

# NÃO ALTERE DESTA LINHA PARA BAIXO, SOMENTE A PARTE DO EMAIL

################################################################

 

$lnk = mysql_connect($retorno_host, $retorno_usuario, $retorno_senha) or die ('Nao foi possível conectar ao MySql: ' . mysql_error());

mysql_select_db($retorno_database, $lnk) or die ('Nao foi possível ao banco de dados selecionado no MySql: ' . mysql_error());

 

// Validando dados no PagSeguro

 

$PagSeguro = 'Comando=validar';

$PagSeguro .= '&Token=' . $retorno_token;

$Cabecalho = "Retorno PagSeguro";

 

foreach ($_POST as $key => $value)

{

$value = urlencode(stripslashes($value));

$PagSeguro .= "&$key=$value";

}

 

if (function_exists('curl_exec'))

{

$curl = true;

}

elseif ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen ('ssl://pagseguro.uol.com.br', 443, $errno, $errstr, 30)) )

{

$fsocket = true;

}

elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $errno, $errstr, 30))

{

$fsocket = true;

}

 

if ($curl == true)

{

$ch = curl_init();

 

curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx');

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $PagSeguro);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_TIMEOUT, 30);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

 

curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx');

$resp = curl_exec($ch);

 

curl_close($ch);

$confirma = (strcmp ($resp, "VERIFICADO") == 0);

}

elseif ($fsocket == true)

{

$Cabecalho = "POST /Security/NPI/Default.aspx HTTP/1.0\r\n";

$Cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n";

$Cabecalho .= "Content-Length: " . strlen($PagSeguro) . "\r\n\r\n";

 

if ($fp || $errno>0)

{

fputs ($fp, $Cabecalho . $PagSeguro);

$confirma = false;

$resp = '';

while (!feof($fp))

{

$res = @fgets ($fp, 1024);

$resp .= $res;

if (strcmp ($res, "VERIFICADO") == 0)

{

$confirma=true;

break;

}

}

fclose ($fp);

}

else

{

echo "$errstr ($errno)<br />\n";

}

}

 

 

if ($confirma) {

 

// Recebendo Dados

$TransacaoID = $_POST['TransacaoID'];

$VendedorEmail = $_POST['VendedorEmail'];

$Referencia = $_POST['Referencia'];

$TipoFrete = $_POST['TipoFrete'];

$ValorFrete = $_POST['ValorFrete'];

$Extras = $_POST['Extras'];

$Anotacao = $_POST['Anotacao'];

$TipoPagamento = $_POST['TipoPagamento'];

$StatusTransacao = $_POST['StatusTransacao'];

$CliNome = $_POST['CliNome'];

$CliEmail = $_POST['CliEmail'];

$CliEndereco = $_POST['CliEndereco'];

$CliNumero = $_POST['CliNumero'];

$CliComplemento = $_POST['CliComplemento'];

$CliBairro = $_POST['CliBairro'];

$CliCidade = $_POST['CliCidade'];

$CliEstado = $_POST['CliEstado'];

$CliCEP = $_POST['CliCEP'];

$CliTelefone = $_POST['CliTelefone'];

$NumItens = $_POST['NumItens'];

 

$sql = mysql_query("SELECT COUNT(*) AS conta FROM PagSeguroTransacoes WHERE TransacaoID = '$TransacaoID'");

$conta = mysql_result($sql,0,$conta);

 

if($conta == 0){//se não existe a transacao!

 

// Gravando Dados

mysql_query("INSERT into PagSeguroTransacoes SET

TransacaoID='$TransacaoID',

VendedorEmail='$VendedorEmail',

Referencia='$Referencia',

TipoFrete='$TipoFrete',

ValorFrete='$ValorFrete',

Extras='$Extras',

Anotacao='$Anotacao',

TipoPagamento='$TipoPagamento',

StatusTransacao='$StatusTransacao',

CliNome='$CliNome',

CliEmail='$CliEmail',

CliEndereco='$CliEndereco',

CliNumero='$CliNumero',

CliComplemento='$CliComplemento',

CliBairro='$CliBairro',

CliCidade='$CliCidade',

CliEstado='$CliEstado',

CliCEP='$CliCEP',

CliTelefone='$CliTelefone',

NumItens='$NumItens',

Data=now();");

 

 

}elseif($conta == 1){//se existe atualiza o status!

mysql_query("UPDATE PagSeguroTransacoes SET StatusTransacao = '$StatusTransacao'

WHERE TransacaoID = '$TransacaoID'");

 

if ($StatusTransacao == 'Completo' OR $StatusTransacao == 'Aprovado') {

 

$mail = new PHPMailer();

$mail->IsSMTP();

$mail->SMTPAuth = true;

$mail->SMTPSecure = "ssl";

$mail->Host = "smtp.gmail.com"; // Se for gmail, por exemplo!

$mail->Port = 465; //Se for gmail, por exemplo!

 

$mail->Username = "seu email";

$mail->Password = "senha do seu email";

 

$mail->From = "seu email novamente";

$mail->FromName = "seu nome";

 

$mail->AddAddress ($CliEmail, $CliNome); // Pega o email e o nome do cliente

$mail->Subject = "Pagamento concluido";

 

 

$texto = "Obrigado, seu pagamento foi efetuado com sucesso! Para ter acesso ao conteudo do site, acesse: www.seusite.com.br/download"; // Página onde estiver hospedado seu produto!

 

$mail->Body = $texto;

 

 

 

(!$mail->Send()); //Envia o email

 

 

}

 

}

 

}

 

 

 

 

Header("Location: $retorno_site"); exit();

?>

 

Bmatias só passei o olho rápido e vi que ta muito simplificado por você! cara muuuito obrigado desde ja! to numa correria danada e as coisas tão pegando por qqui, por isso não apliquei suas dicas ainda, mas assim que eu poder repirar vou aplica-las com toda certeza, mas desde ja ela iluminaram muito minhas ideias, quando eu testar volto aqui pra dizer no que deu. OBRIGAO...VALEWSSSS

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala aí grande, tá resolvido o problema do email repetido também, é só aplicar as configurações abaixo, só que você vai ter que adicionar mais um campo no bd, eu coloquei como enviado e ficou assim: Campo:enviado, Tipo:varchar(50),Collation:latin1_general_ci. Ficou igual ao campo StatusTransação. De resto, é só deixar como está e acrescentar seus dados.

Só mais um detalhe, onde está enviado='0', se quiser pode mudar os valores, por exemplo: onde está '0' você pode colocar 'nao' (email ainda não foi enviado) e onde está '1', você pode colocar 'sim' (email já foi enviado), mas é opcional, se tiver na dúvida deixa como está que pelo menos comigo tá funcionando numa boa.

Bom, acredito ter resolvido, e como eu já disse, não entendo muito de programação não, mas qualquer dúvida posta aí que a gente tenta dar um jeito.

 

 

Um grande abraço e que Deus abençoe a todos!

 

 

 

 

retorno.php

 

 

 

<?

##############################################################

# CONFIGURAÇÕES

##############################################################

include "phpmailer/class.phpmailer.php";

$retorno_site = 'seu site'; // Site para onde o usuário vai ser redirecionado

$retorno_token = 'seu token'; // Token gerado pelo PagSeguro

 

$retorno_host = 'endereço do seu banco de dados'; // Local da base de dados MySql

$retorno_database = 'nome do seu banco de dados'; // Nome da base de dados MySql

$retorno_usuario = 'usuario'; // Usuario com acesso a base de dados MySql

$retorno_senha = 'senha'; // Senha de acesso a base de dados MySql

 

 

###############################################################

# NÃO ALTERE DESTA LINHA PARA BAIXO, SOMENTE A PARTE DO EMAIL

################################################################

 

$lnk = mysql_connect($retorno_host, $retorno_usuario, $retorno_senha) or die ('Nao foi possível conectar ao MySql: ' . mysql_error());

mysql_select_db($retorno_database, $lnk) or die ('Nao foi possível ao banco de dados selecionado no MySql: ' . mysql_error());

 

// Validando dados no PagSeguro

 

$PagSeguro = 'Comando=validar';

$PagSeguro .= '&Token=' . $retorno_token;

$Cabecalho = "Retorno PagSeguro";

 

foreach ($_POST as $key => $value)

{

$value = urlencode(stripslashes($value));

$PagSeguro .= "&$key=$value";

}

 

if (function_exists('curl_exec'))

{

$curl = true;

}

elseif ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen ('ssl://pagseguro.uol.com.br', 443, $errno, $errstr, 30)) )

{

$fsocket = true;

}

elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $errno, $errstr, 30))

{

$fsocket = true;

}

 

if ($curl == true)

{

$ch = curl_init();

 

curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx');

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $PagSeguro);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_TIMEOUT, 30);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

 

curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx');

$resp = curl_exec($ch);

 

curl_close($ch);

$confirma = (strcmp ($resp, "VERIFICADO") == 0);

}

elseif ($fsocket == true)

{

$Cabecalho = "POST /Security/NPI/Default.aspx HTTP/1.0\r\n";

$Cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n";

$Cabecalho .= "Content-Length: " . strlen($PagSeguro) . "\r\n\r\n";

 

if ($fp || $errno>0)

{

fputs ($fp, $Cabecalho . $PagSeguro);

$confirma = false;

$resp = '';

while (!feof($fp))

{

$res = @fgets ($fp, 1024);

$resp .= $res;

if (strcmp ($res, "VERIFICADO") == 0)

{

$confirma=true;

break;

}

}

fclose ($fp);

}

else

{

echo "$errstr ($errno)<br />\n";

}

}

 

 

if ($confirma) {

 

// Recebendo Dados

$TransacaoID = $_POST['TransacaoID'];

$VendedorEmail = $_POST['VendedorEmail'];

$Referencia = $_POST['Referencia'];

$TipoFrete = $_POST['TipoFrete'];

$ValorFrete = $_POST['ValorFrete'];

$Extras = $_POST['Extras'];

$Anotacao = $_POST['Anotacao'];

$TipoPagamento = $_POST['TipoPagamento'];

$StatusTransacao = $_POST['StatusTransacao'];

$CliNome = $_POST['CliNome'];

$CliEmail = $_POST['CliEmail'];

$CliEndereco = $_POST['CliEndereco'];

$CliNumero = $_POST['CliNumero'];

$CliComplemento = $_POST['CliComplemento'];

$CliBairro = $_POST['CliBairro'];

$CliCidade = $_POST['CliCidade'];

$CliEstado = $_POST['CliEstado'];

$CliCEP = $_POST['CliCEP'];

$CliTelefone = $_POST['CliTelefone'];

$NumItens = $_POST['NumItens'];

 

$sql = mysql_query("SELECT COUNT(*) AS conta FROM PagSeguroTransacoes WHERE TransacaoID = '$TransacaoID'");

$conta = mysql_result($sql,0,$conta);

 

if($conta == 0){//se não existe a transacao!

 

// Gravando Dados

mysql_query("INSERT into PagSeguroTransacoes SET

TransacaoID='$TransacaoID',

VendedorEmail='$VendedorEmail',

Referencia='$Referencia',

TipoFrete='$TipoFrete',

ValorFrete='$ValorFrete',

Extras='$Extras',

Anotacao='$Anotacao',

TipoPagamento='$TipoPagamento',

StatusTransacao='$StatusTransacao',

CliNome='$CliNome',

CliEmail='$CliEmail',

CliEndereco='$CliEndereco',

CliNumero='$CliNumero',

CliComplemento='$CliComplemento',

CliBairro='$CliBairro',

CliCidade='$CliCidade',

CliEstado='$CliEstado',

CliCEP='$CliCEP',

CliTelefone='$CliTelefone',

NumItens='$NumItens',

enviado='0',

Data=now();");

 

 

}elseif($conta == 1){//se existe atualiza o status!

mysql_query("UPDATE PagSeguroTransacoes SET StatusTransacao = '$StatusTransacao'

WHERE TransacaoID = '$TransacaoID'");

 

if ($StatusTransacao == 'Completo' OR $StatusTransacao == 'Aprovado') {

 

$mail = new PHPMailer();

$mail->IsSMTP();

$mail->SMTPAuth = true;

$mail->SMTPSecure = "ssl";

$mail->Host = "smtp.gmail.com"; // Se for gmail, por exemplo!

$mail->Port = 465; //Se for gmail, por exemplo!

 

$mail->Username = "seu email";

$mail->Password = "senha do seu email";

 

$mail->From = "seu email novamente";

$mail->FromName = "seu nome";

 

$mail->AddAddress ($CliEmail, $CliNome); // Pega o email e o nome do cliente

$mail->Subject = "Pagamento concluido";

 

 

$texto = "Obrigado, seu pagamento foi efetuado com sucesso! Para ter acesso ao conteudo do site, acesse: www.seusite.com.br/download"; // Página onde estiver hospedado o seu produto!

 

$mail->Body = $texto;

 

 

if($enviado == 0){

 

(!$mail->Send());

 

mysql_query("UPDATE PagSeguroTransacoes SET enviado= '1'

WHERE TransacaoID = '$TransacaoID'");

 

}elseif($enviado == 1){

 

 

}

 

}

 

 

 

 

Header("Location: $retorno_site"); exit();

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ops! Foi mal aí, mas faltou uma pequena modificação.

 

Agora tá ok.

 

 

 

 

 

retorno.php

 

 

 

<?

##############################################################

# CONFIGURAÇÕES

##############################################################

include "phpmailer/class.phpmailer.php";

$retorno_site = 'seu site'; // Site para onde o usuário vai ser redirecionado

$retorno_token = 'seu token'; // Token gerado pelo PagSeguro

 

$retorno_host = 'endereço do seu banco de dados'; // Local da base de dados MySql

$retorno_database = 'nome do seu banco de dados'; // Nome da base de dados MySql

$retorno_usuario = 'usuario'; // Usuario com acesso a base de dados MySql

$retorno_senha = 'senha'; // Senha de acesso a base de dados MySql

 

 

###############################################################

# NÃO ALTERE DESTA LINHA PARA BAIXO, SOMENTE A PARTE DO EMAIL

################################################################

 

$lnk = mysql_connect($retorno_host, $retorno_usuario, $retorno_senha) or die ('Nao foi possível conectar ao MySql: ' . mysql_error());

mysql_select_db($retorno_database, $lnk) or die ('Nao foi possível ao banco de dados selecionado no MySql: ' . mysql_error());

 

// Validando dados no PagSeguro

 

$PagSeguro = 'Comando=validar';

$PagSeguro .= '&Token=' . $retorno_token;

$Cabecalho = "Retorno PagSeguro";

 

foreach ($_POST as $key => $value)

{

$value = urlencode(stripslashes($value));

$PagSeguro .= "&$key=$value";

}

 

if (function_exists('curl_exec'))

{

$curl = true;

}

elseif ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen ('ssl://pagseguro.uol.com.br', 443, $errno, $errstr, 30)) )

{

$fsocket = true;

}

elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $errno, $errstr, 30))

{

$fsocket = true;

}

 

if ($curl == true)

{

$ch = curl_init();

 

curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx');

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $PagSeguro);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_TIMEOUT, 30);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

 

curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx');

$resp = curl_exec($ch);

 

curl_close($ch);

$confirma = (strcmp ($resp, "VERIFICADO") == 0);

}

elseif ($fsocket == true)

{

$Cabecalho = "POST /Security/NPI/Default.aspx HTTP/1.0\r\n";

$Cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n";

$Cabecalho .= "Content-Length: " . strlen($PagSeguro) . "\r\n\r\n";

 

if ($fp || $errno>0)

{

fputs ($fp, $Cabecalho . $PagSeguro);

$confirma = false;

$resp = '';

while (!feof($fp))

{

$res = @fgets ($fp, 1024);

$resp .= $res;

if (strcmp ($res, "VERIFICADO") == 0)

{

$confirma=true;

break;

}

}

fclose ($fp);

}

else

{

echo "$errstr ($errno)<br />\n";

}

}

 

 

if ($confirma) {

 

// Recebendo Dados

$TransacaoID = $_POST['TransacaoID'];

$VendedorEmail = $_POST['VendedorEmail'];

$Referencia = $_POST['Referencia'];

$TipoFrete = $_POST['TipoFrete'];

$ValorFrete = $_POST['ValorFrete'];

$Extras = $_POST['Extras'];

$Anotacao = $_POST['Anotacao'];

$TipoPagamento = $_POST['TipoPagamento'];

$StatusTransacao = $_POST['StatusTransacao'];

$CliNome = $_POST['CliNome'];

$CliEmail = $_POST['CliEmail'];

$CliEndereco = $_POST['CliEndereco'];

$CliNumero = $_POST['CliNumero'];

$CliComplemento = $_POST['CliComplemento'];

$CliBairro = $_POST['CliBairro'];

$CliCidade = $_POST['CliCidade'];

$CliEstado = $_POST['CliEstado'];

$CliCEP = $_POST['CliCEP'];

$CliTelefone = $_POST['CliTelefone'];

$NumItens = $_POST['NumItens'];

 

$sql = mysql_query("SELECT COUNT(*) AS conta FROM PagSeguroTransacoes WHERE TransacaoID = '$TransacaoID'");

$conta = mysql_result($sql,0,$conta);

 

if($conta == 0){//se não existe a transacao!

 

// Gravando Dados

mysql_query("INSERT into PagSeguroTransacoes SET

TransacaoID='$TransacaoID',

VendedorEmail='$VendedorEmail',

Referencia='$Referencia',

TipoFrete='$TipoFrete',

ValorFrete='$ValorFrete',

Extras='$Extras',

Anotacao='$Anotacao',

TipoPagamento='$TipoPagamento',

StatusTransacao='$StatusTransacao',

CliNome='$CliNome',

CliEmail='$CliEmail',

CliEndereco='$CliEndereco',

CliNumero='$CliNumero',

CliComplemento='$CliComplemento',

CliBairro='$CliBairro',

CliCidade='$CliCidade',

CliEstado='$CliEstado',

CliCEP='$CliCEP',

CliTelefone='$CliTelefone',

NumItens='$NumItens',

enviado='0',

Data=now();");

 

 

}elseif($conta == 1){//se existe atualiza o status!

mysql_query("UPDATE PagSeguroTransacoes SET StatusTransacao = '$StatusTransacao'

WHERE TransacaoID = '$TransacaoID'");

 

}

}

 

if ($StatusTransacao == 'Completo' OR $StatusTransacao == 'Aprovado') {

 

$mail = new PHPMailer();

$mail->IsSMTP();

$mail->SMTPAuth = true;

$mail->SMTPSecure = "ssl";

$mail->Host = "smtp.gmail.com";

$mail->Port = 465;

 

$mail->Username = "seu email";

$mail->Password = "senha do seu email";

 

$mail->From = "seu email novamente";

$mail->FromName = "seu nome";

 

$mail->AddAddress ($CliEmail, $CliNome);//Pega o email e o nome do cliente

 

$mail->Subject = "Pagamento concluído";

 

 

$texto = "Obrigado, seu pagamento foi efetuado com sucesso! Para ter acesso ao conteudo do site, acesse: www.seusite.com.br/download";// Página onde estiver hospedado o seu produto!

 

 

$mail->Body = $texto;

 

if($enviado == 0){

 

(!$mail->Send());

 

mysql_query("UPDATE PagSeguroTransacoes SET enviado= '1'

WHERE TransacaoID = '$TransacaoID'");

 

}elseif($enviado == 1){

 

 

}

 

}

 

 

 

 

Header("Location: $retorno_site"); exit();

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta funcionando direitinho gente? :)

Nao ta faltando um SELECT ai pra pegar a variavel $enviado ?

 

Ta funcionando direitinho gente? :)

Nao ta faltando um SELECT ai pra pegar a variavel $enviado ?

 

Ta funcionando sim, desculpem! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite pessoal, sou iniciante no assunto!

Mas preciso muito deste código funcionando para eu implantar em meu site para envio automatico de produtos digitais.

 

Mas não estou conseguindo, embora o código é auto-explicativo, acho que modifiquei tudo corretamente com o tokem do pag seguro e tudo, mas não criei um banco de dados, precisa?

Se tenho que criar um banco de dados, então algúem poderiam me dar mais informações? ou passar um SQL para eu importar?

 

Aguardo retorno,

Atenciosamente,

Toninho

 

Por gentileza, amigo!

Eu preciso muito deste código funcionando para eu implantar em meu site para envio automatico de produtos digitais.

 

Mas não estou conseguindo, embora o código é auto-explicativo, acho que modifiquei tudo corretamente com o tokem do pag seguro e tudo, mas não criei um banco de dados, precisa?

Se tenho que criar um banco de dados, então algúem poderiam me dar mais informações? ou passar um SQL para eu importar?

 

Aguardo retorno,

Atenciosamente,

Toninho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Toninho,

 

 

Para que o sistema funcione perfeitamente você deve ter um banco de dados configurado sim, no meu caso está configurado conforme abaixo, apenas com uma pequena modificação, mas como eu já disse, não sou um programador, apenas aprendi pela necessidade, se houver alguma coisa que possam modificar para melhorar o código não deixem de postar.

 

 

 

 

-- Estrutura da tabela `PagSeguroTransacoes`--

 

CREATE TABLE `PagSeguroTransacoes` (

`TransacaoID` varchar(36) COLLATE latin1_general_ci NOT NULL,

`VendedorEmail` varchar(200) COLLATE latin1_general_ci NOT NULL,

`Referencia` varchar(200) COLLATE latin1_general_ci DEFAULT NULL,

`TipoFrete` char(2) COLLATE latin1_general_ci DEFAULT NULL,

`ValorFrete` decimal(10,2) DEFAULT NULL,

`Extras` decimal(10,2) DEFAULT NULL,

`Anotacao` text COLLATE latin1_general_ci,

`TipoPagamento` varchar(50) COLLATE latin1_general_ci NOT NULL,

`StatusTransacao` varchar(50) COLLATE latin1_general_ci NOT NULL,

`CliNome` varchar(200) COLLATE latin1_general_ci NOT NULL,

`CliEmail` varchar(200) COLLATE latin1_general_ci NOT NULL,

`CliEndereco` varchar(200) COLLATE latin1_general_ci NOT NULL,

`CliNumero` varchar(10) COLLATE latin1_general_ci DEFAULT NULL,

`CliComplemento` varchar(100) COLLATE latin1_general_ci DEFAULT NULL,

`CliBairro` varchar(100) COLLATE latin1_general_ci NOT NULL,

`CliCidade` varchar(100) COLLATE latin1_general_ci NOT NULL,

`CliEstado` char(2) COLLATE latin1_general_ci NOT NULL,

`CliCEP` varchar(9) COLLATE latin1_general_ci NOT NULL,

`CliTelefone` varchar(14) COLLATE latin1_general_ci DEFAULT NULL,

`ProdID` text COLLATE latin1_general_ci,

`ProdDescricao` text COLLATE latin1_general_ci,

`ProdValor` text COLLATE latin1_general_ci,

`ProdQuantidade` text COLLATE latin1_general_ci,

`ProdFrete` text COLLATE latin1_general_ci,

`ProdExtras` text COLLATE latin1_general_ci,

`NumItens` int(11) NOT NULL,

`enviado` varchar(50) COLLATE latin1_general_ci NOT NULL,

`status` text COLLATE latin1_general_ci NOT NULL,

`ip` text COLLATE latin1_general_ci NOT NULL,

`datahora` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

`data` date NOT NULL DEFAULT '0000-00-00',

`hora` time NOT NULL DEFAULT '00:00:00',

PRIMARY KEY (`TransacaoID`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

 

 

 

Um abraço!

 

Bruno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola amigos, parabens pelo post, sou iniciante em joomla e estou desenvolvendo, um web site onde vou disponibilizar tb produtos digitais.

vi vcs apromoraram a soluçao do retorno automatico.

 

uma pergunta onde coloco este script, tenho que criar + um bd para isso ?

perdoem a pergunta ingenua mas como disse sou café com leita rsrs.

abraços a todos. este é o site que está para ir entrar em produçao www.leobazar.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Bmatias,gostaria de saber como eu aplico esse banco de dados no meu servidor?Eu não estou dando conta de arrumar o retorno automático com entrega de produtos digitais em meu site.Me ajude!Eu acho que o problema esta na configuração de banco de dados do meu servidor!Explica como eu crio e configuro o banco de dados,e como faço pra jogar no meu servidor!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, no meu caso é quase parecido, porém meu site é de assinantes, então cada um deve escolher um login e uma senha, efetuar o pagamento, e aí então acontecer a liberação. Eu estou usando aquela proteção de pastas, do cpanel, que é em .htaccess, e armazena uma senha criptografada para cada usuário. Sei que dá pra fazer um sistema que libere automaticamente, acho que é usando o password proxy + .htacess + mysql, o problema é que tenho apenas uma noção básica e muito básico sobre tudo isso. Será que alguém conhece sabe onde tem um tutorial para aplicação e configuração dum sistema desse gênero, que possa resolver meu problema de não precisar mais ficar liberando os downloads manuais? Ou até mesmo fazer isso por mim, mediante pagamento do serviço? Desde Já, agradeço pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos estou aqui por que procuro a muito tempo algum programa pra enviar produtos digitais automaticamente. Tenho noção de mysql, php, e tals...

Sempre ví na internet pessoas como RogerioJob que oferecem um programa que promete fazer tudo pra você, só que eu sempre pensei em não comprar esse programa, mas sim arranjar o link dele com alguém que já tenha... e até hoje não achei alguém que tenha. Então decidi procurar em fóruns sobre esse assunto e achei esse aqui... agora estou com idéia de programar o MySqL pra fazer isso... só que eu tenho noção básica do MySqL por mecher com servidores de jogos online, mas nunca tentei mecher com esse tipo de programação. Tô disposto a criar um grupo de msn pra todos nós converssarmos em grupo com a intenção de um ajudar o outro o msn é esse GROUP1191195@GROUPSIM.COM

e esse é meu msn pessoal erick_hannibal@hotmail.com

Aqui vou postar uma screen shot da "tabela" que eu criei no MySqL.

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola,

Ótimo tutorial, mais será que alguem poderia me ensinar como devo fazer? Crio uma pagina de retorno no meu site? e coloco esse endereço la no meu pagseguro? onde diz retorno automático? é isso?

 

Valeu

 

Se alguem puder me ajudar fico grato.

 

missaoradio@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu coloquei a pagina mais da esse erro

 

Warning: Cannot modify header information - headers already sent by (output started at C:\Inetpub\vhosts\mucyber.com.br\httpdocs\pagseguro\pagseguro.php:1) in C:\Inetpub\vhosts\mucyber.com.br\httpdocs\pagseguro\pagseguro.php on line 178

 

a pagina pagseguro.php está igual a retorno.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito legal esse topico, parabens... Só queria tirar mais uma duvida a respeito do email, no caso acima, fica o molde para enviar um produto por email, como ficaria para enviar a cada tipo de produto, um determinado email??? ficaria muito grato se alguem me ajudar.

 

Obrigado

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui fazer tudo certinho passo a passo, só uma duvida quanto ao arquivo para adicionar produtos e o arquivo para liberar produto para o cliente.

poderiam ajudar?

obg

 

 

essa parte que fiz ele recebe o post aguardando minha duvida é só essa dos arquivos para perceber pagamento com sucesso e liberar o produto que eu vou cadastrar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.