Ir para conteúdo

Arquivado

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

cezaarr

[Resolvido] webservice cielo

Recommended Posts

Ressuscitando o tópico.

 

Também estou quase concluindo a implementação. Estou na parte onde informo os dados do cartão de crédito no ambiente cielo, e a cielo retorna para a url-retorno o status da transação. Até aí está tudo funcionando perfeitamente. Porém, não sei como recuperar o xml enviado como retorno pela cielo no na minha URL de retorno. A cielo envia um XML para o meu endereço de retorno, mas dentro do meu arquivo php que vai capturar os dados, não sei o que fazer. Devo criar um servidor SOAP e esperar o retorno? Qual o nome da função que devo criar para recuperar o xml? Talvez a solução esteja na minha cara, mas não tô conseguindo enxergar. Help please!

 

Valeu

Fábio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vai lhe retornar nada, entenda...

Apenas redireciona para o endereço que você solicitou...

Você executa um consulta para a transação que você iniciou e recupera o que resultou, ok

 

 

Veja

1 - solicitou uma transação

2 - Sendo aceita a transação eles lhe retorna uma url para iniciar a transação.

3 - ai é com eles, no final eles retornam para o url que você indicou na solicitação da transação.

4 - ai volta lá e pega o que resultou da transação(requisicao-consuta, cancelar, etc...).

5 - como fazer acho que tu sabes?

 

 

 

at+

 

 

 

 

Ressuscitando o tópico.

 

Também estou quase concluindo a implementação. Estou na parte onde informo os dados do cartão de crédito no ambiente cielo, e a cielo retorna para a url-retorno o status da transação. Até aí está tudo funcionando perfeitamente. Porém, não sei como recuperar o xml enviado como retorno pela cielo no na minha URL de retorno. A cielo envia um XML para o meu endereço de retorno, mas dentro do meu arquivo php que vai capturar os dados, não sei o que fazer. Devo criar um servidor SOAP e esperar o retorno? Qual o nome da função que devo criar para recuperar o xml? Talvez a solução esteja na minha cara, mas não tô conseguindo enxergar. Help please!

 

Valeu

Fábio

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá

 

Então, atualmente está assim:

 

1) Envio o xml com o produto e os dados da loja para o webservice

2) O webservice me retorna uma URL para autenticação

3) Redireciono o browser para esta URL e então surge a tela da cielo para informar os dados do cartão de crédito

4) Quando os dados do cartão são enviados e validados, a cielo vai redirecionar o browser para aquela url-retorno que informei.

 

Na minha concepção, no passo 4, na url-retorno é que eu devo recuperar o status da transação, para informar ao cliente se a compra foi efetuada com sucesso ou se deu algum erro. Não seria este o fluxo? A dúvida minha é como recuperar estas informações do status na url-retorno que indiquei. Por favor, me corrija se eu estiver errado.

 

Valeu pela resposta.

 

Fábio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim , você guarda o TID no banco para que futuramente possa fazer as consultas, cancelamentos e etc...

 

Quando você for re-direcionado para sua pagina de retorno , nela , você deverá fazer uma requisição consulta , a mesma que você faz na primeira pagina , que é a <requisição-transacao>(1.5.5) ou <requisicao-autenticacao>(1.5.0)

você fará na pagina de retorno , apensa utilizando a <requisicao-consulta>.

 

Nisso , ele te retornará um xml dando todos os dados que você precisará para informar ao usuario a situação da compra.

 

Felipe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom... eu consegui fazer tudinho, criaçao, autenticaçao, consulta, captura, etc...

 

só que, pelo menos no ambiente de testes, a opçao de cancelamento nao esta rolando pra mim:

 

function cancela_cielo($tid){
	global $numerocielo, $chavecielo;
	$mensagem = '<?xml version="1.0" encoding="UTF-8"?>
<requisicao-cancelamento id="4" versao="1.0.0" xmlns="http://ecommerce.cbmp.com.br">
	<tid>'.$tid.'</tid>
	<dados-ec>
				 <numero>'.$numerocielo.'</numero>
				<chave>'.$chavecielo.'</chave>
	</dados-ec>
</requisicao-cancelamento>';
//echo $mensagem;
		$curl = curl_init();

	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 {
			echo "Transação cancelada";
			/*$DadosEnvio= simplexml_load_string($xml);
			echo "<pre>".$DadosEnvio."</pre>";*/
		} 
	
	}
}

