Ir para conteúdo

POWERED BY:

Arquivado

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

RoseDsg

Retorno Automático não grava valor nem produto no BD

Recommended Posts

Pessoal, li tudo possivel aqui e na net e não consegui solução do meu problema! Fiz o retorno automatico, criei o banco de dados e td funciona perfeito. O único problema é que não está entrando no banco de dados: ProdID,

ProdDescricao,ProdValor e ProdQuantidade. Já fiz e refiz e nada do Pagseguro enviar estas informações pro meu BD... Minha tabela está da seguinte forma:

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

 

Alguem pode me informar onde estou errando???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte teste.

 

Faça um dump dos dados enviados pelo PagSeguro, e envia para o seu e-mail. Veja se todas as váriaveis estão sendo recebidas corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte teste.

 

Faça um dump dos dados enviados pelo PagSeguro, e envia para o seu e-mail. Veja se todas as váriaveis estão sendo recebidas corretamente.

 

 

 

Oi Douglas obrigada pela resposta! fiz o dump pro email e tá tudo certo... continuo sem entender o pq q não entra os dados ainda... Alguma outra solução?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com o mesmo problema, nem insere nem faz update

 

 

Alaerte o meu tem feito update o problema mesmo é o valor e quantidade e o nome do produto... não sei o pq do erro ainda!!!

 

Alguem dá uma luz ai pra gente???????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você está usando a página de retorno automático ?

 

 

Alaerte aq no forum encontrei este retorno.php:

 

<?

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

# CONFIGURAÇÕES

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

 

$retorno_site = 'http://www.meusite.com.br/retorno.php'; // Site para onde o usuário vai ser redirecionado

$retorno_token = 'xxxxxx'; // Token gerado pelo PagSeguro

 

$retorno_host = 'xxxx'; // Local da base de dados MySql

$retorno_database = 'xxxx'; // Nome da base de dados MySql

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

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

 

 

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

# NÃO ALTERE DESTA LINHA PARA BAIXO

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

 

$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'];

$ProdID = $_POST['ProdID'];

$ProdDescricao = $_POST['ProdDescricao'];

$ProdValor = $_POST['ProdValor'];

$ProdQuantidade = $_POST['ProdQuantidade'];

$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'];

 

// Gravando Dados

mysql_query("INSERT into PagSeguroTransacoes SET

TransacaoID='$TransacaoID',

VendedorEmail='$VendedorEmail',

Referencia='$Referencia',

ProdID='$ProdID',

ProdDescricao='$ProdDescricao',

ProdValor='$ProdValor',

ProdQuantidade='$ProdQuantidade',

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();");

 

}

 

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

 

mysql_free_result($Recordset1);

?>

 

Já li posts aqui q teria q alterar o código para a variavel $produtos e dai em diante array de 'prodID' etc... mas não sei como alterar o código dessa forma... Poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, li tudo possivel aqui e na net e não consegui solução do meu problema! Fiz o retorno automatico, criei o banco de dados e td funciona perfeito. O único problema é que não está entrando no banco de dados: ProdID,

ProdDescricao,ProdValor e ProdQuantidade. Já fiz e refiz e nada do Pagseguro enviar estas informações pro meu BD... Minha tabela está da seguinte forma:

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

 

Alguem pode me informar onde estou errando???

 

ProdID, ProdDescricao, ProdValor e ProdQuantidade são arrays, portanto podem conter mais de um item.

Neste caso você precisará criar uma forma de percorrer estes arrays e armazenar as informações no DB.

 

http://forum.imasters.com.br/index.php?/topic/331291-retorno-automatico-do-pagseguro-implementacao-em-php/

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.