Ir para conteúdo

Arquivado

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

Carcleo

Implementação CIELO

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

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