o que eu estou fazendo de errado? após o envio disso, a consulta continua retornando status 6(capturada), e não 9(cancelada), como esperado... E nao ha retorno algum no $xml... nem retorno de erro, nem de sucesso, simplesmente vazio :(

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

daonde vem os valores para as variaveis

global $numerocielo, $chavecielo;
?

 

Felipe

 

de onde vem é indiferente, pode confiar que as variaveis existem e, no caso, com escopo global :D

 

No meu caso eles estao definidos no arquivo de configuraçao(por isso global) chamado onde a funçao é executada.

 

O que intriga é que todos os outros tipos de requisiçao, como falei, funcionam, ex:a funçao é quase a mesma da consulta, que funciona:

 


function status_cielo($tid){
	global $numerocielo, $chavecielo;
	
	$mensagem = '<?xml version="1.0" encoding="UTF-8"?>
	<requisicao-consulta id="5" versao="1.0.0" xmlns="http://ecommerce.cbmp.com.br">
	<tid>'.$tid.'</tid>
	<dados-ec>
				 <numero>'.$numerocielo.'</numero>
				<chave>'.$chavecielo.'</chave>
		   
		</dados-ec>
		
		
	</requisicao-consulta>'
	;
	
	$curl = curl_init();

	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 {
	
				$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;
						
				}
				
				
				foreach( $dadospedido as $c => $v ) // recupera valores
				{
						$c = str_replace( array("-"), array(""), $c); //para remover os - da variavel a ser criada  
						$$c = $v;
						
				}
				
				$valorpedido=$valor;//pega o valor do pedido inicial
				$numeropedido=$numero; //pra comparar o numero do pedido
				
				foreach( $formapagamento as $c => $v ) // recupera valores
				{
						$c = str_replace( array("-"), array(""), $c); //para remover os - da variavel a ser criada      
						$$c = $v;
						
				}
				//echo $status."DDDDDDDDDDD";
				if($status!=9 and $status>=3){
					foreach( $autenticacao as $c => $v ) // recupera valores
					{
							$c = str_replace( array("-"), array(""), $c); //para remover os - da variavel a ser criada      
							$$c = $v;
							
					}
					$valorautenticado=$valor;
					$mensagemautenticado=$mensagem;
					
					foreach( $autorizacao as $c => $v ) // recupera valores
					{
							$c = str_replace( array("-"), array(""), $c); //para remover os - da variavel a ser criada     
							$$c = $v;
							
					}
					$valorautorizado=$valor;
					$mensagemautorizado=$mensagem;
					$dataautorizado=$datahora;
				}
				if($status>=6 and $status!=9){
					foreach( $captura as $c => $v ) // recupera valores
					{
							$c = str_replace( array("-"), array(""), $c); //para remover os - da variavel a ser criada     
							$$c = $v;
							
					}
					$valorcapturado=$valor;
					$mensagemcapturado=$mensagem;
					$datacapturado=$datahora;
				}
				$a=array('statuscielo','valorpedido','numeropedido','valorautenticado','mensagemautenticado','valorautorizado','mensagemautorizado','dataautorizado','valorcapturado','mensagemcapturado','datacapturado','produto', 'parcelas');
				$b=array($status     , $valorpedido, $numeropedido, $valorautenticado, $mensagemautenticado, $valorautorizado, $mensagemautorizado, $dataautorizado, $valorcapturado, $mensagemcapturado, $datacapturado, $produto, $parcelas);
				$retorno = array_combine($a, $B);
				return($retorno);
		}
	} else {
		echo 'Opz, não foi possível criar o recurso da cURL';
	}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cancelamente é exatamente igual ao de consulta , basta apenas mudar ali ao inves de requisicao-consulta é requisicao-cancelamento

 

mas que versão do webservice você tah trabalhando ?

 

Felipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Humm, agora entendi

 

Vou fazer os testes aqui.

 

Uma última dúvida. A cielo não fornece uma área de administração no site deles para que a loja-virtual possa fazer o gerenciamento das compras? Como capturar, cancelar, listar, procurar, etc? Eu terei que criar esta área para a loja-virtual posso gerenciar as transações?

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz outra simulaçao de compra

e logo depois da compra fiz um cancelamento e rolou

 

