Ir para conteúdo

Arquivado

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

cezaarr

[Resolvido] webservice cielo

Recommended Posts

 

Então, gostaria de saber como coletar os dados de retorno.

Wagner, da mesma forma que você envia uma <requisicao-autorizacao />, você enviará uma <requisicao-consulta />

 

;)

 

hummm... obrigado... farei...

 

o "vicio" de brpay/pagseguro/paypal me fez acreditar que o retorno de sucesso/falha viria por POST, ehhehe

 

obrigado pela luz...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal , ressucitando novamente , sem querer ser chato nem nada , será que alguem pode me ajudar a dar os primeiros passos para fazer funcionar esse webservice ?

Obrigado .

 

Se você já leu todo o manual, veja o post #13

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim sim , eu até testei , mas ele dá esse erro

 

string(887) " 12346 chave Brasilgate 097 123456789 1000 986 2010/08/20 13:26:55 123 1 http://demo.cinodo.com.br/prototipo/cielo/cielo1.php 2 false " int(0) string(0) ""

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 2: parser error : XML declaration allowed only at the start of the document in /home/democin/public_html/prototipo/cielo/cielo1.php on line 108

 

Warning: simplexml_load_string() [function.simplexml-load-string]: <?xml version='1.0' encoding='UTF-8'?> in /home/democin/public_html/prototipo/cielo/cielo1.php on line 108

 

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in /home/democin/public_html/prototipo/cielo/cielo1.php on line 108

 

Warning: Invalid argument supplied for foreach() in /home/democin/public_html/prototipo/cielo/cielo1.php on line 109

 

TID

Data: 2010-08-20T13:28:04

Autentica :

Redirecionar para preencher dados cartão

 

e não sei como fazer a pagina de retorno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!!!!

mais claro que os post acima!!!!

Onde é que tu esta tendo problema?

 

 

 

Será que alguem pode me ajudar ???

Obrigado

 

eu testei o codigo , so que ele apresenta o erro que mosteri , queria saber como resolve-lo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa ai galera , eu fiz umas modificações e o erro nao aparece , eu utilizei o codigo do João Batista Neto , utilizei tambem o codigo do aprendendo_php.

 

Agora , como faço para receber o resultado da Cielo para meu site ?

 

obrigado..

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

eu testei o codigo , so que ele apresenta o erro que mosteri , queria saber como resolve-lo.

 

talvez seja o interpretador php... tenta o seguinte... em vez de

 

$autenticacao = <<<XML
 <?xml version="1.0" encoding="UTF-8"?>
 blablabla
 XML
;

tenta

 

$autenticacao = '
 <?xml version="1.0" encoding="UTF-8"?>
 blablabla
 '
;

so pra teste... as vezes, dependendo como esta a config do server, ele nao entende muito bem esse <<<XML

 

 

alias, pra entender o processo, o XML pode até ter dados estaticos... quando você "sacar" o que esta fazendo, aih você aplica o conteudo dinamico pro que você quer fazer e

SIM, o manual é confuso, até você entender os tipos de requisiçao, e sacar que o "retorno" na verdade é uma consulta a parte...

 

 

 

 

 

editando:

entao, como eu disse, o "retorno" nao existe, você tem que fazer uma consulta pra saber o resultado(o que seria o retorno), um exemplo tosquinho que fiz pra testes enquanto tava estudando(com a ajuda desse topico):

 

$mensagem = '<?xml version="1.0" encoding="UTF-8"?>
 <requisicao-consulta id="5" versao="1.0.0" xmlns="http://ecommerce.cbmp.com.br">
	<tid>XXXXXXXXXXXXXXXXXX</tid>
	<dados-ec>
                <numero>ffffffffffffffff</numero>
                <chave>aaaaaaaaaaaaaaaaaaaaaaaaaa</chave>
           
        </dados-ec>
        
		
 </requisicao-consulta>'
 ;
 
 
 
 /**
 * Iniciando CURL
 */
 $curl = curl_init();
 
 /**
 * Verificamos se o recurso CURL foi criado com êxito
 */
 if ( is_resource( $curl ) ){
        curl_setopt( $curl , CURLOPT_HEADER , 0 );
		curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt( $curl , CURLOPT_RETURNTRANSFER , 1 );
        curl_setopt( $curl , CURLOPT_FOLLOWLOCATION , 1 );
        curl_setopt( $curl , CURLOPT_URL , 'https://qasecommerce.cielo.com.br/servicos/ecommwsec.do' );
        curl_setopt( $curl , CURLOPT_POST , 1 );
        curl_setopt( $curl , CURLOPT_POSTFIELDS , http_build_query( array( 'mensagem' => $mensagem ) ) );
 
        $xml = curl_exec( $curl ); $ern = curl_errno( $curl ); $err = curl_error( $curl );
 
        curl_close( $curl );
 
        if ( (bool) $ern ){
                echo 'Ocorreu um erro[' , $ern , ']: ' , $err;
        } else {
                //var_dump( $xml , $ern , $err );
				print_r($xml."<br><hr><br>");
				print_r($ern."<br><hr><br>");
				print_r($err."<br><hr><br>");
				$DadosEnvio= simplexml_load_string($xml);
				echo "<pre>".$xml."</pre>";

        }
 } else {
        echo 'erro';
 }

