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</url-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.