tritoq / cielo
Classe para integração com o Webservice da Cielo e a ferramenta de Análise de Risco
This package's canonical repository appears to be gone and the package has been frozen as a result.
Installs: 16 138
Dependents: 0
Suggesters: 0
Security: 0
Stars: 19
Watchers: 7
Forks: 20
Open Issues: 2
Requires
- php: >=5.3
Requires (Dev)
- phpunit/phpunit: ~5.0
This package is not auto-updated.
Last update: 2024-01-20 11:54:28 UTC
README
Esta é um conjunto de classes, baseado na Library do Thiago Paes - Mrprompt para integração com o web service da Cielo.
Cartões Suportados:
- American Express
- Aura
- Diners
- Discover
- Elo
- JCB
- Master Card
- Visa
Há suporte a integração com a Análise de Risco e AVS
Para que as funcionalidades de análise de risco funcionem, o serviço precisa estar ativo junto a Cielo.
Instalação
Via Composer
composer.json
{ "require" : { "tritoq/cielo": "dev-master" } }
php composer.phar update
Uso
Setup
Exemplo de configuração de informações
use Tritoq\Payment\Cielo\AnaliseRisco; use Tritoq\Payment\Cielo\Cartao; use Tritoq\Payment\Cielo\CieloService; use Tritoq\Payment\Cielo\Loja; use Tritoq\Payment\Cielo\Pedido; use Tritoq\Payment\Cielo\Portador; use Tritoq\Payment\Cielo\Transacao; use Tritoq\Payment\Cielo\AnaliseRisco\Modelo\ClienteAnaliseRiscoTest; use Tritoq\Payment\Cielo\AnaliseRisco\PedidoAnaliseRisco; $portador = new Portador(); $portador ->setBairro('Meu Bairro') ->setCep('89900000') ->setComplemento('Sala 123') ->setEndereco('Rua Fulano de Tal'); $loja = new Loja(); $loja ->setNomeLoja('Nome da Loja') ->setAmbiente(Loja::AMBIENTE_TESTE) ->setUrlRetorno('http://google.com.br') ->setChave(Loja::LOJA_CHAVE_AMBIENTE_TESTE) ->setNumeroLoja(Loja::LOJA_NUMERO_AMBIENTE_TESTE); //->setSslCertificado("caminhodocertificado"); $cartao = new Cartao(); $cartao ->setNumero(Cartao::TESTE_CARTAO_NUMERO) ->setCodigoSegurancaCartao(Cartao::TESTE_CARTAO_CODIGO_SEGURANCA) ->setBandeira(Cartao::BANDEIRA_VISA) ->setNomePortador('Portador 1') ->setValidade(Cartao::TESTE_CARTAO_VALIDADE); $transacao = new Transacao(); $transacao ->setAutorizar(Transacao::AUTORIZAR_SEM_AUTENTICACAO) ->setCapturar(Transacao::CAPTURA_NAO) ->setParcelas(1) ->setProduto(Transacao::PRODUTO_CREDITO_AVISTA); $pedido = new Pedido(); $pedido ->setDataHora(new \DateTime('2014-02-02 23:32:12')) ->setDescricao('Descrição do Pedido') ->setIdioma(Pedido::IDIOMA_PORTUGUES) ->setNumero(9024) ->setValor(1200); $pedidoAnalise = new PedidoAnaliseRisco(); $pedidoAnalise ->setEstado('SC') ->setCep('89802140') ->setCidade('Chapeco') ->setComplemento('Sala 1008') ->setEndereco('Rua Marechal Deodoro, 400') ->setId('123345') ->setPais('BR') ->setPrecoTotal(400.00) ->setPrecoUnitario(390.00); /// Esta é uma classe criada de exemplo, implementando a interface Tritoq\Payment\Cielo\AnaliseRisco\ClienteAnaliseRiscoInterface $cliente = new ClienteAnaliseRiscoTest(); $cliente->nome = 'Artur'; $cliente->sobrenome = 'Magahalhaes'; $cliente->endereco = 'Rua Marechal Deodoro, 400'; $cliente->complemento = 'Sala 1008'; $cliente->cep = '89802140'; $cliente->documento = '123456789123'; $cliente->email = 'artur@tritoq.com'; $cliente->estado = 'SC'; $cliente->cidade = 'Chapeco'; $cliente->id = '9024'; $cliente->ip = '192.168.1.254'; $cliente->pais = 'BR'; $cliente->senha = '12345'; $cliente->telefone = '49912341234'; /* * * Usando a Análise de Risco * */ // Para qualquer ação será revista com ação manual posterior, caso seja de baixo risco, a transação será capturada automaticamente $analise = new AnaliseRisco(); $analise ->setCliente($cliente) ->setPedido($pedidoAnalise) ->setAfsServiceRun(true) ->setAltoRisco(AnaliseRisco::ACAO_MANUAL_POSTERIOR) ->setMedioRisco(AnaliseRisco::ACAO_MANUAL_POSTERIOR) ->setBaixoRisco(AnaliseRisco::ACAO_CAPTURAR) ->setErroDados(AnaliseRisco::ACAO_MANUAL_POSTERIOR) ->setErroIndisponibilidade(AnaliseRisco::ACAO_MANUAL_POSTERIOR) ->setDeviceFingerPrintID(md5('valor')); $service = new CieloService(array( 'portador' => $portador, 'loja' => $loja, 'cartao' => $cartao, 'transacao' => $transacao, 'pedido' => $pedido, 'analise' => $analise )); // Setando o tipo de versão de conexão SSL $service->setSslVersion(3); // Desabilitando a analise de risco $service->setHabilitarAnaliseRisco(false);
Opção de Análise de Risco
Caso opte por não utilizar o serviço de análise de risco é só remover o $cliente
, $analise
, $pedidoAnalise
E o serviço ficará assim
$service = new CieloService(array( 'portador' => $portador, 'loja' => $loja, 'cartao' => $cartao, 'transacao' => $transacao, 'pedido' => $pedido ));
Transação
Após realizada as configurações acima para realizar uma transação
... // Caso queira enviar o AVS - Verifição de Endereço / Ver manual para maiores informações $service->doTransacao(false, true); // Sem AVS $service->doTransacao(false, false); if($transacao->getStatus() == Transacao::STATUS_AUTORIZADA) { echo 'Transação Autorizada!'; } else { echo 'Transação Não Autorizada, contate seu banco!'; }
Transação com Análise de Risco
Enviando a transação com análise de risco
$service->setHabilitarAnaliseRisco(true); $service->doTransacao(false,false); if($transacao->getStatus() == Transacao::STATUS_AUTORIZADA) { echo 'Transação Autorizada!'; } else { echo 'Transação Não Autorizada, contate seu banco!'; }
Captura da Transação
A captura da transação é a efetivação da transação, é nela que você confirma a Cielo que é para proceder com a Transação e a loja poder receber o valor.
Preferencialmente deixamos a captura para fazer posteriormente, devido as fraudes, é interessante que a Loja faça a verificação da transação antes de captura-la.
$transacao->setTid('numero_da_transação_já_realizada'); $service->doCaptura(); if($transacao->getStatus() == Transacao::STATUS_CAPTURADA) { echo 'Transação capturada com sucesso!'; } else { echo 'Não foi possível capturar, status da transação: ' . $transacao->getStatus(); }
Consulta da Transação
A consulta da transação é um procedimento muito importante, pois é nela que a loja tira uma fotografia da transação.
... $transacao->setTid('numero_da_transacao'); $service->doConsulta(); // Pegando a requisição e XML $requisicoes = $transacao->getRequisicoes(Transacao::REQUISICAO_TIPO_CONSULTA); echo 'Status: ' . $transacao->getStatus() . '<br/>'; if(isset($requisicoes[0])) { echo 'XML:' . $requisicoes->getXmlRetorno()->asXML(); }
Consulta Direta
... // Realizando a transação e a consulta $service ->doTransacao(false,true) ->doConsulta(); // Pegando a requisição e XML $requisicoes = $transacao->getRequisicoes(Transacao::REQUISICAO_TIPO_CONSULTA); echo 'Status: ' . $transacao->getStatus() . '<br/>'; if(isset($requisicoes[0])) { echo 'XML:' . $requisicoes[0]->getXmlRetorno()->asXML(); }
Cancelamento
Cancelamento da transação
... $transacao->setTid('numero_da_transacao'); $service->doCancela(); if($transacao->getStatus() == Transacao::STATUS_CANCELADO) { echo 'Transação Cancelada com Sucesso'; } else { echo 'Erro no cancelamento, status: ' . $transacao->getStatus(); }
Verificação do Resultado da Análise
Você pode verificar os resultados da análise de Resultado
... // Faz a consulta $transacao->setTid('numero_da_transacao'); $service->doConsulta(); if($transacao->getAnaliseResultado() || isset($transacao->getStatusAnalise())) { $resultado = $transacao->getAnaliseResultado(); $status = $resultado->getStatus(); switch($status) { case AnaliseResultado::ALTO_RISCO: ... break case AnaliseResultado::BAIXO_RISCO: ... break; case AnaliseResultado::MEDIO_RISCO: ... break; default: echo 'Não foi possível obter o status da análise'; break; } // Listar os detalhes da análise foreach($resultado->getDetalhes() as $detalhe) { echo $detalhe; } }
Informações Gerais
Dentro da pasta Tests há resultados de XML e retornos feitos no PHPUnit.
Qualquer dúvida sobre a integração pode entrar em contato através do meu e-mail nezkal@gmail.com.