o tid você ja fica sabendo na primeira etapa ( "<requisicao-autenticacao"), aí todas as outras consultas você usa esse tid pra saber o status desse pedido especifico ;)

mais uma vez: tem que ler o manual... ele é ruim, mas precisa ser lido... repare que pra consulta eu usei "<requisicao-consulta"... cada evento tem uma xml especifico... basta você enviar e pegar a informaçao que você quer ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

wfelix , obrigado pelas dicas , mas quando ponho para testar eu nao consigo pegar o valor TID ,

utilizando como base o codigo do aprendendo_php

 

     //var_dump( $xml , $ern , $err );        
                
                $DadosEnvio= simplexml_load_string($xml);
                foreach( $DadosEnvio as $c => $v ) // recupera valores
                {
                        $c = str_replace( array("-"), array(""), $c); //para remover os - da variavel a ser criada      
                        $$c = $v;
                }
                 
                //exibe os dados e link para redirecionar (colocar um javascript top.window.location='$urlautenticacao'
                echo "<br>TID $tid"; // aqui eu nao recebo valor algum
                echo "<br>Data: $data"; // aqui sim , mostra a data e horas
                echo "<br>Autentica : $urlautenticacao"; // vazio tambem
                echo "<br>Redirecionar para preencher dados cartão <a href='$urlautenticacao'>$urlautenticacao</a>";            

Sei que devo estar sendo chato , mas é que estou lendo e re-lendo o manul , mas nao consigo fazer funcionar , até tentei criar um arquivo xml separado e dpois chama-lo , mas não funcionou.

 

Entao peço, Paciência :D

 

Obrigado..

Compartilhar este post


Link para o post
Compartilhar em outros sites

exemplo de autenticaçao com dados estaticos:

 
 $mensagem = '<?xml version="1.0" encoding="UTF-8"?>
 <requisicao-autenticacao id="1" versao="1.0.0" xmlns="http://ecommerce.cbmp.com.br">
        <dados-ec>
                <numero>xxxxxxxxxxxxxxx</numero>
                <chave>xxxxxxxxxxxxxxxxxxxxxx</chave>
                <nome>Loja Virtual</nome>
                <codigo-pais>097</codigo-pais>
        </dados-ec>
        <dados-pedido>
                <numero>124</numero>
                <valor>100</valor>
                <moeda>986</moeda>
                <data-hora>2010-07-17T14:38:56</data-hora>
        </dados-pedido>
        <forma-pagamento>
                <produto>1</produto>
                <parcelas>1</parcelas>
        </forma-pagamento>
        <url-retorno>http://www.XXXXXXXXXX.com.br/cielo/testeretorno.php?pedido=124</url-retorno>
        <autorizar>2</autorizar>
        <capturar>true</capturar>
 </requisicao-autenticacao>'
 ;
 
 
 
 /**
 * Iniciando CURL
 */
 $curl = curl_init();
 
 /**
 * Verificamos se o recurso CURL foi criado com êxito
 */
 if ( is_resource( $curl ) ){
        curl_setopt( $curl , CURLOPT_HEADER , 0 );
		curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt( $curl , CURLOPT_RETURNTRANSFER , 1 );
        curl_setopt( $curl , CURLOPT_FOLLOWLOCATION , 1 );
        curl_setopt( $curl , CURLOPT_URL , 'https://qasecommerce.cielo.com.br/servicos/ecommwsec.do' );
        curl_setopt( $curl , CURLOPT_POST , 1 );
        curl_setopt( $curl , CURLOPT_POSTFIELDS , http_build_query( array( 'mensagem' => $mensagem ) ) );
 
        $xml = curl_exec( $curl ); $ern = curl_errno( $curl ); $err = curl_error( $curl );
 
        curl_close( $curl );
 
        if ( (bool) $ern ){
                echo 'Opz, ocorreu um erro[' , $ern , ']: ' , $err;
        } else {
                //var_dump( $xml , $ern , $err );
				print_r($xml."<br><hr><br>");
				print_r($ern."<br><hr><br>");
				print_r($err."<br><hr><br>");
				$DadosEnvio= simplexml_load_string($xml);
                foreach( $DadosEnvio as $c => $v ) // recupera valores
                {
                        $c = str_replace( array("-"), array(""), $c); //para remover os - da variavel a ser criada      
                        $$c = $v;
                }
                 
                //exibe os dados e link para redirecionar (colocar um javascript top.window.location='$urlautenticacao'
                echo "<br>TID $tid";
                echo "<br>Data: $data";
                echo "<br>Autentica : $urlautenticacao";
                echo "<br>Redirecionar para preencher dados cartão <a href='$urlautenticacao'>$urlautenticacao</a>";     

        }
 } else {
        echo 'Opz, não foi possível criar o recurso da cURL';
 }

