jansenfelipe / cnpj-gratis Goto Github PK
View Code? Open in Web Editor NEWCom esse pacote você poderá consultar, gratuitamente, CNPJ diretamente no site da receita
Home Page: https://jansenfelipe.github.io/phpgratis/
Com esse pacote você poderá consultar, gratuitamente, CNPJ diretamente no site da receita
Home Page: https://jansenfelipe.github.io/phpgratis/
Estava usando o pacote em um projeto de laravel 5.1, estamos atualizando o projeto e na versão 5.6 o pacote não está mais sendo instalado, parece que está dando erro com o pacote symfony/css-selector, tem ideia se isso pode ser corrigido?
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Conclusion: don't install jansenfelipe/cnpj-gratis v2.1.0
- Conclusion: remove symfony/css-selector v4.0.4
- Installation request for jansenfelipe/cnpj-gratis ^2.1 -> satisfiable by jansenfelipe/cnpj-gratis[2.1.x-dev, v2.1.0].
- Conclusion: don't install symfony/css-selector v4.0.4
- jansenfelipe/cnpj-gratis 2.1.x-dev requires symfony/css-selector ^3.2 -> satisfiable by symfony/css-selector[3.2.x-dev, 3.3.x-dev, 3.4.x-dev, v3.2.0, v3.2.0-BETA1, v3.2.0-RC1, v3.2.0-RC2, v3.2.1, v3.2.10, v3.2.11, v3.2.12, v3.2.13, v3.2.14, v3.2.2, v3.2.3, v3.2.4, v3.2.5, v3.2.6, v3.2.7, v3.2.8, v3.2.9, v3.3.0, v3.3.0-BETA1, v3.3.0-RC1, v3.3.1, v3.3.10, v3.3.11, v3.3.12, v3.3.13, v3.3.14, v3.3.15, v3.3.16, v3.3.2, v3.3.3, v3.3.4, v3.3.5, v3.3.6, v3.3.7, v3.3.8, v3.3.9, v3.4.0, v3.4.0-BETA1, v3.4.0-BETA2, v3.4.0-BETA3, v3.4.0-BETA4, v3.4.0-RC1, v3.4.0-RC2, v3.4.1, v3.4.2, v3.4.3, v3.4.4].
- Can only install one of: symfony/css-selector[3.2.x-dev, v4.0.4].
- Can only install one of: symfony/css-selector[3.3.x-dev, v4.0.4].
- Can only install one of: symfony/css-selector[3.4.x-dev, v4.0.4].
- Can only install one of: symfony/css-selector[v3.2.0, v4.0.4].
- Can only install one of: symfony/css-selector[v3.2.0-BETA1, v4.0.4].
- Can only install one of: symfony/css-selector[v3.2.0-RC1, v4.0.4].
...
Hello @jansenfelipe, not is better use php-query using composer?
What requirement have to use your lib?
<?php
namespace JansenFelipe\CnpjGratis;
use Exception;
use JansenFelipe\Utils\Utils as Utils;
use Symfony\Component\DomCrawler\Crawler;
class CnpjGratis {
/**
* Metodo para capturar o captcha e cookie para enviar no metodo de consulta
*
* @throws Exception
* @return array Retorna Cookie e CaptchaBase64
*/
public static function getParams()
{
$data = self::request('http://servicos.receita.fazenda.gov.br/Servicos/cnpjreva/Cnpjreva_Solicitacao.asp');
$cookie = $data['headers']['Set-Cookie'];
$image = self::request('http://servicos.receita.fazenda.gov.br/Servicos/cnpjreva/captcha/gerarCaptcha.asp', [], [
"Pragma: no-cache",
"Origin: http://www.receita.fazenda.gov.br",
"Host: servicos.receita.fazenda.gov.br",
"User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept-Encoding: gzip, deflate",
"Referer: http://servicos.receita.fazenda.gov.br/Servicos/cnpjreva/Cnpjreva_Solicitacao.asp",
"Cookie: flag=1; $cookie",
"Connection: keep-alive"
]);
if(@imagecreatefromstring($image['response'])==false)
throw new Exception('Não foi possível capturar o captcha');
return array(
'cookie' => $cookie,
'captchaBase64' => base64_encode($image['response'])
);
}
/**
* Metodo para realizar a consulta
*
* @param string $cnpj CNPJ
* @param string $captchaSolved CAPTCHA
* @param string $cookie COOKIE
* @throws Exception
* @return array Dados da empresa
*/
public static function consulta($cnpj, $captchaSolved, $cookie)
{
$result = array();
if (!Utils::isCnpj($cnpj))
throw new Exception('O CNPJ informado não é válido');
$headers = [
"Host: servicos.receita.fazenda.gov.br",
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Language: pt-BR,pt;q=0.9,en;q=0.8",
"Accept-Encoding: gzip, deflate",
"Referer: http://servicos.receita.fazenda.gov.br/Servicos/cnpjreva/Cnpjreva_Solicitacao_CS.asp",
"Cookie: $cookie",
"Connection: keep-alive"
];
$params = [
'origem' => 'comprovante',
'cnpj' => Utils::unmask($cnpj),
'txtTexto_captcha_serpro_gov_br' => $captchaSolved,
'search_type' => 'cnpj'
];
$data = self::request('http://servicos.receita.fazenda.gov.br/Servicos/cnpjreva/valida.asp', $params, $headers);
$crawler = new Crawler($data['response']);
if (strpos($crawler->html(), '<b>Erro na Consulta</b>') !== false)
{
throw new Exception('Erro ao consultar. Confira se você digitou corretamente os caracteres fornecidos na imagem.', 98);
}
if ($crawler->filter('body > table:nth-child(3) font:nth-child(1)')->count() > 0)
throw new Exception('Erro ao consultar. O CNPJ informado não existe no cadastro.', 99);
$td = $crawler->filter('#principal > table:nth-child(1)');
foreach ($td->filter('td') as $td) {
$td = new Crawler($td);
if ($td->filter('font:nth-child(1)')->count() > 0) {
$key = trim(strip_tags(preg_replace('/\s+/', ' ', $td->filter('font:nth-child(1)')->html())));
switch ($key) {
case 'NOME EMPRESARIAL': $key = 'razao_social';
break;
case 'TÍTULO DO ESTABELECIMENTO (NOME DE FANTASIA)': $key = 'nome_fantasia';
break;
case 'CÓDIGO E DESCRIÇÃO DA ATIVIDADE ECONÔMICA PRINCIPAL': $key = 'cnae_principal';
break;
case 'CÓDIGO E DESCRIÇÃO DAS ATIVIDADES ECONÔMICAS SECUNDÁRIAS': $key = 'cnaes_secundario';
break;
case 'CÓDIGO E DESCRIÇÃO DA NATUREZA JURÍDICA' : $key = 'natureza_juridica';
break;
case 'LOGRADOURO': $key = 'logradouro';
break;
case 'NÚMERO': $key = 'numero';
break;
case 'COMPLEMENTO': $key = 'complemento';
break;
case 'CEP': $key = 'cep';
break;
case 'BAIRRO/DISTRITO': $key = 'bairro';
break;
case 'MUNICÍPIO': $key = 'cidade';
break;
case 'UF': $key = 'uf';
break;
case 'SITUAÇÃO CADASTRAL': $key = 'situacao_cadastral';
break;
case 'DATA DA SITUAÇÃO CADASTRAL': $key = 'situacao_cadastral_data';
break;
case 'MOTIVO DE SITUAÇÃO CADASTRAL': $key = 'motivo_situacao_cadastral';
break;
case 'SITUAÇÃO ESPECIAL': $key = 'situacao_especial';
break;
case 'DATA DA SITUAÇÃO ESPECIAL': $key = 'situacao_especial_data';
break;
case 'TELEFONE': $key = 'telefone';
break;
case 'ENDEREÇO ELETRÔNICO': $key = 'email';
break;
case 'ENTE FEDERATIVO RESPONSÁVEL (EFR)': $key = 'ente_federativo_responsavel';
break;
case 'DATA DE ABERTURA': $key = 'data_abertura';
break;
default: $key = null;
break;
}
if (!is_null($key)) {
$bs = $td->filter('font > b');
foreach ($bs as $b) {
$b = new Crawler($b);
$str = trim(preg_replace('/\s+/', ' ', $b->html()));
$attach = htmlspecialchars_decode($str);
if ($bs->count() == 1)
$result[$key] = $attach;
else
$result[$key][] = $attach;
}
}
}
}
if(isset($result['telefone']) && $result['telefone'] != '') {
$posBarra = strpos($result['telefone'], '/');
if ($posBarra > 0) {
$result['telefone2'] = substr($result['telefone'], $posBarra + 1, strlen($result['telefone']) - $posBarra);
$result['telefone'] = substr($result['telefone'], 0, $posBarra - 1);
}
}
return $result;
}
/**
* Send request
*
* @param $uri
* @param array $data
* @param array $headers
*
* @return array
*/
private static function request($uri, array $data = [], array $headers = [])
{
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $uri,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_HEADER => 1,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT_MS => 30000
]);
if (!empty($data)) {
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
}
$response = curl_exec($curl);
$size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
curl_close($curl);
$headers = [];
foreach (explode(PHP_EOL, substr($response, 0, $size)) as $i)
{
$t = explode(':', $i, 2);
if(isset($t[1]))
$headers[trim($t[0])] = trim($t[1]);
}
$response = substr($response, $size);
return compact('response', 'headers');
}
}
Estava integrando via Ajax. quando percebi uma lentidão no sistema:
Segue a solução no CURL:
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
Eai pessoal!
Tenho esse pacote instalado em produção e está retornando um erro : "undefined index telefone" : linha 177 do arquivo CnpjGratis.php.
Podem verificar o que está acontecendo?
Att
Opa, tudo bem?
Eu acho que não estou sabendo como montar o fluxo corretamente, podem me ajudar?
axios.post("/montaBuscaCNPJ", {
cnpj: app.cnpj
})
.then(function(response) {
app.captcha = response.data.captchaBase64
console.log(response);
});
}
Essa rota manda para o EmpresaController@montaBuscaCNPJ assim:
public function montaBuscaCNPJ(Request $request)
{
$params = CnpjGratis::getParams($request->cnpj);
return $params;
}
O retorno do captcha devolvo para a tag de imagem assim:
<img :src="captcha" /><br />
Mas aí já começa o problema pois a tag não parece conter a source corretamente, como podem ver abaixo:
<img src="iVBORw0KGgoAAAANSUhEUgAAALQAAAAyCAYAAAD1JPH3AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABbCSURBVHhe3Z1ZzGVTFsc/lCGUeR6izETMFCJmMYTELKYyljFlJmalUaYYIyXaPJRERVNaFNqQaDwISQfxgKSTIv3Am4d+8NAPp+9v1/e/1l3f2mfvc79bQ/c/WanvnrOHtdf+r7XX3ufcW2NrrrnmP8fGxpr/N5k6deq/t9tuu0XItGnT/nXIIYf847TTTvs7MmvWrIVPP/30S5Kmaf40GaGN3377bY699uGHH861fcycOfNv6n/69OnfSa9I95JoXGpPfdj+h5Wff/75ge++++5hf33evHnP+WvR9Vy5yQp6MUb+je5LevYZa6ZMmRIablnITjvt1Bx66KET5MQTT2zuvPPOJKeffnrTI2jz2muvNZ988klfeqRqvv766+aLL77ojW0x+Ky233rrrfGro8OLL76Y2r7//vvHrwzi999/H9AP8K/+Fr7//vtUBh01To1d+tfIaqutNmCvp556aqBvD68L46GeBfVpm3sW/nqu3CjAPKKXndsIYzNmzPgYo//000/N888/37zzzjuJKDIoCm600Ubp3xpZeeWVm7333rs544wzUhsiXc6gwyAyOnj//ff7esioEETXmNxRg3Ghy6JFi8avDAKich957733mh9//DFNDtIVTCa2xHloD9IyR71Vtj/GNll11VWbffbZpzn55JNTfWzz7LPPDujCODxpmEPqP/bYY+NXFsNfz5VbGmAekkP1/iZUN/Pnz28uvfTSgcE888wzzRFHHNEn4y+//NK8+eabzQMPPNCccMIJSfltttmm2WSTTdLfNWKjBwYoeRx906/+1ueIEDgmxmTCpTOA3JCZ+8sSd911V7LxkoIILwfC1nvssUc4D17WWWedVP78889PdQkOsjF28zYF/nqu3NIAuqJ3n9AA7ySiCJG3CihNAzYyPfjgg30Dbb311ikaYChruJyQahxzzDGpTQjIxGAgRWP+Jpogy8Jgo0CbPUcBP3/YSbaaO3du39bMDeStDUQ4BXNz2223NU8++WSam+UVfULDcA0gl2tCqhKZIOCcOXOaTz/9NH3+9ttvm88//7yfI+LBN998c7VBN9xww2avvfZK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">
public function buscaCNPJ(Request $request)
{
$dadosEmpresa = CnpjGratis::consulta(
$request->cnpj,
$request->captchaBase64,
$request->cookie
);
dd($dadosEmpresa);
}
E alimentar a função VueJS com o response.data
para preencher todos os campos do formulário com os dados da empresa.
Porém, não estou conseguindo. Podem me ajudar?
Será que é possível pegar o quadro societário?
Boa tarde,
Quando executo o código não está retornando viewstate nem mesmo o captcha. Printei na tela o response do curl_exec e aparace "The requested URL could not be retrieved". Poderia me ajudar? Nem sei por aonde começar.
Agradeço
Felipe, estou usando sua biblioteca, que por sinal é muito boa, mas infelizmente ela parou de funcionar, parece que Receita Federal mudou alguma configuração no servidor.
Veja o exemplo que está no seu blog:
http://supliu.com.br/cadastro-empresa
Olá,
Alguem com problemas no retorno das informações ?
Do nada começou a dar erro que a captcha não é a digitada corretamente, a 1h atras estava tudo normal.
Boa tarde, existe alguma forma de recuperar a inscrição estadual?
Ao rodar o comando composer require jansenfelipe/cnpj-gratis, ocorre o seguinte erro:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- jansenfelipe/cnpj-gratis v2.0.0 requires fabpot/goutte 2.0.@dev -> satisfiable by fabpot/goutte[v2.0.0, v2.0.1, v2.0.2, v2.0.3, v2.0.4].
- jansenfelipe/cnpj-gratis v2.0.1 requires fabpot/goutte 2.0.@dev -> satisfiable by fabpot/goutte[v2.0.0, v2.0.1, v2.0.2, v2.0.3, v2.0.4].
- jansenfelipe/cnpj-gratis v2.0.2 requires fabpot/goutte 2.0.@dev -> satisfiable by fabpot/goutte[v2.0.0, v2.0.1, v2.0.2, v2.0.3, v2.0.4].
- jansenfelipe/cnpj-gratis v2.0.3 requires fabpot/goutte 2.0.@dev -> satisfiable by fabpot/goutte[v2.0.0, v2.0.1, v2.0.2, v2.0.3, v2.0.4].
- jansenfelipe/cnpj-gratis v2.0.4 requires fabpot/goutte 2.0.@dev -> satisfiable by fabpot/goutte[v2.0.0, v2.0.1, v2.0.2, v2.0.3, v2.0.4].
- jansenfelipe/cnpj-gratis v2.0.5 requires fabpot/goutte 2.0.@dev -> satisfiable by fabpot/goutte[v2.0.0, v2.0.1, v2.0.2, v2.0.3, v2.0.4].
- fabpot/goutte v2.0.4 requires symfony/css-selector ~2.1 -> no matching package found.
- fabpot/goutte v2.0.3 requires symfony/css-selector ~2.1 -> no matching package found.
- fabpot/goutte v2.0.2 requires symfony/css-selector ~2.1 -> no matching package found.
- fabpot/goutte v2.0.1 requires symfony/css-selector ~2.1 -> no matching package found.
- fabpot/goutte v2.0.0 requires symfony/css-selector ~2.1 -> no matching package found.
- Installation request for jansenfelipe/cnpj-gratis ^2.0 -> satisfiable by jansenfelipe/cnpj-gratis[v2.0.0, v2.0.1, v2.0.2, v2.0.3, v2.0.4, v2.0.5].
No meu composer.json já tem a lib symfony/css-selector na versão ~3.0.
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Conclusion: don't install jansenfelipe/cnpj-gratis v2.1.0
- Conclusion: remove symfony/css-selector v4.1.0
- Installation request for jansenfelipe/cnpj-gratis ^2.1 -> satisfiable by jansenfelipe/cnpj-gratis[2.1.x-dev, v2.1.0].
- Conclusion: don't install symfony/css-selector v4.1.0
- jansenfelipe/cnpj-gratis 2.1.x-dev requires symfony/css-selector ^3.2 -> satisfiable by symfony/css-selector[3.2.x-dev, 3.3.x-dev, 3.4.x-dev, v3.2.0, v3.2.0-BETA1, v3.2.0-RC1, v3.2.0-RC2, v3.2.1, v3.2.10, v3.2.11, v3.2.12, v3.2.13, v3.2.14, v3.2.2, v3.2.3, v3.2.4, v3.2.5, v3.2.6, v3.2.7, v3.2.8, v3.2.9, v3.3.0, v3.3.0-BETA1, v3.3.0-RC1, v3.3.1, v3.3.10, v3.3.11, v3.3.12, v3.3.13, v3.3.14, v3.3.15, v3.3.16, v3.3.17, v3.3.2, v3.3.3, v3.3.4, v3.3.5, v3.3.6, v3.3.7, v3.3.8, v3.3.9, v3.4.0, v3.4.0-BETA1, v3.4.0-BETA2, v3.4.0-BETA3, v3.4.0-BETA4, v3.4.0-RC1, v3.4.0-RC2, v3.4.1, v3.4.10, v3.4.11, v3.4.2, v3.4.3, v3.4.4, v3.4.5, v3.4.6, v3.4.7, v3.4.8, v3.4.9].
Quando é instalado o pacote "cnpj-gratis" e se tenta instalar o cpf- e cep- o composer reverte os processos pois a versão do Symfony CSS Selector não é compativel.
Estou recebendo a seguinte mensagem de erro..
Undefined index: cep in [path_arquivo] on line 17
{"cep":"","code":0}
A linha 17 é a linha do código abaixo.
$return['cep'] = Utils::mask($return['cep'], Mask::CEP);
function aj_get_data_from_cnpj() {
try {
if (!isset($_POST['cnpj']) || !isset($_POST['captcha']) || !isset($_POST['cookie']))
throw new Exception('Informe todos os campos', 99);
$return = CnpjGratis::consulta($_POST['cnpj'], $_POST['captcha'], $_POST['cookie']);
$return['cep'] = Utils::mask($return['cep'], Mask::CEP);
$return['code'] = 0;
} catch (Exception $e) {
$return = array('code' => $e->getCode(), 'message' => $e->getMessage());
}
wp_send_json($return);
}
Alguma idéia do que pode ser?
Será atualizado para dar suporte ao Laravel 5?
Pessoal, o serviço parou de funcionar?
As consultas estão retornando como "Erro na consulta" quando imprimo a variável $crawler. O captcha e o cookie retornam normalmente.
//CnpjGratis.php
$crawler = $client->request('POST', 'http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/valida.asp', $param);
dd($crawler);
Console:
\t\t\t\tErro na Consulta - Esclarecimentos adicionais. \r\n
Alguém sabe o que pode ser? Estou usando o Laravel 5.3
Boa noite, estou tentando usar o cpf-gratis e o cnpj-gratis só que estou tendo problemas, por exemplo, meu composer não está baixando o fabpot/goutte nem o jansenfelipe/util, o que pode estar acontecendo?
Mais alguém com problema no Retorno dos dados, pelo que observei esta trazendo em branco, mas ao depurar as linhas ele mostra que recebeu os dados corretamente.
Houve uma alteração no sistema da Receita Federal e não está sendo possível realizar consultas de CNPJ.
Cara tive o seguinte erro ao subir pro meu servidor
curl_setopt_array(): CURLOPT_FOLLOWLOCATION cannot be activated when an open_basedir is set
na linha 49
curl_setopt_array($ch, $options);
você saberia como resolver esse erro ?
Fala Felipe,
Quando o usuário "erra" o captcha, não é feito nenhum tratamento atualmente. O crawler retorna um HTML que possui a seguinte sentença no meio: "Erro na Consulta". Imagino que só esse tratamento já ajude um pouco!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.