Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mruoppolo

Erro cURL na Homologação Cielo

Recommended Posts

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

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 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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.