Ir para conteúdo

POWERED BY:

Arquivado

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

jribeirojr

Cielo By Page Loja

Recommended Posts

Estou com um problema o qual já tentei resolver de diversas maneiras, mas até agora nada e por isso resolvi recorrer aqui.

Estou implementando o Gateway de pagamento da Cielo, a solução By Page Loja, onde o usuário realiza a inserção dos dados de pagamento na minha própria loja, e depois é gerado um XML para o Cielo, e todo o processo ocorre.

Baixei o Kit de integração da Cielo, onde vem com uma loja modelo, e ativei a mesma no meu ambiente de desenvolvimento, e funcionou perfeitamente, tive apenas que alterar as seguintes linhas:

curl_setopt($sessao_curl, CURLOPT_CAINFO, getcwd() ."/ssl/VeriSignClass3PublicPrimaryCertificationAuthority-G5.CRT");
curl_setopt($sessao_curl, CURLOPT_SSLVERSION, 1);

A primeira linha informa onde o certificado, fornecido pela Cielo, encontra-se em meu diretório e a segunda linha a versão do certificado.

Acontece que:

1 - Quando rodo o sistema na minha máquina, chamando o ambiente de homnologação da Cielo, todo o processo ocorre corretamente e sem problema algum.

mas

2 - Quando coloco este código no ambiente de homologação do cliente, e tento processar, o sistema cria o XML corretamente, mas no momento de realizar a conexão com o ambiente da Cielo, retorna o seguinte erro

Operation timed out after 0 milliseconds with 0 out of 0 bytes received

OU seja, o sistema não consegue estabelecer a conexão com o servidor da Cielo para enviar o XML, o problema é que não sei se é no momento do envio ou do retorno do XML

Gostaria de saber se alguém já passou por este problema, se existe algum tipo de liberação necessário para fazer no servidor, versão de PHP, etc.

Já estou a 4 dias e até agora não consegui resolver este problema.

Segue abaixo o código que realiza a conexão com o servidor da Cielo

require 'errorHandling.php';
require_once 'pedido.php';
require_once 'logger.php';

define('VERSAO', "1.1.0");

session_start();

if(!isset($_SESSION["pedidos"]))
{
	$_SESSION["pedidos"] = new ArrayObject();
}

// CONSTANTES
define("ENDERECO_BASE", "https://qasecommerce.cielo.com.br");
define("ENDERECO", ENDERECO_BASE."/servicos/ecommwsec.do");

define("LOJA", "1006993069");
define("LOJA_CHAVE", "25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3");
define("CIELO", "1001734898");
define("CIELO_CHAVE", "e84827130b9837473681c2787007da5914d6359947015a5cdb2b8843db0fa832");


// Envia requisição
function httprequest($paEndereco, $paPost){

	$sessao_curl = curl_init();
	curl_setopt($sessao_curl, CURLOPT_URL, $paEndereco);
	
	curl_setopt($sessao_curl, CURLOPT_FAILONERROR, true);

	//  CURLOPT_SSL_VERIFYPEER
	//  verifica a validade do certificado
	curl_setopt($sessao_curl, CURLOPT_SSL_VERIFYPEER, true);
	
	//  CURLOPPT_SSL_VERIFYHOST
	//  verifica se a identidade do servidor bate com aquela informada no certificado
	curl_setopt($sessao_curl, CURLOPT_SSL_VERIFYHOST, 2);

	//  CURLOPT_SSL_CAINFO
	//  informa a localização do certificado para verificação com o peer
	curl_setopt($sessao_curl, CURLOPT_CAINFO, getcwd() ."/ssl/VeriSignClass3PublicPrimaryCertificationAuthority-G5.CRT");
	curl_setopt($sessao_curl, CURLOPT_SSLVERSION, 1);

	//  CURLOPT_CONNECTTIMEOUT
	//  o tempo em segundos de espera para obter uma conexão
	curl_setopt($sessao_curl, CURLOPT_CONNECTTIMEOUT, 10);

	//  CURLOPT_TIMEOUT
	//  o tempo máximo em segundos de espera para a execução da requisição (curl_exec)
	curl_setopt($sessao_curl, CURLOPT_TIMEOUT, 40);

	//  CURLOPT_RETURNTRANSFER
	//  TRUE para curl_exec retornar uma string de resultado em caso de sucesso, ao
	//  invés de imprimir o resultado na tela. Retorna FALSE se há problemas na requisição
	curl_setopt($sessao_curl, CURLOPT_RETURNTRANSFER, true);

	curl_setopt($sessao_curl, CURLOPT_POST, true);
	curl_setopt($sessao_curl, CURLOPT_POSTFIELDS, $paPost );

	$resultado = curl_exec($sessao_curl);

	if (!$resultado) 
		$curl_error = curl_error($sessao_curl); // Capturo o erro ANTES de fechar
	
	curl_close($sessao_curl);

	if (!$resultado) 
		echo "<br><font size=6>" . $curl_error ;

	if ($resultado)
	{
		return $resultado;
	}
	else
	{
		return curl_error($sessao_curl);
	}
}

// Monta URL de retorno
function ReturnURL()
{
	$pageURL = 'http';

	if ($_SERVER["SERVER_PORT"] == 443) // protocolo https
	{
		$pageURL .= 's';
	}
	$pageURL .= "://";
	if ($_SERVER["SERVER_PORT"] != "80")
	{
		$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
	} else {
		$pageURL .= $_SERVER["SERVER_NAME"]. substr($_SERVER["REQUEST_URI"], 0);
	}
	// ALTERNATIVA PARA SERVER_NAME -> HOST_HTTP

	$file = substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);

	$ReturnURL = str_replace($file, "retorno.php", $pageURL);

	return $ReturnURL;
}

 

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.