deve ter algo a ver com um tid velho nao poder ser cancelado, mas o que me intrega é que nesse caso nao veio retorno nenhum, nem de erro, devia vir algum retorno, simplesmente nao cancelou a "compra" mais velha...

 

é a versao 1.5 multiplataforma (essa que discutimos aqui), a outra com dlls vai acabar caindo em desuso :P

 

Humm, agora entendi

 

Vou fazer os testes aqui.

 

Uma última dúvida. A cielo não fornece uma área de administração no site deles para que a loja-virtual possa fazer o gerenciamento das compras? Como capturar, cancelar, listar, procurar, etc? Eu terei que criar esta área para a loja-virtual posso gerenciar as transações?

Valeu.

 

Sim... você faz uma requisicao-consulta e exibe no admin da loja que você criou o resultado, com a opçao de canselamento e captura (caso você nao faça a captura automatica)

 

 

e, do lado do cliente da loja, na visualizaçao dos pedidos dele, caso ele tenha sido recusado ou cancelado (status 3, 5 ou 9), dar a opçao de efetuar o pagamento novamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade minha dúvida é em relação ao dono da loja virtual. Ele não tem uma área no site da cielo onde pode gerenciar as transações? Capturar, Cancelar. Eu tenho que fazer uma área de administração para ele fazer isto? Apesar que se for fazer a área, vai ter só a opção de Cancelar, pois estou usando captura automática.

 

Consegui finalizar os testes. Como tela de status para o cliente, usei o seguinte código adaptado do código do wfelix. Se for de interesse pra alguém:

$tid = 'xxx111';
$numerocielo = xxx111;
$chavecielo = 'xxx111';
        
        $mensagem = '<?xml version="1.0" encoding="UTF-8"?>
        <requisicao-consulta id="5" versao="1.0.0" xmlns="http://ecommerce.cbmp.com.br">
        <tid>'.$tid.'</tid>
        <dados-ec>
                                 <numero>'.$numerocielo.'</numero>
                                <chave>'.$chavecielo.'</chave>
                   
                </dados-ec>
                
                
        </requisicao-consulta>'
        ;
        
        $curl = curl_init();

        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 {
        
                                $DadosEnvio= simplexml_load_string($xml);
								echo ($DadosEnvio->asXML())."<hr>";

								$retorno = "<p><b>Dados do Pedido:</b><br />";
								$retorno .=   "Tid: ".$DadosEnvio->tid."<br />";  
								$retorno .=   "Número: ".$DadosEnvio->{'dados-pedido'}->numero."<br />";
								$retorno .=   "Valor: ".$DadosEnvio->{'dados-pedido'}->valor."<br />";
								$retorno .=   "Data/hora: ".$DadosEnvio->{'dados-pedido'}->{'data-hora'}."<br />"; 
								$retorno .=  "</p>";
								$retorno .=  "<p><b>Forma de Pagamento</b><br />";
								$retorno .=  "Parcelado Loja<br />";
								$retorno .=  "Parcelas: ".$DadosEnvio->{'forma-pagamento'}->parcelas."<br />";
								$retorno .=  "</p>";
								$retorno .=  "<p><b>Status da Transação: </b><br />";
//								$retorno .=  $DadosEnvio->autenticacao->mensagem."<br />";
								$retorno .=  utf8_decode($DadosEnvio->autorizacao->mensagem)."<br />";																
								$retorno .=  $DadosEnvio->autenticacao->valor."<br />";																
//								$retorno .=  $DadosEnvio->captura->mensagem."<br />";																								
								$retorno .=  $DadosEnvio->cancelamento->mensagem."<br />";
								$retorno .=  $DadosEnvio->cancelamento->{'data-hora'}."<br />";  
								$retorno .=  $DadosEnvio->cancelamento->valor."<br />";
								$retorno .=  "</p>";
								
                                echo $retorno;
						}

}

Está funcionando, porém ainda não está integrado. Como podem ver, estou usando hardcode. As informações de retorno peguei direto do objeto xml DadosEnvio.

 

Abraços

 

Fábio

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao rezko, nao tem... como no Pagseguro, Paypal... não tem...

 

você tem que fazer isso no admin da sua loja mesmo(particularmente, pro usuario final, essa forma centralizada na propria loja é até melhor, só da mais trabalhop pro desenvolvedor - nós), usando o requisicao-consulta pra exibir o andamento de cada pedido e oferecer pro administrador a opçao de cancelamento... só isso

 

