Comunidade
Iniciar sessão do checkout só funciona na sandbox
Boa tarde,
Estou com problemas para gerar a sessão. Na vdd está funcionando para sandbox, mas não para produção. Antes estava funcionando nos dois casos.
Estou gerando conforme a documentação:
https://dev.pagseguro.uol.com.br/v1.0/reference/transparente-gerando-uma-sessao
Para produção estou recebendo um erro
{"@attributes":{"lang":"en"},"head":{"title":"411 - Length Required"},"body":{"h1":"411 - Length Required"}}
Poderiam me ajudar?
Meu código está assim:
include 'configuracao.php';
$url = URL_PAGSEGURO ."sessions?email=".EMAIL_PAGSEGURO."&token=".TOKEN_PAGSEGURO;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("accept: application/xml;"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$retorno = curl_exec($curl);
curl_close($curl);
$xml = simplexml_load_string($retorno);
echo json_encode($xml);
Mesmo problema aqui, porém seguindo o código escrito na documentação.
https://dev.pagseguro.uol.com.br/v1.0/reference/transparente-gerando-uma-sessao
Caso consiga uma resposta favor enviar para alvaro.lordelo@gmail.com
Olá, Álvaro. Consegui resolver o problema enviando Content-Length:0 . Teste enviar só uma vez. Se não der certo, tente enviar 2 vezes. Desse jeito q fiz deu certo:
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Accept: application/x-www-form-urlencoded;charset=UTF-8;Content-Length:0"));
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Length:0"));
Muito Obrigado pela resposta...resolveu o problema...o suporte apenas deu uma resposta vazia...que não ajudou em nada!
qualquer coisa é só chamar...
Olá pessoal, tudo bem ? Estava com o mesmo problema e resolvi com a sugestão da Daniela. O problema agora é que consigo iniciar a sessão, porém, o processamento do pagamento só funciona no sandbox. Tentei a mesma solução no header mas não rolou. Vou postar aqui a chamada do cURL, se alguém mais passou por isso ou se tiver alguma ideia, eu agradeço.
$buildQuery = http_build_query($DadosArray);
$url = URL_PAGSEGURO . "transactions";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HTTPHEADER, Array("Content-Type: application/x-www-form-urlencoded; charset=UTF-8"));
//curl_setopt($curl, CURLOPT_HTTPHEADER, array("Accept: application/x-www-form-urlencoded;charset=UTF-8;Content-Length:0"));
//curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Length:0"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $buildQuery);
$retorno = curl_exec($curl);
curl_close($curl);
$xml = simplexml_load_string($retorno);
Para checar a transação e fazer o pagamento eu passei esse Header:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
Aquele outro eu usei só pra gerar o session_id
Estava com esse problema também e resolvi usando a dica de vocês, obrigado