isso vai te retornar um tid

 

e esse tid que deve ser usado em consultas futuras... o TID é unico pra cada pedido "gerado" ;)

note que tudo isso ja estava meio que escrito a partir do post 13...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem,

mas me responde uma coisa como posso alterar os valores do dados do pedido se a mensagem for estática??

 

Também já li e re-li o manual, e concordo que é muito confuso!!! Também estou com problema de "retorno".

 

Não tem como fazer com simplexml?? semelhante a isso??

 

//cria cabeçalho da xml que iniciara a transação
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8" ?><requisicao-autenticacao></requisicao-autenticacao>');


//coloca em um nó filho nos dados da loja
$dadosEC = $xml->addChild('dados-ec');
$dadosEC->addChild('numero',$numEstabelecimento);
$dadosEC->addChild('chave',$numChave);
$dadosEC->addChild('nome',$nomeLoja);
$dadosEC->addChild('codigo-pais',"097"); 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro de tudo , o codigo do João Batista Neto é a base , tu tem que ligar para eles , e pedir a chave de teste , e colocar ali , e ai tu conseguirá o TID , agora so nao consigo recuperar esse TID.

 

Se nao fui claro , pergunta mais , Okz Abrçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro de tudo , o codigo do João Batista Neto é a base , tu tem que ligar para eles , e pedir a chave de teste , e colocar ali , e ai tu conseguirá o TID , agora so nao consigo recuperar esse TID.

 

Se nao fui claro , pergunta mais , Okz Abrçs

 

Olá galera, quando coloco o script no servidor do cliente da uma erro assim:

Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /home/...

 

Warning: simplexml_load_string() [function.simplexml-load-string]: namespace error : Namespace prefix http_handler on erro is not defined in /home/....

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Olá galera, quando coloco o script no servidor do cliente da uma erro assim:

Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /home/...

 

Warning: simplexml_load_string() [function.simplexml-load-string]: namespace error : Namespace prefix http_handler on erro is not defined in /home/....

 

Agtche - remove essa linha ai que foi o que eu fiz e deu certo...

meu negocio agora esta no retorno

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Ja consegui passar pela primeira etapa, no entanto nao consegui ainda passar pela etapa do retorno.. na realidade ja tentei de diversas formas ler o retorno que vem assim:

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<transacao id="1283725743177" versao="1.0.0" xmlns="http://ecommerce.cbmp.com.br">
<tid>100173489801E0731001</tid>
<pan>IqVz7P9zaIgTYdU41HaW/OB/d7Idwttqwb2vaTt8MT0=</pan>
<dados-pedido>
<numero>2045448517</numero>
<valor>10000</valor>
<moeda>986</moeda>
<data-hora>2010-09-05T19:28:29.131-03:00</data-hora>
<idioma>PT</idioma>
</dados-pedido>
<forma-pagamento>
<produto>1</produto>
<parcelas>1</parcelas>
</forma-pagamento>
<status>2</status>
<autenticacao>
<codigo>2</codigo>
<mensagem>Autenticada com sucesso</mensagem>
<data-hora>2010-09-05T19:29:00.088-03:00</data-hora>
<valor>10000</valor>
<eci>5</eci>
</autenticacao>
</transacao>

 

as informações ai de numero,pan e etc é tudo teste entao nao tem muito problema mostrar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, com o retorno em mãos, basta utilizar DOM para lê-lo:

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif DOM

 

Mais especificamente DOMDocument::getElementsByTagName()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, com o retorno em mãos, basta utilizar DOM para lê-lo:

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif DOM

 

Mais especificamente DOMDocument::getElementsByTagName()

 

João , será que você poderia dar um exemplo , pois é apenas pegar o valor do retorno que me falta.

 

Obrigado

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.