e como eu disse, na parte do cliente, caso ele ainda nao tenha pago ou esteja num daqueles status que falei, você tb exibe a opçao... imagens da loja que estou quase acabando, veja:

 

Imagem Postada

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok então, vou ter que fazer a telinha.

 

Meu maior problema é que a loja virtual do meu cliente é magento, e um módulo magento pra visa custa 700 reais. Daí resolvi fazer tudo no braço. Vou ter que fazer umas mudanças no magento mas não vou conseguir utilizar o sistema dele de checkout. O que estou fazendo é criando uma outra área dentro do site e quando o usuário clicar no botão Finalizar Compra, vou enviar um post dos dados para esta página nova, em vez de o post voltar para o magento. Bom, vamos ver no que dá.

 

Valeu

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pessoal me desculpe por esta sendo coveiro!! rsr vou ressuscitar o tópico

 

Cara eu já procurei em vários foruns por informações sobre integração do webservice da cielo e esse é o único forum que aborda o assunto de integração com boa explicação... Antes de tudo parabens ao forum!!!

 

Vamos ao meu problema: Eu adaptei um modulo de pagamento para a webservice da Cielo e ele funciona numa boa, até antes dele logar no gateway da cielo quando faz o "Carregamento de pagina de pagamento seguro SSL"(onde é fornecido os dados do cartão do cliente, pois a leitura do cartão que eu uso é na propria cielo) reporta um erro de certificado "Opz, ocorreu um erro[60]: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CER TIFICATE:certif icate verify failed "

Lembrando eu estou em ambiente de teste!!

uso chave e o nº de filiação da empresa de teste.

 

Gostaria se alguem pode me ajudar eu li na primeira página algo sobre certificado mais ficou meio vazio pra mim, se alguem puder me detalhar melhor ficarei muito grato!!

 

At,

 

Rallborges

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo recebi hj a nova versão do manual e tem um exemplo em php se quiser manda um MP q mando pro seu email!

 

Ola Maozao, boa noite, tudo bem?

 

essa é minha primeira mensagem aqui no forum e estou com um pepinao rs, desenvolvo com asp e sql server javascript, ja fiz alguns serviços de xml tb (criação de arquivo) porem estou com um problema, acabei de receber a autorização para começar a fazer a integração de um site feito em asp sql com a cielo, recebi o email da cielo contendo alguns arquivos exemplos, mas minha duvida, que vai ser ridicula, eu nao sei como dar o primeiro passo, pelo que li eles estao usando webservice, nunca utilizei webservice, gostaria de saber como faço a primeira requisicao de informação, pelo que li tenho que solicitar um parametro com ID unico (me fugiu o nome do parametro), mas nao tenho nem idéia do que fazer, sei que aqui é PHP, mas deve ser bem parecido, pra finalizar, poderia me fornecedor uma pagina exemplo com o minimo para eu começar os testes? abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Publiquei o código completo de integração com a Cielo, utilizando a licença LGPL.

 

Com o código é possível fazer:

 

1. Autorização e Autenticação no ambiente da Cielo para Visa e Mastercard.

2. Autorização no ambiente da Loja (o próprio site recupera os dados do cartão do cliente).

3. Consulta de transações.

4. Captura automática ou manual.

5. Cancelamento de transações.

 

As transações podem ser usando crédito a vista, débito, parcelado pelo banco ou parcelado pela loja.

 

Ainda não publiquei os exemplos de uso, mas em breve estarei publicando junto com os testes unitários.

 

Para baixar o código:

 

$ mkdir cielo
$ git clone git@github.com:netojoaobatista/cielo.git

 

Para usar o código:

 

<?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() );

 

Saída:

 

string(44) "uv9yI5tkhX9jpuCt+dfrtoSVM4U3gIjvrcwMBfZcadE="
int(6)
string(20) "100699306901DA151001"
string(6) "183412"
string(1) "6"
string(19) "2011-03-07 18:34:11"
string(2) "00"
string(22) "Transação autorizada"
float(100)

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!

 

Parabéns pela iniciativa João.

 

Apenas para constar que tentei testar a biblioteca que você fez e obtive o erro de que o metodo execute da classe HTTPRequest deveria ter a mesma assinatura.

 

aparentemente, arrumei isso, adicionei ' = array() '

 

