Jump to content
Sign in to follow this  
tatiana schyneider

Erro na integração com a CIelo - XML

Recommended Posts

Boa tarde pessoal,

 

Estou implantando a loaj integrada cielo em um site, li o manual e segui as recomendaçoes, também vi alguns topicos aqui sobre esta implementaçao

 

Problema que ja virei o codigo e nao acho de forma alguma o motivo do erro, olhando os logs de erro, achei a seguinte mensagem onde o erro é exibido:

  ARQUIVO: /home/pmb/public_html/includes/errorHandling.php(Linha 64)
     MENSAGEM: 
     Código do erro: 001
     Mensagem: 
O XML informado não é valido:
- Invalid decimal value: unexpected char '84': '<xml-fragment/>'

Estou ja desesperada, porque estou há semanas neste bendito trecho :(

 

No xml achei isso:

ARQUIVO: /novoPedidoAguarde.php
OPERAÇÃO: Transacao
RESPOSTA: <?xml version="1.0" encoding="ISO-8859-1"?>
<erro xmlns="http://ecommerce.cbmp.com.br"><codigo>001</codigo><mensagem><![CDATA[
O XML informado não é valido:
- Invalid decimal value: unexpected char '84': '<xml-fragment/>'
]]></mensagem></erro>


Alguém tem alguma ideia?

 

Grata

Edited by tatiana schyneider

Share this post


Link to post
Share on other sites

Como está o XML que está sendo enviado à Cielo?

 

Olá,

 

Segue o xml


2015-01-07 22:26:39:000000 (BRST)
DO ARQUIVO: /novoPedidoAguarde.php
OPERAÇÃO: Transacao
ENVIO: <?xml version="1.0" encoding="ISO-8859-1" ?>
<requisicao-transacao id="2295f09234d37b1e58cbbb92400b1d34" versao="1.1.0">
   <dados-ec>
      <numero>1057335492</numero>
      <chave>45faaefc910fbe15b2e4b2ac686354f8ded842f0b12a87fc9fc40ce5047fe387</chave>
   </dados-ec>
   <dados-pedido>
      <numero>3922189</numero>
      <valor>cartucho 20ml</valor>
      <moeda>986</moeda>
      <data-hora>2015-01-07T22:26:39</data-hora>
      <idioma>PT</idioma>
   </dados-pedido>
   <forma-pagamento>
      <bandeira>visa</bandeira>
      <produto>1</produto>
      <parcelas>1</parcelas>
   </forma-pagamento>
   <url-retorno>http://infomais.com/retorno.php</url-retorno>
   <autorizar>3</autorizar>
   <capturar>true</capturar>
</requisicao-transacao>

***********************************************
2015-01-07 22:26:39:000000 (BRST)
DO ARQUIVO: /novoPedidoAguarde.php
OPERAÇÃO: Transacao
RESPOSTA: <?xml version="1.0" encoding="ISO-8859-1"?>
<erro xmlns="http://ecommerce.cbmp.com.br"><codigo>001</codigo><mensagem><![CDATA[
O XML informado não é valido:
- Invalid decimal value: unexpected char '82': '<xml-fragment/>'
]]></mensagem></erro>


Share this post


Link to post
Share on other sites

Observe:

<valor>cartucho 20ml</valor>

Este nó deve ser o valor do produto e não a descrição dele.

Share this post


Link to post
Share on other sites

Corrigi o erro do campo, mas agora esta dando este erro:

***********************************************
2015-01-08 17:25:59:000000 (BRST)
DO ARQUIVO: /novoPedidoAguarde.php
OPERAÇÃO: Transacao
RESPOSTA: Unknown SSL protocol error in connection to cieloecommerce.cielo.com.br:443 

A solução que temos é a a integrada(autenticação direto no site da cielo) portanto, não precisa de ssl no site, so que no exemplo é usado com, conforme as linhas abaixo: (como podem ver ate desabilitei a verificação do SSL)

// CONSTANTES
define("ENDERECO_BASE", "https://qasecommerce.cielo.com.br");
define("ENDERECO", ENDERECO_BASE."/servicos/ecommwsec.do");

define("CIELO", "1057335492");
define("CIELO_CHAVE", "45faaefc910fbe15b2e4b2ac686354f8ded842f0b12a87fc9fc40ce5047fe387");

// Envia requisição
function httprequest($paEndereco, $paPost){

	$sessao_curl = curl_init();
	curl_setopt($sessao_curl, CURLOPT_URL, $paEndereco);
	
	curl_setopt($sessao_curl, CURLOPT_FAILONERROR, true);

	//  CURLOPT_SSL_VERIFYPEER
	//  verifica a validade do certificado
	curl_setopt($sessao_curl, CURLOPT_SSL_VERIFYPEER, false);
	//  CURLOPPT_SSL_VERIFYHOST
	//  verifica se a identidade do servidor bate com aquela informada no certificado
	curl_setopt($sessao_curl, CURLOPT_SSL_VERIFYHOST, 2);

	//  CURLOPT_SSL_CAINFO
	//  informa a localização do certificado para verificação com o peer
	curl_setopt($sessao_curl, CURLOPT_CAINFO, getcwd() .
			"/ssl/verisign.crt");
	curl_setopt($sessao_curl, CURLOPT_SSLVERSION, 3);

	//  CURLOPT_CONNECTTIMEOUT
	//  o tempo em segundos de espera para obter uma conexão
	curl_setopt($sessao_curl, CURLOPT_CONNECTTIMEOUT, 10);

	//  CURLOPT_TIMEOUT
	//  o tempo máximo em segundos de espera para a execução da requisição (curl_exec)
	curl_setopt($sessao_curl, CURLOPT_TIMEOUT, 40);

	//  CURLOPT_RETURNTRANSFER
	//  TRUE para curl_exec retornar uma string de resultado em caso de sucesso, ao
	//  invés de imprimir o resultado na tela. Retorna FALSE se há problemas na requisição
	curl_setopt($sessao_curl, CURLOPT_RETURNTRANSFER, true);

	curl_setopt($sessao_curl, CURLOPT_POST, true);
	curl_setopt($sessao_curl, CURLOPT_POSTFIELDS, $paPost );

	$resultado = curl_exec($sessao_curl);
	
	if ($resultado)
	{
		return $resultado;
	}
	else
	{
		return curl_error($sessao_curl);
	}
		curl_close($sessao_curl);
}
Edited by tatiana schyneider

Share this post


Link to post
Share on other sites

Tatiana, você sabe o que é chave pública e chave privada? Sem estes conceitos você não vai conseguir entender para que de fato serve aquele certificado...

 

Sobre a questão em si, retire tudo que trata do SSL e deixe apenas:

curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

Eu uso assim e funciona sem problemas

Share this post


Link to post
Share on other sites

Tatiana, você sabe o que é chave pública e chave privada? Sem estes conceitos você não vai conseguir entender para que de fato serve aquele certificado...

 

Sobre a questão em si, retire tudo que trata do SSL e deixe apenas:

curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

Eu uso assim e funciona sem problemas

 

 

Obrigada pelas orientação

 

Entao: eu fiz as alterações e agora esta acusando esta mensagem:

2015-01-09 14:51:54:000000 (BRST)
DO ARQUIVO: /novoPedidoAguarde.php
OPERAÇÃO: Transacao
RESPOSTA: <?xml version="1.0" encoding="ISO-8859-1"?>
<erro xmlns="http://ecommerce.cbmp.com.br"><codigo>002</codigo><mensagem>Credenciais inválidas.</mensagem></erro>


Só que as credenciais estao certinhas, ja conferi!

Olhando o manual, percebi que esta linha aqui:

define("ENDERECO_BASE", "https://qasecommerce.cielo.com.br");
define("ENDERECO", ENDERECO_BASE."/servicos/ecommwsec.do");

Parece que mudou para essa:

https://cieloecommerce.cielo.com.br/Transactional/Order/Index

Só que quando coloco ele, da erro de timeout.. :( agora nao consigo passar disso..

Share this post


Link to post
Share on other sites

As credenciais são estas:

define("CIELO", "1057335492"); 
define("CIELO_CHAVE", "45faaefc910fbe15b2e4b2ac686354f8ded842f0b12a87fc9fc40ce5047fe387");

Se forem do ambiente de testes provavelmente ele esteja off, ai você tem que aguardar até ele voltar.

Share this post


Link to post
Share on other sites

As credenciais são estas:

define("CIELO", "1057335492"); 
define("CIELO_CHAVE", "45faaefc910fbe15b2e4b2ac686354f8ded842f0b12a87fc9fc40ce5047fe387");

Se forem do ambiente de testes provavelmente ele esteja off, ai você tem que aguardar até ele voltar.

 

Então, mas sera que pelo link ter mudado para este:

 

 

https://cieloecommerce.cielo.com.br/Transactional/Order/Index

 

Nao possa sar o motivo do erro? problema que como falei, existem duas linhas no codigo para mandar para o ambiente de produção:

define("ENDERECO_BASE", "https://qasecommerce.cielo.com.br");
define("ENDERECO", ENDERECO_BASE."/servicos/ecommwsec.do");
Edited by tatiana schyneider

Share this post


Link to post
Share on other sites

Tatiana, na dúvida faça o simples: baixe o manual e leia. Nele constam as URLs de serviço de tudo mais, até onde eu sei as URLs continuam as mesmas.

Share this post


Link to post
Share on other sites

Tatiana, na dúvida faça o simples: baixe o manual e leia. Nele constam as URLs de serviço de tudo mais, até onde eu sei as URLs continuam as mesmas.

 

Bom dia ESerra,

 

Eu olhei o manual novamente, e seguindo um exemplo deles abaixo:

<form action="https://cieloecommerce.cielo.com.br/Transactional/Order/Index" method="post">
	<input type="hidden" name="merchant_id" value="62bd91ba-11e4-45d1-b1e6-500029d8f251" />
	<input type="hidden" name="order_number" value="0000000001" />
	<input type="hidden" name="shipping_type" value="3" />
	<input type="hidden" name="cart_1_name" value="<?php echo $_SESSION['Carrinho']['Produto'][$key]['nome']; ?>" />

	<input type="hidden" name="cart_1_unitprice" value="100" />
	<input type="hidden" name="cart_1_quantity" value="1" />
	<input type="hidden" name="codigoBandeira" value="visa" />
	<input type="hidden" name="formaPagamento" value="1" />
	<input type="hidden" name="tipoParcelamento" value="3" />	
	<input type="hidden" name="capturarAutomaticamente" value="true" />	
	<input type="hidden" name="indicadorAutorizacao" value="3" />	
	<input type="hidden" name="produto" value="<?php echo $_SESSION['Carrinho']['Produto'][$key]['nome']; ?>" />

					
	<input type="hidden" name="cart_1_type" value="1" />

Ele ate entra no ambiente da cielo, entao entro com os dados, só que na pagina de retorno, fica td em branco,..

 

Nossa, ja reli esse manual, mas sempre quando começo do zero novamente, acontece outro problema :/

Share this post


Link to post
Share on other sites

Tatiana,

 

Você conseguiu resolver isso? minha dificuldade é que nao consigo pegar o conteudo de TID no retorno..

 

Sabe como conseguir?

 

Obrigado

 

Oi Fábio,

 

Infelizmente não consegui resolver, pois a CIELO diz que a versão anterior do código esta sendo descontinuada e (segundo eles) e melhor ja usar a nova :(

 

Entrei no site e baixei o manual novo, na opção de BUY PAGE CIELO, você não precisa mais mandar a chave, agora você tem um campo chamado merchant_id que é seu código.

 

Estou parada na questão do formulário onde você manda via post para este link novo:https://cieloecommerce.cielo.com.br/Transactional/Order/Index

 

é isso.;;

 

 

Share this post


Link to post
Share on other sites

Pessoal,

 

Ninguém tem mais alguma ideia?

 

Se alguém puder me ajudar neste problema, se for o caso, ate pago, pois ja estou ha dias nisso..

 

Também estou com problemas devido a mudança na homologação da cielo.

Alguém para nos dar uma força?

Share this post


Link to post
Share on other sites

Oi, Tatiana e Fábio,

 

Conseguiram avançar em algo? Também estou com o mesmo problema.

 

Olá Lucas,

 

Infelizmente não! Entrei em contato com o suporte técnico da CIELO, ficaram 10 dias para em dizerem que é só enviar campos via post :(

 

Essa nova solução deles com modificações esta me dando uma dor de cabeça.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.