Ir para conteúdo

POWERED BY:

Arquivado

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

Furian

[Resolvido] Retorno automático X produtos

Recommended Posts

Bom dia galera!!

 

Bom, sei que talvez não esteja colocando este tópico no lugar certo, porém eu o coloquei também no tópico referente a e-commerce e não obtive nenhuma resposta, talvez aqui eu possa receber algum esclarecimento quanto ao procedimento que posso utilizar para resolver este problema.

 

Tenho o seguinte código:

 

<?php
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'];
for ($i=1; $i<$NumItens; $i++) {
 $ProdQuantidade = $_POST['ProdQuantidade_$i'];
 $ProdDescricao = $_POST['ProdDescricao_$i'];
 $ProdID = $_POST['ProdID_$i'];
}
 
 // 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(),
	Quantidade='$ProdQuantidade',
	Descricao='$ProdDescricao',
	ID='$ProdID'");

}
?>

Lógicamente este código não está completo, porém tem tudo o que é preciso para resolver meu problema, o que eu quero é passar pegar os valores de: $ProdQuantidade, $ProdDescricao e ProdID que são arrays e salvá-los no banco de dados, gostaria de saber o que eu posso fazer para que venha a funcionar corretamente, pois da forma como está ele não salva estes itens no banco de dados, já utilizei outras formas, mas o máximo que consegui foi salvar apenas o primeiro valor do array no banco...

 

Desde já agradeço a atenção dispensada, grande abraço até...

Compartilhar este post


Link para o post
Compartilhar em outros sites

for ($i=1; $i<$NumItens; $i++) {
 $ProdQuantidade[$i] = $_POST['ProdQuantidade_$i'];
 $ProdDescricao[$i] = $_POST['ProdDescricao_$i'];
 $ProdID[$i] = $_POST['ProdID_$i'];
}

Agora para pegar este valor basta fazer isso:

 

echo $ProdQuantidade[1];
echo $ProdQuantidade[2];

 

e assim vai, você esta pegando o indice que você quer de um array;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Furian,

 

Seu outro tópico foi excluído. Para uma melhor participação, sugiro que leia o tópico de orientações para uma boa participação..

 

Sobre o seu problema, adicione este código ao início do seu script e poste aqui o resultado.

 

echo '<pre>';
print_r($_POST);
die('</pre>');

Veja que o código acima NÃO vai resolver o problema. Somente vai mostrar como estão vindo os dados para podermos ajudar melhor.

Poste também a estrutura das tabelas.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw Avelino, obrigado pela atenção, mas acontece que estes valores tem que ser pegos de forma automática, não posso definir quais itens devem ser pegos para serem gravados no banco, se eu fizer o que você está dizendo acredito que eu pegarei com $ProdQuantidade[1] o primeiro valor do array, correto? Caso esteja eu salvaria apenas este valor no BD, e eu preciso salvar todos os valores destes arrays no BD de forma dinâmica, veja se estou correto...

 

Grande abraço, até...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você leu o meu POST? Porque não postou o que eu pedi aqui?

 

Ajude-nos a te ajudar.

 

Carlos Eduardo

 

 

Foi mal Matias, não tinha lido teu post, vou fazer o que tu pediu e postar o resultado aqui...

 

Grande abraço, até...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valor retornado após a inserção do código na 2ª tentativa:

 

Array ()

 

Na primeira tentativa ele não retornou nada, foi para a página de agradecimento.

 

 

 

 

Estrutura da tabela:

 

 

`pagsegurotransacoes` (

`TransacaoID` varchar(36) NOT NULL,

`VendedorEmail` varchar(200) NOT NULL,

`Referencia` varchar(200) DEFAULT NULL,

`TipoFrete` char(2) DEFAULT NULL,

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

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

`Anotacao` text,

`TipoPagamento` varchar(50) NOT NULL,

`StatusTransacao` varchar(50) NOT NULL,

`CliNome` varchar(200) NOT NULL,

`CliEmail` varchar(200) NOT NULL,

`CliEndereco` varchar(200) NOT NULL,

`CliNumero` varchar(10) DEFAULT NULL,

`CliComplemento` varchar(100) DEFAULT NULL,

`CliBairro` varchar(100) NOT NULL,

`CliCidade` varchar(100) NOT NULL,

`CliEstado` char(2) NOT NULL,

`CliCEP` varchar(9) NOT NULL,

`CliTelefone` varchar(14) DEFAULT NULL,

`NumItens` int(11) NOT NULL,

`Data` datetime NOT NULL,

`Quantidade` int(11),

`Descricao` varchar(50),

`ID` varchar(50),

`status` tinyint(1) unsigned NOT NULL DEFAULT '0',

UNIQUE KEY `TransacaoID` (`TransacaoID`,`StatusTransacao`),

KEY `Referencia` (`Referencia`),

KEY `status` (`status`)

)

 

 

Vou postar aqui o código... para que os valores de $_POST sejam printados na tela onde eu deveria colocar este código?

 

 