Quando tentei executar o código que postou, recebo a mensagem de transação negada, usando o mesmo código que você.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas para constar que tentei testar a biblioteca que você fez e obtive o erro de que o metodo execute da classe HTTPRequest deveria ter a mesma assinatura.

 

aparentemente, arrumei isso, adicionei ' = array() '

 

Já corrigi esse problema, foi atualizado no repositório.

 

Quando tentei executar o código que postou, recebo a mensagem de transação negada, usando o mesmo código que você.

 

O ambiente de testes da Cielo é bastante instável, segundo o suporte deles, caso o número de requisições ao sandbox ultrapasse um limite (não informado), as requisições são direcionadas ao ambiente de produção da própria operadora de cartão, causando a negação de qualquer transação.

 

O objeto Cielo possui dois métodos de debug que permitem verificar o XML de requisição e de resposta:

 

echo $cielo->__getLastRequest(); //Recupera o XML de requisição
echo $cielo->__getLastResponse(); //Recupera o XML de resposta

 

Fazendo a requisição utilizando o código de exemplo, o XML de saída é:

 

<?xml version="1.0" encoding="UTF-8"?>
<requisicao-autorizacao-portador xmlns="http://ecommerce.cbmp.com.br" id="6" versao="1.1.0">
<tid>100699306901DEFC1001</tid>
<dados-ec>
	<numero>1006993069</numero>
	<chave>25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3</chave>
</dados-ec>
<dados-cartao>
	<numero>4551870000000183</numero>
	<validade>201212</validade>
	<indicador>1</indicador>
	<codigo-seguranca>123</codigo-seguranca>
</dados-cartao>
<dados-pedido>
	<numero>5807741</numero>
	<valor>10000</valor>
	<moeda>986</moeda>
	<data-hora>2011-03-13T08:37:19</data-hora>
	<idioma>PT</idioma>
</dados-pedido>
<forma-pagamento>
	<bandeira>visa</bandeira>
	<produto>1</produto>
	<parcelas>1</parcelas>
</forma-pagamento>
<capturar-automaticamente>true</capturar-automaticamente>
</requisicao-autorizacao-portador>

 

Como pode ver, a requisição está exatamente de acordo com o manual de integração versão 1.5.6

 

A resposta, nesse domingo, está sendo realmente "Não autorizado"

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<transacao id="6" versao="1.1.0" xmlns="http://ecommerce.cbmp.com.br">
<tid>100699306901DEFC1001</tid>
<pan>uv9yI5tkhX9jpuCt+dfrtoSVM4U3gIjvrcwMBfZcadE=</pan>
<dados-pedido>
	<numero>5807741</numero>
	<valor>10000</valor>
	<moeda>986</moeda>
	<data-hora>2011-03-13T09:35:17.627-02:00</data-hora>
	<idioma>PT</idioma>
</dados-pedido>
<forma-pagamento>
	<bandeira>visa</bandeira>
	<produto>1</produto>
	<parcelas>1</parcelas>
</forma-pagamento>
<status>5</status>
<autenticacao>
	<codigo>5</codigo>
	<mensagem>Transacao sem autenticacao</mensagem>
	<data-hora>2011-03-13T09:35:17.684-02:00</data-hora>
	<valor>10000</valor>
	<eci>7</eci>
</autenticacao>
<autorizacao>
	<codigo>5</codigo>
	<mensagem>Autorização negada</mensagem>
	<data-hora>2011-03-13T09:35:17.705-02:00</data-hora>
	<valor>10000</valor>
	<lr>14</lr>
</autorizacao>
</transacao>

 

Infelizmente, apesar de o pacote cielo estar estritamente de acordo com o manual, o ambiente de testes da Cielo não é diferente do ambiente de testes das outras operadoras de cartão, essa instabilidade prejudica muito o nosso trabalho.

 

Estarei, em breve, disponibilizando os testes unitários desse pacote de integração que cobrirá 100% do código, bastará rodar a suíte de testes para verificar os resultados de autorização (ou negação) das autorizações.

 

Caso alguém encontre algum problema, como o da assinatura do método execute(), por favor, abra uma ocorrência no repositório, utilizando o seguinte link: https://github.com/netojoaobatista/cielo/issues

 

Procurarei corrigir toda e qualquer ocorrência o mais rápido possível.

 

;)

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.