Ir para conteúdo

POWERED BY:

Arquivado

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

hildor

Cielo Webservice

Recommended Posts

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

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

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

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

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

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

×

Informação importante

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