mruoppolo 14 Denunciar post Postado Julho 28, 2015 Olá, tudo bem? Estou precisando fazer uma homologação da CIELO para um cliente, o que eu fui informado pela própria operadora é que preciso gerar um xml com os dados da transação e enviar via cURL para eles, após isso apenas interpreto o resultado. Encontrei alguns tutoriais na internet, mas nenhum funciona e a documentação da CIELO é super confusa, principalmente os exemplos do repositório de códigos deles. Ai eu criei uma variável chamada "string" que monta o xml pra ser enviado via cURL. O código ficou assim: //cria o xml $string = '<?xml version="1.0" encoding="ISO-8859-1" ?>'; $string .= '<requisicao-transacao id="'.$id.'" versao="1.2.1">'; $string .= ' <dados-ec>'; $string .= ' <numero>'.$numero.'</numero>'; $string .= ' <chave>'.$chave.'</chave>'; $string .= ' </dados-ec>'; $string .= ' <dados-portador>'; $string .= ' <numero>'.$cartao_numero.'</numero>'; $string .= ' <validade>'.$validade.'</validade>'; $string .= ' <indicador>1</indicador>'; $string .= ' <codigo-seguranca>'.$cartao_code.'</codigo-seguranca>'; $string .= ' <token></token>'; $string .= ' </dados-portador>'; $string .= ' <dados-pedido>'; $string .= ' <numero>'.$id.'</numero>'; $string .= ' <valor>'.$valor.'</valor>'; $string .= ' <moeda>998</moeda>'; $string .= ' <data-hora>'.$agora.'</data-hora>'; $string .= ' <descricao>'.$descricao.'</descricao>'; $string .= ' <idioma>PT</idioma>'; $string .= ' <soft-descriptor></soft-descriptor>'; $string .= ' <taxa-embarque></taxa-embarque>'; $string .= ' </dados-pedido>'; $string .= ' <forma-pagamento>'; $string .= ' <bandeira>'.$bandeira.'</bandeira>'; $string .= ' <produto>A</produto>'; $string .= ' <parcelas>1</parcelas>'; $string .= ' </forma-pagamento>'; $string .= ' <url-retorno>'.$retorno.'</url-retorno>'; $string .= ' <autorizar>3</autorizar>'; $string .= ' <capturar>true</capturar>'; $string .= '</requisicao-transacao>'; $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, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 40); $string2 = curl_exec($ch); curl_close($ch); $xml = simplexml_load_string($string); 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!<br>'.$string2; exit; }else{ echo 'Transação não autorizada: '.$xml->autorizacao->mensagem.'<br>'.$string2.'.'; exit; } }else{ echo 'Transação não autorizada*: '.$xml->mensagem.'<br>'.$string2; exit; } Porém ele deveria gerar um "tid",o que não acontece, tanto é que ele vai direto para o erro "Transação não autorizada*" e eu não consigo encontrar o motivo. Você sabe o que pode ser? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
vmolina 8 Denunciar post Postado Julho 28, 2015 Recentemente eles alteram a versao do SSL de 3 para 4. Tente alterar para: curl_setopt($ch, CURLOPT_SSLVERSION, 4); Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Julho 28, 2015 Puts, era isso mesmo, não acredito nisso, estou a dias, fuçando, perdi o prazo de entrega, kkkk, cara valeu mesmo de verdade Abraço Compartilhar este post Link para o post Compartilhar em outros sites
vmolina 8 Denunciar post Postado Julho 28, 2015 @mruoppolo Passei muito perrengue pra descobrir isso....Mas que bom que resolveu o seu problema.... Compartilhar este post Link para o post Compartilhar em outros sites