Carcleo 4 Denunciar post Postado Outubro 3, 2011 Pessoal. Bom Dia! Peguei um site para fazer de um cliente que tem aquela maquininha da CIELO na loja dele. Agora, ele quer vender pelo site tambem. A loja virtual, com a ajuda de vocês, ja consegui fazer. Inclusive, para pagamento com boleto e deposito on line ja funciona. Agora preciso de implentar pagamento CIELO. Baixei um pacote nbo site da CIELO onde, a pagina principal, é o script abaixo: <?php require "../includes/include.php"; $Pedido = new Pedido(); // Lê dados do $_POST $Pedido->formaPagamentoBandeira = $_POST["codigoBandeira"]; $Pedido->formaPagamentoProduto = 3; // Administradora $Pedido->formaPagamentoParcelas = $_POST["formaPagamento"]; $Pedido->dadosEcNumero = CIELO; $Pedido->dadosEcChave = CIELO_CHAVE; $Pedido->capturar = false; $Pedido->autorizar = 1; $Total_Pedido = str_replace($_POST["TOTAL"], ",", ""); $Total_Pedido = str_replace($Total_Pedido, ".", ""); $Pedido->dadosPedidoNumero = $_POST["NUMPEDIDO"]; $Pedido->dadosPedidoValor = $Total_Pedido; $Pedido->urlRetorno = ReturnURL(); // ENVIA REQUISIÇÃO SITE CIELO $objResposta = $Pedido->RequisicaoTransacao(false); $Pedido->tid = $objResposta->tid; $Pedido->pan = $objResposta->pan; $Pedido->status = $objResposta->status; $urlAutenticacao = "url-autenticacao"; $Pedido->urlAutenticacao = $objResposta->$urlAutenticacao; // Serializa Pedido e guarda na SESSION $StrPedido = $Pedido->ToString(); $_SESSION["pedidos"]->append($StrPedido); echo '<script type="text/javascript"> window.location.href = "' . $Pedido->urlAutenticacao . '" </script>'; ?> Fiz as devidas configuraçoes, enviei para esta pagina via post, os dados necessários, mas esta me retornando esse erro: Ocorreu um erro em sua transação! Detalhes do erro: Código do erro: 001 Mensagem: O XML informado não é valido: - Invalid decimal value: expected at least one digit: '' - Invalid boolean value '': '' Mas não esta especificado que erro é esse. É esse mesmo procedimento? Não estaria faltando nada? Grato a quem puder ajudar. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 3, 2011 Agora o erro mudou para: Ocorreu um erro em sua transação! Detalhes do erro: Código do erro: 001 Mensagem: O XML informado não é valido: - Invalid decimal value: unexpected char '65': '' - Invalid boolean value '': '' Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Outubro 3, 2011 http://forum.imasters.com.br/topic/445377-classe-cielo/page__p__1759651__fromsearch__1#entry1759651 Dá uma olhada na classe do João Batista Neto Compartilhar este post Link para o post Compartilhar em outros sites
guhemama 0 Denunciar post Postado Outubro 3, 2011 Eu tenho toda uma implementação básica da Cielo pronta, mas ainda falta documentar para liberar à comunidade. Se posso lhe dar uma dica, não use a loja testes que eles enviam com a documentação, porque é gambiarra e não vai funcionar sempre. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Outubro 3, 2011 Eu usei o código do João Batista em vários projetos, em ambiente de teste .. e todos funcionaram normalmente Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 3, 2011 Desculpem a demora é que fiquei resolvendo problemas pessoais mas agora liberei. Mas, não estou sabendo como implentar. Não estou achando o arquvo que recebe os dados do pedido para envio. Tipo: valor, numero_pedido. Tambem não sei se baixei o pacote certo. Você podem me fornecer o link de download para eu conferir se é o que eu baixei? Grato. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Outubro 3, 2011 Cara, da uma olhada no link que te passei, pois nele tem os códigos que o João fez, ou vai no github e procura por cielo, e tem do imastersDev... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 3, 2011 beleza Achei, mas não estou consegundo implementar. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Outubro 3, 2011 Caraca, já que abusca do fórumparece estar com problemas, fui pesquisar via Google. Demorou bastante, mas achei o link. O João mostra como integrar (com exemplo) no post #7. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 3, 2011 Já tinha visto esse modelo. Inclusive é o que estou usando. Mas, não retorna nada (ou não estou sabendo). A página, depois de enviada, vem em branco. Não sai da pagina que estava. Tipo: página que contem as variaveis: cielo.php Após enviados os dados, a pagina fica toda em branco. e não sai da cielo.php para a pagina retorno_catao.php que é que configurei como página de retorno. O que faço? Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 4, 2011 Todo xml que eu coloco da pagina em branco. E, quando vou ver o que tem em Exibir-> codigo fonte, dá isso: string(194) "<?xml version="1.0" encoding="ISO-8859-1"?> <erro xmlns="http://ecommerce.cbmp.com.br"><codigo>001</codigo><mensagem>XML inválido: 'error: XML declaration is not well-formed'.</mensagem></erro> " int(0) string(0) "" Seguindo no manual da Cielo. Cheguei nesse xml: <?php /** * Template do XML que será usado para criação da mensagem */ $autenticacao =' <?xml version="1.0" encoding="ISO-8859-1"?> <requisicao-transacao id="1" versao="1.0.0" xmlns="http://ecommerce.cbmp.com.br"> <dados-ec> <numero>1001734898</numero> <chave>e84827130b9837473681c2787007da5914d6359947015a5cdb2b8843db0fa832</chave> <nome>eden</nome> <codigo-pais>097</codigo-pais> </dados-ec> <dados-portador> <numero>285813768<</numero> <validade>201212</validade> <indicador>1</indicador> <codigo-seguranca>1</codigo-seguranca> <nome-portador>José Elias</nome-portador> </dados-portador> <dados-pedido> <numero>23</numero> <valor>100</valor> <moeda>986</moeda> <data-hora>'.date("Y-m-d").'T'.date("H:i:s").'</data-hora> <descricao></descricao> <idioma>PT</idioma> </dados-pedido> <forma-pagamento> <bandeira>1</bandeira> <produto>1</produto> <parcelas>1</parcelas> </forma-pagamento> <url-retorno>http://localhost/php/silvinhoeletronica.com.br/retorno_cartao.php</url-retorno> <autorizar>2</autorizar> <capturar>false</capturar> <campo-livre></campo-livre> <bin>813768</bin> </requisicao-transacao> '; $afiliacao = 123456; $chave = 'chave'; $loja = 'Sua Loja'; $pedido = 123; $valor = 100; $data = strftime( '%Y-%m-%dT%H:%M:%S' ); $produto = '1'; $parcelas = 1; $retorno = sprintf( 'http://teste.sualoja.com.br/pedido/%d' , $pedido ); $mensagem = sprintf( $autenticacao , $afiliacao , $chave , $loja , $pedido , $valor , $data , $produto , $parcelas , $retorno ); $curl = curl_init(); if ( is_resource( $curl ) ){ curl_setopt($curl, CURLOPT_CAINFO, getcwd() . "/ssl/VeriSignClass3PublicPrimaryCertificationAuthority-G5.crt"); curl_setopt($curl, CURLOPT_SSLVERSION, 3); 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
gremio10 14 Denunciar post Postado Outubro 4, 2011 Mostre o teu código implementado pelo João ... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 4, 2011 Dados de Cartão retirados do manual: <?php require_once 'dso/cielo/CreditCard.php'; require_once 'dso/cielo/Cielo.php'; require_once 'dso/cielo/CieloMode.php'; require_once 'dso/cielo/PaymentProduct.php'; date_default_timezone_set( 'America/Sao_Paulo' ); /** * Cria o objeto de integração com a Cielo usando o ambiente de desenvolvimento * @var Cielo */ $cielo = new Cielo( CieloMode::DEPLOYMENT ); /** * Define o código de afiliação. * O código abaixo é usado no ambiente de testes para poder recuperar * os dados do cartão do cliente dentro da loja */ $cielo->setAffiliationCode( '1006993069' ); /** * Define a chave de afiliação. * A chave abaixo é usada no ambiente de testes para poder recuperar * os dados do cartão do cliente dentro da loja */ $cielo->setAffiliationKey( ' 25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3' ); /** * O primeiro passo é requerir um TID para a autorização direto na loja * Esse passo é necessário para garantir que uma transação não seja autorizada * mais de uma vez, caso um timeout de conexão ou algum problema de rede ocorra * @var string */ $tid = $cielo->buildTIDRequest( CreditCard::VISA , PaymentProduct::ONE_TIME_PAYMENT )->call()->getTID(); /** * Número do cartão do cliente * @var string */ $cardNumber = '4551870000000183'; //$_POST[ 'cardNumber' ] /** * Data de expiração do cartão no formato yyyymm * @var string */ $cardExpiration = '201201'; //$_POST[ 'cardExpiration' ]; /** * Indicador do código de segurança * @var integer */ $indicator = 1; /** * Três dígitos do código de segurança que ficam no verso do cartão * @var integer */ $securityCode = 123; /** * Número do pedido * @var string */ $orderNumber = '1234'; /** * Valor do pedido, esse valor deve ser um inteiro onde os últimos * dois dígitos são os centavos, no caso o valor 10000 corresponde * ao valor de R$ 100,00 * @var integer */ $orderValue = 10000; /** * Tipo do pagamento, a vista, débito, parcelado pela loja ou pelo banco, * @var integer */ $paymentProduct = PaymentProduct::ONE_TIME_PAYMENT; /** * Número de parcelas que a compra será dividida * @var integer */ $parcels = 1; /** * Cria a transação com autorização dentro da loja, fazendo captura automática * @var Transaction */ $transaction = $cielo ->automaticCapture() ->buildAuthorizationRequest( $tid , CreditCard::VISA , $cardNumber , $cardExpiration , $indicator , $securityCode , $orderNumber , $orderValue , $paymentProduct ) ->call(); /** * Dados da autorização * @var AuthorizationNode */ $authorization = $transaction->getAuthorization(); var_dump( $transaction->getPan() ); var_dump( $transaction->getStatus() ); var_dump( $transaction->getTID() ); var_dump( $authorization->getArp() ); var_dump( $authorization->getCode() ); var_dump( $authorization->getDateTime() ); var_dump( $authorization->getLR() ); var_dump( $authorization->getMessage() ); var_dump( $authorization->getValue() ); ?> 2 detalhes: 1) Esse script só atende mastercar e visa? E os outro cartões cobertos pela Cielo? Tem como adiciona-las? Como? <?php /** * @author João Batista Neto * @brief Classes relacionadas ao webservice da Cielo * @package dso.cielo */ /** * Bandeira do cartão * @ingroup Cielo * @interface CreditCard */ interface CreditCard { /** * Cartão Visa */ const VISA = 'visa'; /** * Cartão MarterCard */ const MASTER_CARD = 'mastercard'; } 2)Como implementar para, num primeiro arquivo (tela), ainda não enviar o numero do cartão? Ou seja, que o numero do cartao seja digitado pelo cliente no site da cielo. Vale lembrar que estou trabalhando com comercio eletrõnico. Não é venda na loja física tá? Outra coisa: Parece que é autorizada a venda com aqueles parametros mas, e o retorno? E as proximas tela? Parece que para nessa primeira tela. Estou perdido! Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 4, 2011 Bom, vamos tentar de outra forma: Utilizando novamente o modelo do manual, Agora só resta um erro para corrigir mas não acho ele. Ocorreu um erro em sua transação! Detalhes do erro: Código do erro: 001 Mensagem: O XML informado não é valido: - Invalid boolean value '': '' Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Outubro 4, 2011 Galera .. leiam a documentação da Cielo, e vocês vão saber usar o código normalmente .. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 4, 2011 Fala Andrei. Consegui com a documentaçao da Cielo mesmo. Mas, mesmo que eu envie por xml os dados do cartão, esta sendo direcionado para a pagina de entrada dos dados do cartão na cielo. Como arruma isso? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Outubro 4, 2011 Estranho cara .. utilizando o código do João Batista, isso não aconteceu comigo não. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 4, 2011 Talves possa ser que eu tenha entedido ainda. O que são? tipoParcelamento -> loja (aqui é loja física? Significa que o parcelamento vai ser bancado pela loja?) capturarAutomaticamente -> O que é? indicadorAutorizacao -> você pode detalhar? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Outubro 4, 2011 Parcelado lojista: o estabelecimento recebe os valores de acordo com o número de parcelas da venda, descontada a taxa de administração. Nessa modalidade, é cobrado entre 1% e 1,5% a mais do valor das vendas, sobre a taxa das vendas crédito à vista. A primeira parcela é recebida em 31 dias, e as parcelas subsequentes a cada 31 dias. Parcelado emissor: o lojista recebe o valor da venda em um único pagamento, dentro de um prazo de 31 dias e descontada a taxa administrativa, e o banco emissor do cartão cobra o valor do cliente parceladamente, acrescido de juros. Captura Automática o próprio nome já diz o que é . Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Outubro 4, 2011 Uma coisa que olhei e vi de cara: $cielo->setAffiliationKey( ' 25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3' ); tem um espaço na string $cielo->setAffiliationKey( '25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3' ); ve se não é isso :lol: Compartilhar este post Link para o post Compartilhar em outros sites