Integração Cielo XML com PHP
Boa noite \o
Tenho tentado integrar uma loja virtual á Cielo usando o webservice no ambiente de testes, mas sem sucesso :(
Pra resumir, o máximo que consegui foi obter o status 001 de resposta, que significa "A mensagem XML está fora do formato especificado pelo arquivo ecommerce.xsd". Já li e reli esse arquivo do início ao fim, até que cheguei nesse código que to postando abaixo. E mesmo assim não consigo achar onde tá errado.
Alguém sabe como ajudar? Agradeço!
$xml_str = <<<XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<requisicao-transacao id="a97ab62a-7956-41ea-b03f-c2e9f612c293" versao="1.2.1">
<dados-ec>
<numero>NUMERO_DA_LOJA</numero>
<chave>CHAVE_DE_ACESSO</chave>
</dados-ec>
<dados-portador>
<numero>NUMERO_CARTAO</numero>
<validade>VENCIMENTO_CARTAO</validade>
<indicador>1</indicador>
<codigo-seguranca>CODIGO_DE_SEGURANCA</codigo-seguranca>
<token>
</token>
</dados-portador>
<dados-pedido>
<numero>123456789</numero>
<valor>1000</valor>
<moeda>986</moeda>
<data-hora>2011-12-07T11:43:37</data-hora>
<descricao>[origem:10.50.54.156]</descricao>
<idioma>PT</idioma>
<soft-descriptor>
</soft-descriptor>
</dados-pedido>
<forma-pagamento>
<bandeira>visa</bandeira>
<produto>A</produto>
<parcelas>1</parcelas>
</forma-pagamento>
<url-retorno>[https://www.meusite.com.br/minhapagina/retorno](https://www.meusite.com.br/minhapagina/retorno)
<autorizar>1</autorizar>
<capturar>false</capturar>
<campo-livre>Informações extras</campo-livre>
<bin>455187</bin>
<gerar-token>false</gerar-token>
<avs><![CDATA[
<dados-avs>
<endereco>Rua Teste AVS</endereco>
<complemento>Casa</complemento>
<numero>123</numero>
<bairro>Vila AVS</bairro>
<cep>12345-123</cep>
</dados-avs>]]>
</avs>
</requisicao-transacao>'
XML;
$url = "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do";
$post_data = array('xml' => $xml_str);$stream_options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded' . "\r\n",
'content' => http_build_query($post_data)));
$context = stream_context_create($stream_options);
$response = file_get_contents($url, null, $context);
echo $response;
Resposta:
>
001 Requisição inválida
OBS: Os dados só estão no tipo NUMERO_CARTAO porque eu escondi os dados verdadeiros. Claro que quando testo de verdade uso os dados reais.
Discussão (2)
Carregando comentários...