hildor 0 Denunciar post Postado Julho 21, 2015 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. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 21, 2015 Habilite todas as exibições de erro, como mostrado neste tópico Sse CURLOPT_HEADER, para exibir o cabeçalho HTTP de resposta. CURLOPT_VERBOSE também ajuda a fazer debug e ver onde está o problema Compartilhar este post Link para o post Compartilhar em outros sites
hildor 0 Denunciar post Postado Julho 21, 2015 Nada feito. Não exibe nenhum erro. Inclui a exibição de erros e : $ch = curl_init(); flush(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, 'mensagem='.$string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, 'https://qasecommerce.cielo.com.br/servicos/ecommwsec.do'); curl_setopt($ch, CURLOPT_SSLVERSION, 3); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_VERBOSE, true); 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); Porém não vem resposta nenhuma. Nem erro de verbose nada. Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Julho 21, 2015 Você está tentando usar algo que não existe mais, a função débito da Cielo foi alterada a alguns meses, isto que você quer fazer só existe na função crédito agora. Compartilhar este post Link para o post Compartilhar em outros sites
hildor 0 Denunciar post Postado Julho 21, 2015 Edgar, você poderia me auxiliar por favor, a arrumar isso para o formato certo no credito mesmo? Apontar o erro? Compartilhar este post Link para o post Compartilhar em outros sites
hildor 0 Denunciar post Postado Julho 21, 2015 O problema foi resolvido. Mude de 3 para 4 no código: PARA: curl_setopt($sessao_curl, CURLOPT_SSLVERSION, 4); Sei que tem bastante scripts por ai e todos são com o SSLVersion 3 ... então acho que irá ajudar muitos. Compartilhar este post Link para o post Compartilhar em outros sites
hildor 0 Denunciar post Postado Julho 22, 2015 Em partes resolvido, em partes não. Agora eu consigo obter o TID porém só no status 0. Não consigo nem com os cartões de teste ter uma capturada / autorizada. Compartilhar este post Link para o post Compartilhar em outros sites
hildor 0 Denunciar post Postado Julho 22, 2015 Agora está resolvido efetivamente. Produto = 1 Compartilhar este post Link para o post Compartilhar em outros sites