Ir para conteúdo

Arquivado

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

lwtec

problema com calculo de valor

Recommended Posts

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

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

×

Informação importante

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