<?
$retorno_site = '**';  // Site para onde o usuário vai ser redirecionado
$retorno_token = '**'; // Token gerado pelo PagSeguro$retorno_host = '*****'; // Local da base de dados MySql
$retorno_database = '*****'; // Nome da base de dados MySql
$retorno_usuario = '*****'; // Usuario com acesso a base de dados MySql
$retorno_senha = [email=""]'*****'[/email];  // Senha de acesso a base de dados MySql
$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) {
 
 echo '<pre>';
 print_r($_POST);
 die('</pre>'); // 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'];
 $ProdQuantidade = $_POST['ProdQuantidade_1'];
 $ProdDescricao = $_POST['ProdDescricao_1'];
 $ProdID = $_POST['ProdID_1'];
 
 // Gravando Dados
mysql_query("INSERT into PagSeguroTransacoes ('TransacaoID', 'VendedorEmail', 'Referencia', 'TipoFrete', 'ValorFrete', 'Extras ,  'Anotacao', 'TipoPagamento', 'StatusTransacao', 'CliNome', 'CliEmail', 'CliEndereco', 'CliNumero', 'CliComplemento', 'CliBairro', 'CliCidade', 'CliEstado', 'CliCEP', 'CliTelefone', 'NumItens', 'Data=now()', 'Quantidade', 'Descricao', 'ID') VALUES ('$TransacaoID', '$VendedorEmail', '$Referencia', '$TipoFrete', '$ValorFrete', '$Extras', '$Anotacao', '$TipoPagamento', '$StatusTransacao', '$CliNome', '$CliEmail', '$CliEndereco', '$CliNumero', '$CliComplemento', '$CliBairro', '$CliCidade', '$CliEstado', '$CliCEP', '$CliTelefone', '$NumItens', '$ProdQuantidade', '$ProdDescricao', '$ProdID')");}Header("Location: $retorno_site"); exit();
?> 

 

 

Obrigado pela atenção...

 

Grande abraço, até...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código ficou assim:

 

<?php
$PagSeguro = 'Comando=validar';
$PagSeguro .= '&Token=' . $retorno_token; 
$Cabecalho = "Retorno PagSeguro";

 echo '<pre>';
 print_r($_POST);
 die('</pre>');

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'];
 $ProdQuantidade = $_POST['ProdQuantidade_1'];
 $ProdDescricao = $_POST['ProdDescricao_1'];
 $ProdID = $_POST['ProdID_1'];
 
 // Gravando Dados
mysql_query("INSERT into PagSeguroTransacoes ('TransacaoID', 'VendedorEmail', 'Referencia', 'TipoFrete', 'ValorFrete', 'Extras ,  'Anotacao', 'TipoPagamento', 'StatusTransacao', 'CliNome', 'CliEmail', 'CliEndereco', 'CliNumero', 'CliComplemento', 'CliBairro', 'CliCidade', 'CliEstado', 'CliCEP', 'CliTelefone', 'NumItens', 'Data=now()', 'Quantidade', 'Descricao', 'ID') VALUES ('$TransacaoID', '$VendedorEmail', '$Referencia', '$TipoFrete', '$ValorFrete', '$Extras', '$Anotacao', '$TipoPagamento', '$StatusTransacao', '$CliNome', '$CliEmail', '$CliEndereco', '$CliNumero', '$CliComplemento', '$CliBairro', '$CliCidade', '$CliEstado', '$CliCEP', '$CliTelefone', '$NumItens', '$ProdQuantidade', '$ProdDescricao', '$ProdID')");

}

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

O valor retornado foi:

 

 

 

Array()

E agora... o que fazer?

 

Grande abraço, até...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você colocou no lugar errado... Assim.

 

echo '<pre>';
print_r($_POST);
die('</pre>');
if ($confirma) {

Carlos Eduardo

 

 

Só tu mesmo pra aturar o orelhudo aqui heim...

 

Coloquei no local indicado, porém retornou a mesma coisa:

 

Array()

 

 

Será que o problema está no pagseguro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesta parte do código, você está fazendo o IF: if (strcmp ($res, "VERIFICADO") == 0).

Mas será que ele está entrando aí ? Porquê só se ele entrar nesse IF que ele declara a variável $confirma como TRUE.

Verifique se ele está entrando no IF. Dentro do If, coloque algo assim: echo "Entrou no If";.


 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; ##################################### coloque aqui dentro o que eu falei.
        break;
        }
        }
        fclose ($fp);
 }

Se nao entrar, o problema está aí. =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dee... esta parte do código ficou assim:

 

 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;
	echo "entrou no IF";
      	break;
   	}
	}
	fclose ($fp);
 }

Também tentei sem comentar o $confirma=true; e está indo direto para a mensagem de compra efetuada... onde pode estar o erro aí?

 

Grande abraço, até...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom galera... dei uma lida no tópico de E-commerce e vi que o retorno do pagseguro não imprime dados na tela, então não vai adiantar tentar printar nada na tela quando o retorno for acessado, resolvi mudar de tática já que tá complicado de fazer funcionar, então gostaria de uma ajuda de vocês em relação a isso.

 

Preciso pegar o valor $TransacaoID, que é um valor único e salvar no banco de dados tantas vezes quanto for necessário, essa variável faz referência ao id da transação que foi efetuada e é única para cada transação, porém um transação pode possuir diversos produtos então quero fazer mais ou menos isso:

 

Vou postar aqui abaixo o código:

 

$ref = mysql_query("SELECT COD_PRODUTO,QUANT,OPCAO FROM CARRINHO WHERE SESSAO='$Referencia'");
while ($ref_res = mysql_fetch_array($ref)) {
  $prod = $ref_res['COD_PRODUTO'];
  $op = $ref_res['OPCAO'];
  $qua = $ref_res['QUANT'];
  mysql_query("INSERT INTO VENDAS VALUES (0,'$TransacaoID','$prod','$op','$data','$qua')");
}

Com esse código quero pegar os produtos adicionados ao carrinho e incluir na tabela VENDAS juntamente com o código da transação referente a compra de cada produto...

 

Caso eu não esteja sendo claro me avisem...

 

Obrigado a todos pela atenção...

 

Grande abraço, até...

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.