cezaarr 0 Denunciar post Postado Agosto 2, 2010 ola galera, seguinte.. se conseguirem me ajudar ta beleza, senao paciencia ne, eu to tentando faze a integração com a cielo para o ecommerce q estamos desenvolvendo aqui na empresa, eles(cielo) me enviaram um manual, eu intendi poca coisa, e procurei algumas horas, posso ter procurado errado, mas n consegui achar muita coisa , vi algo sobre o SOAP mas intendi poco tbm, queria saber se alguem ja fez essa integraçao com a cielo, e se poderia me da uma ajuda, a integraçao e feita por xml, n sei se existe outra forma, mas a deles e por xml, ate perguntei se tinha diferença se eu usar SOAP ou outra,a resposta deles foi que nao há diferença alguma. Com base no que eu achei no php.net e alguns outros lugares eu tentei fazer o seguinte, so para conectar. $cliente = new SoapClient( 'http-~~-//ecommerce.cbmp.com.br', array( 'trace' => true, 'exceptions' => true ) ); mas me retornou um erro Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\eden\pedido\visa\visa.php on line 62 Se ficou mau explicado, me avizem que eu tento explica denovo, desde ja vlww. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Agosto 2, 2010 Primeiro de tudo, me diz uma coisa. Você compreendeu o que o erro quis dizer? Você entendeu a sua mensagem? Isso pode parecer coisa boba mas é muito importante. Compartilhar este post Link para o post Compartilhar em outros sites
cezaarr 0 Denunciar post Postado Agosto 2, 2010 pelo que entendi , é q atingiu o tempo maximo para faze a conexao Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Agosto 2, 2010 Então já verificou com Cielo sobre esse tempo para se fazer a conexão? Talvez o link no manual não exista mais, algo assim, não tem como eu advinhar daqui rs. Tem que ir fuçando para ver o que está acontecendo. Eu tentei acessar o endereço http://ecommerce.cbmp.com.br e não consegui. Está certo que é este mesmo o endereço correto? Compartilhar este post Link para o post Compartilhar em outros sites
cezaarr 0 Denunciar post Postado Agosto 2, 2010 Andre, entao... eu perguntei pro suporte da cielo, e eles me falaram q e este link mesmo, eu tbm achei estranho ,tentei acessar e deu a mesma coisa, antes mesmo de vir para o forum, tentei "pingar" tbm n obtive resposta, porem sem o http no ping ele foi ---> ping ecommerce.cbmp.com.br . Sem o http ele passa, mas eu fiz esses teste agora pouco, um pouco antes de postar aqui, e o atendimento deles e so ate as 20, mas as 18 ja e dificil fala com alguem, eu vou entrar em contato com eles amanha, e qualquer coisa eu posto aqui, mas vlw pela forca por enquanto. E o problema que pra eu ir fuçando e dificil, nunk surgiu a oportunidade de mecher com webservervice entao... eu to meio q no escuro :S Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Agosto 2, 2010 Tente tirar o HTTP da config do SOAP. Compartilhar este post Link para o post Compartilhar em outros sites
cezaarr 0 Denunciar post Postado Agosto 2, 2010 eu ja havia tentado isso tambem, so n posso colar o erro aqui agora, pq ja nao estou no servico, mas ele deu erro, n foi aquele do tempo limite, foi um outro erro, so n lembro ele de cabeca e to sem o script aqui Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Agosto 3, 2010 Ta ok, quando puder você posta ele pra gente ver. Compartilhar este post Link para o post Compartilhar em outros sites
cezaarr 0 Denunciar post Postado Agosto 3, 2010 ola, antes de entra em contato com o pessoal da cielo eu dei uma olhada bem no final do manual tem duas urls, uma de teste e uma para produção, falta de atenção da minha parte. esse e o link para teste q eles disponibilizam https://qasecommerce...os/ecommwsec.do de qualquer forma eu tentei <? $cliente = new SoapClient( 'https-~~-//qasecommerce.cielo.com.br/servicos/ecommwsec.do' ); ?> e retorno o seguinte Warning: SoapClient::SoapClient() [soapclient.soapclient]: I/O warning : failed to load external entity "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do" in C:\xampp\htdocs\eden\pedido\visa\visa.php on line 54 Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://qasecommerce.cielo.com.br/servicos/ecommwsec.do' : failed to load external entity "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do" in C:\xampp\htdocs\eden\pedido\visa\visa.php:54 Stack trace: #0 C:\xampp\htdocs\eden\pedido\visa\visa.php(54): SoapClient->SoapClient('https://qasecom...') #1 {main} thrown in C:\xampp\htdocs\eden\pedido\visa\visa.php on line 54 pelo erro ele diz q n conseguiu carrega, bom vou tentando aqui Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Agosto 3, 2010 Está no caminho errado, @cezaarr Esqueça SOAP, pegue o manual da Cielo novamente e releia-o, do início ao fim. Compartilhar este post Link para o post Compartilhar em outros sites
cezaarr 0 Denunciar post Postado Agosto 5, 2010 ola pessoal, desculpa n pude responder ontem, n tive muito tempo pra tenta resolve isso, fiz oque o amigo João Batista Neto disse, li o manual, e tentei fazer algo parecido com o exemplo oque estava no manual, utilizei a funcao "curl", mas como quase nunk utilizei, e meio dificil, vo cola aqui uma parte do script, se alguem puder ajuda vlw, parece q chega ate o webservice da cielo (pelomenos parece q sim) , mas n consigo pega retorno nenhum. segue o script $xml='<?xml version="1.0" encoding="UTF-8"?> <requisicao-autenticacao id="1" versao="1.0.0" xmlns="http-~~-//ecommerce.cbmp.com.br"> <dados-ec> <numero>xxxx</numero> <chave>xxxx</chave> <nome>eden</nome> <codigo-pais>097</codigo-pais> </dados-ec> <dados-pedido> <numero>'.$_GET['pedido'].'</numero> <valor>'.str_replace(array('.',','),array('',''),$_GET['valor']).'</valor> <moeda>986</moeda> <data-hora>'.date("Y-m-d").'T'.date("H:i:s").'</data-hora> </dados-pedido> <forma-pagamento> <produto>1</produto> <parcelas>1</parcelas> </forma-pagamento> <url-retorno>http-~~-//localhost/eden/pedido/retorno.php</url-retorno> <autorizar>2</autorizar> <capturar>false</capturar> </requisicao-autenticacao>'; $url = 'https-~~-//qasecommerce.cielo.com.br/servicos/ecommwsec.do'; $header = "POST /servicos/ecommwsec.do HTTP/1.1 \r\n"; $header .= "Content-Type: application/x-www-form-urlencoded \r\n"; $header .= "Host: ecommerce.cbmp.com.br \r\n"; $header .= "Content-length: ".strlen($xml)." \r\n"; $header .= $xml; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 4); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header); $data = curl_exec($ch); if(curl_errno($ch)){ print curl_error($ch); } else{ //curl_close($ch); echo "<pre>"; print_r(curl_getinfo($ch)); echo "</pre>"; } aqui no final eu fui procurando algo e achei esse curl_getinfo ele retorna isso Array ( [url] => [url="https://qasecommerce.cielo.com.br/servicos/ecommwsec.do"]https://qasecommerce...os/ecommwsec.do[/url] [content_type] => text/html; charset=iso-8859-1 [http_code] => 400 [header_size] => 166 [request_size] => 947 [filetime] => -1 [ssl_verify_result] => 20 [redirect_count] => 0 [total_time] => 0.205 [namelookup_time] => 0 [connect_time] => 0.04 [pretransfer_time] => 0.15 [size_upload] => 0 [size_download] => 356 [speed_download] => 1736 [speed_upload] => 0 [download_content_length] => 356 [upload_content_length] => 0 [starttransfer_time] => 0.205 [redirect_time] => 0 ) aguardo alguma ajuda, vlw Compartilhar este post Link para o post Compartilhar em outros sites
Flávio Rodrigues Maciel 1 Denunciar post Postado Agosto 6, 2010 Não examinei o código do Cezar, mas este novo sistema da Cielo, como ainda não foi lançado oficialmente, está sujeito a instabilidades e bugs que eles vêm corrigindo. Por isso, pode ser necessário um pouco de paciência mesmo. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Agosto 7, 2010 fiz oque o amigo João Batista Neto disse, li o manual, e tentei fazer algo parecido com o exemplo oque estava no manual, utilizei a funcao "curl" Agora você está no caminho correto. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif mas n consigo pega retorno nenhum. Primeiro @cezaarr, atente-se ao postar qualquer código no fórum, se este não contém informações sensíveis. Eu removi seu código de afiliação e sua chave de teste; Estamos em um fórum público e, postar informações sigilosas pode trazer sérios problemas para você, mesmo sendo dados para o ambiente de teste. Afinal, você está lidando com cartões de crédito e uma instituição financeira. <url-retorno>http-~~-//localhost/eden/pedido/retorno.php</url-retorno> Veja só, localhost é um endereço especial, só é possível acessá-lo a partir de sua própria máquina, a Cielo jamais será capaz de enviar, qualquer retorno, para o seu localhost. aqui no final eu fui procurando algo e achei esse curl_getinfo ele retorna isso [http_code] => 400 Sim, o código de status HTTP 400 significa Bad Request ou, Requisição inválida. <?php /** * Template do XML que será usado para criação da mensagem */ $autenticacao = <<<XML <?xml version="1.0" encoding="UTF-8"?> <requisicao-autenticacao id="1" versao="1.0.0" xmlns="http-~~-//ecommerce.cbmp.com.br"> <dados-ec> <numero>%d</numero> <chave>%s</chave> <nome>%s</nome> <codigo-pais>097</codigo-pais> </dados-ec> <dados-pedido> <numero>%d</numero> <valor>%s</valor> <moeda>986</moeda> <data-hora>%s</data-hora> </dados-pedido> <forma-pagamento> <produto>%s</produto> <parcelas>%d</parcelas> </forma-pagamento> <url-retorno>%s</url-retorno> <autorizar>2</autorizar> <capturar>false</capturar> </requisicao-autenticacao> XML; /** * Seu código de afiliação */ $afiliacao = 123456; /** * Sua chave */ $chave = 'chave'; /** * Nome da loja */ $loja = 'Sua Loja'; /** * Número do pedido */ $pedido = 123; /** * No ambiente de teste, o valor PRECISA NECESSARIAMENTE ter 2 zeros finais, * qualquer valor que não tenha os dois dígitos menos significativos (a direita) * como Zero farão com que a transação seja negada. */ $valor = 100; /** * Data no formato que eles esperam */ $data = strftime( '%Y-%m-%dT%H:%M:%S' ); /** * Código do produto: 1 (Crédito à Vista), 2 (Parcelado loja), 3 (Parcelado administradora), A (Débito). */ $produto = '1'; /** * Número de parcelas, se $produto for igual a 1 ou A, o número de parcelas DEVE ser 1 */ $parcelas = 1; /** * URL de retorno, a Cielo precisa conseguir acessar essa URL para enviar o retorno, então * não coloque LOCALHOST aqui. */ $retorno = sprintf( 'http-~~-//teste.sualoja.com.br/pedido/%d' , $pedido ); /** * Montando a mensagem com os dados acima. */ $mensagem = sprintf( $autenticacao , $afiliacao , $chave , $loja , $pedido , $valor , $data , $produto , $parcelas , $retorno ); /** * 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_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 ); } } else { echo 'Opz, não foi possível criar o recurso da cURL'; } Compartilhar este post Link para o post Compartilhar em outros sites
cezaarr 0 Denunciar post Postado Agosto 9, 2010 João Batista Neto, peço desculpas pelas informacoes sensiveis, foi o que voce comentou mesmo, por ser de teste eu nao me preocupei, mas obrigado por editar o post por min, amanha no primeiro horario, ja venho dizer se deu certo, e com relaçao ao "localhost" n pensei que poderia dar problema, pois a homolagaçao que eu fiz atravez da locaweb funcionou com localhost, mas por ser uma forma diferente eu nao pensei nisso valeu pelo avizo, e muito obrigado pela ajuda, vlw mesmo, amanha assim que der eu posto aqui se deu certo , mais uma vez , obrigado :D Compartilhar este post Link para o post Compartilhar em outros sites
aprendendo_php 0 Denunciar post Postado Agosto 9, 2010 Cara perfeito.. funcionou como uma luva mudei apenas onde tem o var_dump para pegar os dados para salvar e redirecionar para o preenchimento do cartão alguem sabe como pegar os dados que retorna para o site? ele volta para o $retorno mas não sei como volta, tentei colocar um foreach em $_POST, mas não vem nada, tem que recuperar algo baseado no tid?? ficou: //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"; echo "<br>Data: $data"; echo "<br>Autentica : $urlautenticacao"; echo "<br>Redirecionar para preencher dados cartão <a href='$urlautenticacao'>$urlautenticacao</a>"; ***complementando é bom pegar o status tambem e só redirecionar se estiver Ok acredito que neste caso seria o codigo 0(zero) Compartilhar este post Link para o post Compartilhar em outros sites
cezaarr 0 Denunciar post Postado Agosto 12, 2010 opa, entao João Batista Neto funcionou perfeito cara, modifiquei algumas coisas e deu tudo certo, vlw cara, so uma obs. quando fui para fazer o teste , retornou um errro de certificado, algo assim n lembro bem o erro, mas ai pelo que eu vi era por que o servidor que eu estava tentando nao tem ssl... quando acrescentei essa linha curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, 0); deu tudo certo, com essa linha parece que n precisa ter ssl e pega tudo normal, fica ai o avizo pra qm esta tentando. aprendendo_php sobre sua duvida, eu tive a mesma duvida e liguei no suporte, a pagina de retorno n vem nada mesmo eu fiz a mesma coisa que você, tentei um foreach em $_REQUEST, existe um xml q ele e usado para consultar, na verdade com os xml's de exemplo você consegue testar tudo mas a pagina de retorno segundo a propria cielo n retorna nada pra la :D, abrcss Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Agosto 13, 2010 retornou um errro de certificado, algo assim n lembro bem o erro, mas ai pelo que eu vi era por que o servidor que eu estava tentando nao tem ssl... quando acrescentei essa linha curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, 0); deu tudo certo, com essa linha parece que n precisa ter ssl e pega tudo normal, fica ai o avizo pra qm esta tentando. Alguns servidores não possuem o certificado raiz da CA da Cielo, por isso esse erro. http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Mas lembre-se, estamos lidando com cartões de crédito e instituição financeira, você não deve negar a verificação do certificado, em vez disso, caso seu servidor não possua o certificado raiz da CA da Cielo, peça ao administrador para adicioná-lo; É importante essa adição e a verificação pois, se algum dia, por algum motivo, houver uma intrusão e a comunicação for interceptada, o SSL irá quebrar e, com a verificação, você não correrá o risco de enviar informações altamente sigilosas à um possível intruso. Resumindo, em vez de negar a verificação do certificado, adicione-o à lista de certificados confiáveis do servidor. ;) Compartilhar este post Link para o post Compartilhar em outros sites
aprendendo_php 0 Denunciar post Postado Agosto 14, 2010 opa, entao João Batista Neto funcionou perfeito cara, modifiquei algumas coisas e deu tudo certo, vlw cara, so uma obs. quando fui para fazer o teste , retornou um errro de certificado, algo assim n lembro bem o erro, mas ai pelo que eu vi era por que o servidor que eu estava tentando nao tem ssl... quando acrescentei essa linha curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, 0); deu tudo certo, com essa linha parece que n precisa ter ssl e pega tudo normal, fica ai o avizo pra qm esta tentando. aprendendo_php sobre sua duvida, eu tive a mesma duvida e liguei no suporte, a pagina de retorno n vem nada mesmo eu fiz a mesma coisa que você, tentei um foreach em $_REQUEST, existe um xml q ele e usado para consultar, na verdade com os xml's de exemplo você consegue testar tudo mas a pagina de retorno segundo a propria cielo n retorna nada pra la :D, abrcss Olá O erro que o seu php nbão esta compilado com a opção curlssl , tem que pedir para o servidor adicionar ele na compilação.. aqui deu isto tambem e pesquisando vi que precisava dele, o certificado precisa o browser (veja no .doc fala sobre isto) Retorno - se voce enviar a solicitação ja com a opção de consulta o sistema deles faz tudo e depois voce precisa (usando a mesma forma que este) enviar o XML da consulta eu fiz assim, quando envio(este ai) salvo o TID do retorno na tabela do pedido que é o controle, no retorno coloco o pedido e e envio a consulta, ai pego o status se estiver como codigo==6 foi aprovada, se diferente mostro o erro (tem a lista no .doc tambem) uso o session para o codigo do cliente.. como o retorno coloco o ?pedido=NR logo no inicio do retorno php pego a session(id do cliente) pesquiso pelo NR passado, se o pédido não pertencer ao cliente que esta logado, sai e da uma mensagem, se for igual, ai sim pesquiso o tid monto o xml da condulta para ter a resposta Compartilhar este post Link para o post Compartilhar em outros sites
wfelix 0 Denunciar post Postado Agosto 18, 2010 Revivendo o tópico... Pus pra "funcionar", usei muito do que esta aqui nesse topico pra isso :D... Só que na pagina de retorno, estou com dificuldade de pegar esses dados... lendo o manual, não consegui sacar se vem por post, get ou outra coisa (deve ser outra coisa, porque post ou get nao é :D) A saber: <url-retorno>http://www.XXXXXXXXXX.com.br/cielo/testeretorno.php?pedido=$numpedido</url-retorno> cujo teste contem: <? print_r($_POST); print_r($_GET); ?> Só me retorna isso Array ( ) Array ( [pedido] => 123 ) Então, gostaria de saber como coletar os dados de retorno. Agradeço desde já Abraços Wagner Felix Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Agosto 18, 2010 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 /> ;) Compartilhar este post Link para o post Compartilhar em outros sites