Ir para conteúdo

POWERED BY:

Arquivado

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

Ana Paula Varani

[Resolvido] Erro: "Transação inválida. É necessário informar

Recommended Posts

Boa noite,

 

Estou tentando obter o código da API do PagSeguro porém me deparei com um problema antes mesmo de direcionar o usuário para a tela de pagamento do PagSeguro.

 

Após algumas tentativas, resolvi utilizar o código de exemplo encontrado no próprio site do PagSeguro e ainda estou recebendo como erro a mensagem: "Transação inválida. É necessário informar um email.".

 

Conferi meu e-mail, tentei colocar direto na url e nada.

 

Alguém já passou por isso e sabe o que pode ser?

 

O código que estou utilizando segue abaixo:

 

<?php

 

$email = 'meu_email@gmail.com';

$token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; //aqui coloquei o token obtido na minha conta

$url = 'https://ws.pagseguro.uol.com.br/v2/checkout/?email=' . $email . '&token=' . $token;

$xml = '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>

<checkout>

<currency>BRL</currency>

<items>

<item>

<id>0001</id>

<description>Notebook Prata</description>

<amount>24300.00</amount>

<quantity>1</quantity>

<weight>1000</weight>

</item>

<item>

<id>0002</id>

<description>Notebook Rosa</description>

<amount>25600.00</amount>

<quantity>2</quantity>

<weight>750</weight>

</item>

</items>

<reference>REF1234</reference>

<sender>

<name>José Comprador</name>

<email>comprador@uol.com.br</email>

<phone>

<areaCode>11</areaCode>

<number>56273440</number>

</phone>

</sender>

<shipping>

<type>1</type>

<address>

<street>Av. Brig. Faria Lima</street>

<number>1384</number>

<complement>5o andar</complement>

<district>Jardim Paulistano</district>

<postalCode>01452002</postalCode>

<city>Sao Paulo</city>

<state>SP</state>

<country>BRA</country>

</address>

</shipping>

</checkout> ';

 

$curl = curl_init($url);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_HTTPHEADER, Array('Content-Type: application/xml; charset=ISO-8859-1'));

curl_setopt($curl, CURLOPT_POSTFIELDS, $xml);

$xml= curl_exec($curl);

 

if($xml == 'Unauthorized'){

header('Location: paginaErro.php');

exit;

}

 

curl_close($curl);

 

$xml= simplexml_load_string($xml);

 

if(count($xml -> error) > 0){

header('Location: paginaErro.php');

exit;

}

header('Location: https://pagseguro.uol.com.br/v2/checkout/payment.html?code=' . $xml -> code);

?>

 

Desde já, agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá !

 

Veja o trecho:

 

$url = 'https://ws.pagseguro.uol.com.br/v2/checkout/?email=' . $email . '&token=' . $token;

 

Altere para:

 

$url = "'https://ws.pagseguro.uol.com.br/v2/checkout/?email='" . $email . "'&token='" . $token . '";

 

 

Para não confundir nas aspas, é assim:

 

"' ( aspas duplas + simples ) para iniciar

 

'" ( aspas simples + dupla ) no final

 

 

Espero que funcione.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na modalidade de XML o PagSeguro pede que você envie o e-mail e token na URL

fiz um tutorial que explica explica diretinho todos os passos usando XML:

http://sounoob.com.br/2011/09/14/criando-uma-requisicao-de-pagamento-do-pagseguro-via-xml-usando-php-sem-utilizar-a-biblioteca-oficial/

 

Particularmente eu não uso XML para o envio, a outra forma é bem mais simples... Dá uma olhada nesse post:

http://sounoob.com.br/2011/11/09/criando-uma-requisicao-de-pagamento-do-pagseguro-via-parametros-http-usando-php-sem-utilizar-a-biblioteca-oficial/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite, pessoal!

 

Muito obrigada pelas dicas!

Eu já havia seguido esse link do sounoob.com.br da maneira alternativa pois, realmente, fica muito mais organizado.

Ainda assim não funcionou!

 

Eu faço minhas alterações diretamente nos arquivos do meu servidor de testes. Porém, resolvi testar localmente! Resultado: funcionou!

Somente assim consegui descobrir o problema.

 

O php_curl, do PHP Extensions não estava habilitado.

É bem provável que essa extensão esteja desabilitada no servidor de testes também.

 

Muito obrigada pela ajuda de vocês e parabéns pelo tutorial, Sena. Está muito bem explicado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelo feedback, apenas para efeitos de problemas futuros... Na sua tela apareceu algum erro quando a lib curl estava desabilitada? Qual?

 

Assim conseguirei atualizar os tutoriais para as próximas pessoas não precisar pensar muito para resolver isso.

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, vamos lá!

 

Utilizando o localhost, recebi erro "Call to undefined function curl_init()", conforme imagem abaixo:

 

ScreenHunter_01%20Sep.%2025%2009.54.jpg

 

Já acessando pelo servidor, ele chega a me redirecionar para o site do PagSeguro, porém dá aquele erro da "Transação inválida":

 

ScreenHunter_03%20Sep.%2025%2009.55.jpg

 

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahh sim...

 

Esse erro eu já previa no tutorial

 

logo abaixo de:

$curl = curl_init($url);

Já faz referencia sobre esse erro.

 

Enfim. valeu pelo feedback, e qualquer coisa comenta lá no blog

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sena,

 

O problema para o segundo erro da minha última resposta (e assunto deste tópico) não estava no php_curl!

 

Quando eu testei localmente funcionou apenas habilitando-o.

 

Ao verificar com o pessoal do servidor, esta extensão já estava habilitada.

 

Após 3 horas analisando, vimos que o problema era com o proxy! Ele estava barrando a comunicação com o servidor do PagSeguro! :grin:

Após a liberação do IP por eles, consegui prosseguir com a implementação.

 

Mais uma vez, obrigada.

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.