Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom pessoal to com dois problemas, não estou recebendo o post devolta, em minha database, mais recebo no arquivo pagseguro.log, e outra esse coloquei ele para Na tabale (PREMIUM_POINTs) o preço que o cara pagou, mais recebo o post certinho, mais ele não adiciona os points na databse
> <?phpdefine ('TOKEN', 'numero_do_token');
if (isset($_POST)) {
$f=fopen ('pagseguro.log', 'a'); # o "a" é para ele "appendar" o conteúdo, ou seja, colocar ao final
fwrite($f, "'Recebeu o post, verificando junto ao PagSeguro'\n"); # escrevendo a mensagem, mais uma quebra de linha
fwrite($f, var_export( $_POST, true)); # imprime os dados no arquivo de log
fwrite($f, "\n---------\n\n"); # um espaço para separar as ocorrencias
fclose($f);
}
function retorno_automatico (
$VendedorEmail, $TransacaoID, $Referencia, $TipoFrete,
$ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento,
$StatusTransacao, $CliNome, $CliEmail, $CliEndereco,
$CliNumero, $CliComplemento, $CliBairro, $CliCidade,
$CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens
) {
if ($StatusTransacao == 'Completo' OR $StatusTransacao == 'Aprovado') }
$pontos = $produtos[1]['ProdValor'] * $produtos[1]['ProdQuantidade'];
mysql_connect("localhost","user_db","senha_db");
mysql_select_db("nome_db");
mysql_query("UPDATE `accounts` SET `premium_points` = `premium_points` + '".$Pontos."' WHERE `id` = '".$Referencia."'");
mysql_query("INSERT INTO PagSeguroTransacoes (TransacaoID, Referencia, CliNome, CliEmail, datahora, StatusTransacao, ProdDescricao, ProdValor) VALUES ('$TransacaoID','$Referencia','$CliNome', '$CliEmail','$DataTransacao','$StatusTransacao','{$produtos[0]['ProdDescricao']}','{$produtos[0]['ProdValor']}')");
$f=fopen ('pagseguro.log', 'a'); # o "a" é para ele "appendar" o conteúdo, ou seja, colocar ao final
fwrite($f, "'Dados Verificados! Agora minha função funciona normalmente.'\n"); # escrevendo a mensagem, mais uma quebra de linha
fwrite($f, var_export(array ($VendedorEmail, $TransacaoID, $Referencia, $TipoFrete,
$ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento,
$StatusTransacao, $CliNome, $CliEmail, $CliEndereco,
$CliNumero, $CliComplemento, $CliBairro, $CliCidade,
$CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens
), true)); # imprime os dados no arquivo de log
fwrite($f, "\nSQL: INSERT INTO PagSeguroTransacoes (TransacaoID, Referencia, CliNome, CliEmail, datahora, StatusTransacao, ProdDescricao, ProdValor) VALUES ('$TransacaoID','$Referencia', '$CliNome','$CliEmail','$DataTransacao','$StatusTransacao','{$produtos[0]['ProdDescricao']}','{$produtos[0]['ProdValor']}')\n");
fwrite($f, "\n---------\n\n"); # um espaço para separar as ocorrencias
fclose($f);
}
require_once("retorno.php");
?>Tipo o $Referencia ele está pois o player coloca o a account number dele para poder adicionar os points, e nisso eu coloquei pra utilizar o $Referencia pra pegar, teria outro jeito de trocar isso?
Estárei testando o resto obrigado pela ajuda.!
Você retirou o fecha chaves?
if ($StatusTransacao == 'Completo' OR $StatusTransacao == 'Aprovado') }
deve ficar igual
if ($StatusTransacao == 'Completo' OR $StatusTransacao == 'Aprovado')
não funcionou?
caso ainda assim não consiga...
eu utilizo esse script de retorno.
http://labs.senartes.com.br/pagSeguro/retornoPadrao.txt
verifique se o mesmo serve para você...
Fiz o que voçê me informou para fazer, mais mesmo assim não consego receber o points, e ainda recebo o post do pagseguro no pagseguro.log, mais nada de recebe-lo na database. ai está cfom as alterações que fiz.
>
<?php
define ('TOKEN', '4E29B492D57448D4B7C2406783439DA6');
if (isset($_POST)) {fclose($f);
}
function retorno_automatico (if ($StatusTransacao == 'Completo' OR $StatusTransacao == 'Aprovado')
$pontos = $produtos[1]['ProdValor'] * $produtos[1]['ProdQuantidade'];
mysql_connect("localhost","pag","123mudar");
mysql_select_db("theforgottenserver");
mysql_query("UPDATE `accounts` SET `premium_points` = `premium_points` + '".$Pontos."' WHERE `id` = '".$Referencia."'");
mysql_query("INSERT INTO PagSeguroTransacoes (TransacaoID, Referencia, CliNome, CliEmail, datahora, StatusTransacao, ProdDescricao, ProdValor) VALUES ('$TransacaoID','$Referencia','$CliNome', '$CliEmail','$DataTransacao','$StatusTransacao','{$produtos[1]['ProdDescricao']}','{$produtos[1]['ProdValor']}')");fclose($f);
echo $sql = "INSERT INTO PagSeguroTransacoes (TransacaoID, Referencia, CliNome, CliEmail, datahora, StatusTransacao, ProdDescricao, ProdValor) VALUES ('$TransacaoID','$Referencia','$CliNome', '$CliEmail','$DataTransacao','$StatusTransacao','{$produtos[0]['ProdDescricao']}','{$produtos[0]['ProdValor']}')";
require_once("retorno.php");
}
?>
Tipo cara mais esse que voçê me mando seria o retorno.php certo? Mesmo assim ainda teria de ter o retpagseguro.php, mais tipo o problema não do pagseguro é que não recebendo os pontos, na database, eu recebo o post no log, mais nada, nada de ir pra database.
Olhando na sua linha
mysql_query("UPDATE `accounts` SET `premium_points` = `premium_points` + '".$Pontos."' WHERE `id` = '".$Referencia."'");
achei um " premium_points + '".$Pontos."' ", seria isso mesmo?
não seria alguma coisa do tipo...
mysql_query("UPDATE `accounts` SET `premium_points` = `" . $Pontos."'` WHERE `id` = '".$Referencia."'");Bom cara fiz as alterações que me pediu, e nisso vi um error na hora da $Referencia estáva apontando para a coluna da database 'id' nisso mudei para name, pois o players coloca seu account name, na hora da compra para o script possa acha-lo na hora da inserir os points, mais com isso essas alteraçõs não consegui coloca-lo para funcionar.
> <?phpdefine ('TOKEN', '4E29B492D57448D4B7C2406783439DA6');
if (isset($_POST)) {
$f=fopen ('pagseguro.log', 'a'); # o "a" é para ele "appendar" o conteúdo, ou seja, colocar ao final
fwrite($f, "'Recebeu o post, verificando junto ao PagSeguro'\n"); # escrevendo a mensagem, mais uma quebra de linha
fwrite($f, var_export( $_POST, true)); # imprime os dados no arquivo de log
fwrite($f, "\n---------\n\n"); # um espaço para separar as ocorrencias
fclose($f);
}
function retorno_automatico (
$VendedorEmail, $TransacaoID, $Referencia, $TipoFrete,
$ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento,
$StatusTransacao, $CliNome, $CliEmail, $CliEndereco,
$CliNumero, $CliComplemento, $CliBairro, $CliCidade,
$CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens
) {
if ($StatusTransacao == 'Completo' OR $StatusTransacao == 'Aprovado')
$pontos = $produtos[1]['ProdValor'] * $produtos[1]['ProdQuantidade'];
mysql_connect("localhost","pag","123mudar");
mysql_select_db("theforgottenserver");
mysql_query("UPDATE `accounts` SET `premium_points` = `" . $Pontos."'` WHERE `name` = '".$Referencia."'");
mysql_query("INSERT INTO PagSeguroTransacoes (TransacaoID, Referencia, CliNome, CliEmail, datahora, StatusTransacao, ProdDescricao, ProdValor) VALUES ('$TransacaoID','$Referencia','$CliNome', '$CliEmail','$DataTransacao','$StatusTransacao','{$produtos[1]['ProdDescricao']}','{$produtos[1]['ProdValor']}')");
$f=fopen ('pagseguro.log', 'a'); # o "a" é para ele "appendar" o conteúdo, ou seja, colocar ao final
fwrite($f, "'Dados Verificados! Agora minha função funciona normalmente.'\n"); # escrevendo a mensagem, mais uma quebra de linha
fwrite($f, var_export(array ($VendedorEmail, $TransacaoID, $Referencia, $TipoFrete,
$ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento,
$StatusTransacao, $CliNome, $CliEmail, $CliEndereco,
$CliNumero, $CliComplemento, $CliBairro, $CliCidade,
$CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens
), true)); # imprime os dados no arquivo de log
fwrite($f, "\nSQL: INSERT INTO PagSeguroTransacoes (TransacaoID, Referencia, CliNome, CliEmail, datahora, StatusTransacao, ProdDescricao, ProdValor) VALUES ('$TransacaoID','$Referencia', '$CliNome','$CliEmail','$DataTransacao','$StatusTransacao','{$produtos[1]['ProdDescricao']}','{$produtos[1]['ProdValor']}')\n");
fwrite($f, "\n---------\n\n"); # um espaço para separar as ocorrencias
fclose($f);
echo $sql = "INSERT INTO PagSeguroTransacoes (TransacaoID, Referencia, CliNome, CliEmail, datahora, StatusTransacao, ProdDescricao, ProdValor) VALUES ('$TransacaoID','$Referencia','$CliNome', '$CliEmail','$DataTransacao','$StatusTransacao','{$produtos[0]['ProdDescricao']}','{$produtos[0]['ProdValor']}')";
require_once("retorno.php");
}
?>
Um cara que não quis me ajudar disse que está faltando um detalhe, mais não quis me dizer qual.
Analisando seu codigo pude notar que na função "retorno_automatico", voce tem apenas
Segunda coisa que achei estranho.
um pouco mais abaixo você faz referencias sobre as variaveis recebidas dentro da função "retorno_automatico", isso explica você não conseguir atualizar sua base de dados, veja por exemplo a linha
$Referencia seria um atributo recebido dentro da função "retorno_automatico", logo ele estará vazio., fazendo com que ele não ache a referencia na base de dados, logo ele não atualiza, e isso segue até o final do script.
Resumindo....
Verifique na linha...
if ($StatusTransacao == 'Completo' OR $StatusTransacao == 'Aprovado') }
" } " (fecha chaves), acredito estar ai desnecessariamente...
Retirando, todo o resto do código começa a fazer sentido... creio que com isso resolve...