Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v1.x.
#8803
Estou querendo inserir no Opencart uma rotina que retorna o nome da pessoa a partir do CPF informado no site da receita.

Para isso, consegui na Net os códigos que você informa o CPF, insere as letras do Captcha e ele retorna o nome, conforme exemplo:

Arquivo "formulario.php":


<?php
session_start();

//separador de diretorio
//padrao linux
$dir_sep = '/';
//para windows
if (DIRECTORY_SEPARATOR == '\\') $dir_sep = '\\';

$cookie_file = tempnam (realpath(sys_get_temp_dir()), "CURLCOOKIE");
$_SESSION['cookie_file'] = substr($cookie_file, strrpos (tempnam (realpath(sys_get_temp_dir()), "CURLCOOKIE"), $dir_sep));
?>
<html>
<head>
<title>cpf hack</title>
</head>
<body>
<?php

$my_site = "http://localhost/receita/";

//parte 1: acessar o site da receita e obter o cookie do captcha apropriadamente

$url_imagem = "http://www.receita.fazenda.gov.br/scrip ... e&v=".time();
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_URL, $url_imagem);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch); // the real thing

$img_file_name = tempnam ("images/", "CURLGIF_");
$img_data = imagecreatefromstring($output);
imagegif($img_data, $img_file_name);

$img_link = $my_site."images".substr( $img_file_name, strrpos ($img_file_name , $dir_sep));
?>

<form method="post" action="consultar.php">
CPF: <input type="text" name="txtCPF"/> <br />
Captcha: <input type="text" name="idLetra"/> <br />
<img src="<?php echo $img_link ?>" /> <br/>
<input id="id_submit" name="Enviar" type="submit" value="Consultar"/>
</form>
</body>
</html>



E o arquivo "consultar.php":


<?php
session_start();

//parte 2: realizar a requisição utilizando o mesmo cookie
//$url_requisicao = "http://www.receita.fazenda.gov.br/aplic ... Exibir.asp";

$url_requisicao = "http://www.receita.fazenda.gov.br/aplic ... ublica.asp";
$campos = $_POST;
$campos_concat = '';
$cookie_file = realpath(sys_get_temp_dir()).$_SESSION['cookie_file'];
$campos_concat = 'txtCPF='.$_POST['txtCPF'].'&idLetra='.$_POST['idLetra']."&Enviar".$_POST['Enviar'];

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url_requisicao);
curl_setopt($ch,CURLOPT_POST, count($_POST));
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$campos_concat);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); //a-ha!
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true); // valeu, felipe!

$result = curl_exec($ch);
$result = iconv("ISO-8859-1","UTF-8",$result);

//texto para localizar o nome
$texto_antes = 'Nome da Pessoa Física:';
$texto_depois = '</span>';

if (!strpos($result, $texto_antes)){
die('erro na consulta');
}
else{
$result = substr($result, strpos($result, $texto_antes));
$result = substr($result, strlen($texto_antes) , strpos($result, $texto_depois));
$result = str_replace ( $texto_depois , '' , $result);
$result = trim($result);

//close connection
curl_close($ch);
echo "<pre>";
echo $result;
echo "</pre>";
}
?>



Neste exemplo, acima, precisamos criar uma pasta chamada "Images" no mesmo diretório que estarão os arquivos.

A idéia é de que quando o cliente clicar em "Novo Cadastro", ele apresente somente a tela solicitando o CPF e o captcha e após a confirmação (e validação na receita), ele apresente o restante do cadastro (só que com o CPF e o Nome travados).

Pessoal, se alguém puder ajudar, como estou começando com o Opencart, ainda não tenho muita idéia de como inserir esta funcionalidade neste CMS.

Obrigado.
Editado pela última vez por novelo.michel em 05 Set 2011, 18:08, em um total de 1 vez.
#8808
Isso é muito legal, eu não tenho conhecimento pra te ajudar, mas vou ficar de olho nesse tópico esperando que alguma boa alma de continuidade.
Isso tornaria bem mais confiável o site... assim tb como aquela consulta onde informamos o CEP e o endereço é completado.
Tem coisas que realmente são muito boas!
Abs