Olá a todos,
Estou a dois dias lendo o manual da Cielo e procurando em tudo que é lugar alguma forma de fazer funcionar.
Ele processa na tela, sem erros, contudo só me responde: Transação não autorizada:
Isso pois acredito que sequer esteja chegando a CIELO a minha requisição.
Testei esse código no WAMP local e em servidor web que tenho aplicação rodando.
Também já verifiquei o php_curl está instalado em ambos.
<?php date_default_timezone_set( 'America/Sao_Paulo' ); header ('Content-type: text/html; charset=UTF-8'); echo "<br />processa cartão <br /><br />"; $agora = date('Y-m-d\TH:i:s'); $string=<<<XML <?xml version='1.0' encoding='ISO-8859-1'?> <requisicao-transacao id='a97ab62a-7956-41ea-b03f-c2e9f612c293' versao='1.2.1'> <dados-ec> <numero>1006993069</numero> <chave>25fbb997438630f30b112d033ce2e621b34f3</chave> </dados-ec> <dados-portador> <numero>4012001037141112</numero> <validade>201508</validade> <indicador>1</indicador> <codigo-seguranca>123</codigo-seguranca> <token/> </dados-portador> <dados-pedido> <numero>178148599</numero> <valor>1000</valor> <moeda>986</moeda> <data-hora>$agora</data-hora> <descricao></descricao> <idioma>PT</idioma> <soft-descriptor/> <taxa-embarque/> </dados-pedido> <forma-pagamento> <bandeira>visa</bandeira> <produto>A</produto> <parcelas>1</parcelas> </forma-pagamento> <url-retorno>http://meuendereco.com.br/cielo/proc_cartao.php</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; //Ambiente de testes $url = "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do"; $ch = curl_init(); flush(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, 'mensagem='.$string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSLVERSION, 3); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); curl_setopt($ch, CURLOPT_TIMEOUT, 40); $string = curl_exec($ch); if(!curl_errno($ch)) { $info = curl_getinfo($ch); echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url']; } curl_close($ch); $xml = simplexml_load_string($string); echo "<br />"; if ($xml->tid) { echo 'TID da transação: '.$xml->tid.'<br>'; if($xml->captura->codigo == '6' AND $xml->autorizacao->codigo == '6') { echo 'Transação autorizada pela operadora do cartão!'; }else{ echo 'Transação não autorizada: '.$xml->autorizacao->mensagem.'.'; } }else{ echo 'Transação não autorizada: '.$xml->mensagem; } ?>
Peço muito a ajuda de vocês. O normal seria a resposta de transação ser aceita ou autorizada.