lwtec 0 Denunciar post Postado Agosto 26, 2016 Pessoal estou para ficar doido rsrs, fiz um script para pegar os dados que a api de pagamentos do pagseguro retorna e de acordo com alguns parâmetros que defini ele atualiza o valor de uma linha da tabela 'usuários'. Minha idéia é a seguinte, na hora que o usuário gera a ordem de pagamento o script pega o valor do produto e soma 5% e depois o arquivo que pega os dados da api faz a seguinte conta para voltar ao valor original: exemplo: o valor do produto era 370 e com + 5% é igual a 388,50 e para voltar a 370 eu faço 388,50 / 1.05 que é igual a 370. Mais ele está gravando no banco de dados 369.52 já defini o campo da tabela como decimal(10,2) mas mesmo assim não da certo. coloquei meu script logo abaixo caso queiram dar uma olhada me ajudem por favor <?php header("access-control-allow-origin: https://sandbox.pagseguro.uol.com.br"); if (count($_POST)>0) { $email = "meu@email.com"; $token = "ETOKEN"; $notificationCode = $_POST['notificationCode']; $url = "https://ws.sandbox.pagseguro.uol.com.br/v2/transactions/notifications/".$notificationCode."?email=".$email."&token=".$token; $curl = curl_init($url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($curl); $http = curl_getinfo($curl); if($response == 'Unauthorized'){ print_r($response); exit; } curl_close($curl); $response= simplexml_load_string($response); $status = $response->status; $ref = $response->reference; $idusu = $response->items->item->id; $valor = $response->items->item->amount; $eventon = $response->items->item->description; $calculo = $valor / 1.05; if($status == 1){ require_once "Connections/conexao.php"; mysql_select_db($database_conexao, $conexao); $procura = mysql_query("SELECT * FROM transacoes WHERE id = '$ref'", $conexao); $contar = mysql_num_rows($procura); if($contar > 0){ //aki faz o update $update = "UPDATE transacoes SET status = 'Pendente' WHERE id = '$ref'"; mysql_select_db($database_conexao, $conexao); mysql_query($update, $conexao) or die(mysql_error()); }else{ //aki faz o insert $inserir = "INSERT INTO transacoes (idusuario, status, nome, valor) VALUES ('$idusu', 'Pendente', '$eventon', '$valor')"; mysql_select_db($database_conexao, $conexao); mysql_query($inserir, $conexao) or die(mysql_error()); } } if($status == 2){ require_once "Connections/conexao.php"; mysql_select_db($database_conexao, $conexao); $procura = mysql_query("SELECT * FROM transacoes WHERE id = '$ref'", $conexao); $contar = mysql_num_rows($procura); if($contar > 0){ //aki faz o update $update = "UPDATE transacoes SET status = 'Pendente' WHERE id = '$ref'"; mysql_select_db($database_conexao, $conexao); mysql_query($update, $conexao) or die(mysql_error()); }else{ //aki faz o insert $inserir = "INSERT INTO transacoes (idusuario, status, nome, valor) VALUES ('$idusu', 'Pendente', '$eventon', '$valor')"; mysql_select_db($database_conexao, $conexao); mysql_query($inserir, $conexao) or die(mysql_error()); } } if($status == 3){ require_once "Connections/conexao.php"; mysql_select_db($database_conexao, $conexao); $procura = mysql_query("SELECT * FROM transacoes WHERE id = '$ref'", $conexao); $contar = mysql_num_rows($procura); if($contar > 0){ //aki faz o update $update = "UPDATE usuarios SET creditos = creditos+$calculo WHERE id = '$idusu'"; $update2 = "UPDATE transacoes SET status = 'Aprovada' WHERE id = '$ref'"; mysql_select_db($database_conexao, $conexao); mysql_query($update, $conexao) or die(mysql_error()); mysql_query($update2, $conexao) or die(mysql_error()); }else{ //aki faz o insert $inserir = "INSERT INTO transacoes (idusuario, status, nome, valor) VALUES ('$idusu', 'Aprovada', '$eventon', '$valor')"; $update = "UPDATE usuarios SET creditos = creditos+$calculo WHERE id = '$idusu'"; mysql_select_db($database_conexao, $conexao); mysql_query($inserir, $conexao) or die(mysql_error()); mysql_query($update, $conexao) or die(mysql_error()); } } if($status == 4){ require_once "Connections/conexao.php"; mysql_select_db($database_conexao, $conexao); $procura = mysql_query("SELECT * FROM transacoes WHERE id = '$ref'", $conexao); $contar = mysql_num_rows($procura); if($contar > 0){ //aki faz o update $update = "UPDATE transacoes SET status = 'Disponível' WHERE id = '$ref'"; mysql_select_db($database_conexao, $conexao); mysql_query($update, $conexao) or die(mysql_error()); }else{ //aki faz o insert $inserir = "INSERT INTO transacoes (idusuario, status, nome, valor) VALUES ('$idusu', 'Disponível', '$eventon', '$valor')"; mysql_select_db($database_conexao, $conexao); mysql_query($inserir, $conexao) or die(mysql_error()); } } if($status == 7){ require_once "Connections/conexao.php"; mysql_select_db($database_conexao, $conexao); $procura = mysql_query("SELECT * FROM transacoes WHERE id = '$ref'", $conexao); $contar = mysql_num_rows($procura); if($contar > 0){ //aki faz o update $update = "UPDATE transacoes SET status = 'Cancelada' WHERE id = '$ref'"; mysql_select_db($database_conexao, $conexao); mysql_query($update, $conexao) or die(mysql_error()); }else{ //aki faz o insert $inserir = "INSERT INTO transacoes (idusuario, status, nome, valor) VALUES ('$idusu', 'Cancelada', '$eventon', '$valor')"; mysql_select_db($database_conexao, $conexao); mysql_query($inserir, $conexao) or die(mysql_error()); } } $today = date("Y_m_d"); $file = fopen("LogPag2Seguro.$today.txt", "ab"); $hour = date("H:i:s T"); fwrite($file,"Log de Notificações e consulta\\\\r\\\\n"); fwrite($file,"Hora da consulta: $hour \\\\r\\\\n"); fwrite($file,"HTTP: ".$http['http_code']." \\\\r\\\\n"); fwrite($file,"Código de Notificação:".$notificationCode." \\\\r\\\\n"); fwrite($file, "Código da transação:".$response->code."\\\\r\\\\n"); fwrite($file, "REFERENCE: $ref \\\\r\\\\n"); fwrite($file, "Status da transação:".$response->status."\\\\r\\\\n"); fwrite($file,"______________________________________________________________________________ \\\\r\\\\n"); fclose($file); } ?> Compartilhar este post Link para o post Compartilhar em outros sites
lwtec 0 Denunciar post Postado Agosto 26, 2016 alguem da uma luz ai Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Agosto 26, 2016 No seu script só possui o cálculo de inversão percentual. Até agora, o que posso dizer, é para substituir mysql_* por PDO ou MySQLi. Quem realiza o cálculo de adição de 5% é você ou o próprio PagSeguro? Pois as vezes ele pode lhe retornar o valor que você irá receber e não o que o cliente realmente vai pagar. Compartilhar este post Link para o post Compartilhar em outros sites