GithubHelp home page GithubHelp logo

jansenfelipe / cnpj-gratis Goto Github PK

View Code? Open in Web Editor NEW
161.0 34.0 81.0 94 KB

Com esse pacote você poderá consultar, gratuitamente, CNPJ diretamente no site da receita

Home Page: https://jansenfelipe.github.io/phpgratis/

PHP 100.00%
cnpj consulta-cnpj hacktoberfest

cnpj-gratis's Introduction

Blog Badge Twitter Badge

Quem sou eu?

🤓 Um programador que toca viola caipira e um violeiro que programa 🤠

Por aqui desde 2014 retribuindo um pouco o que a comunidade opensource me proporcionou ao longo de toda minha vida como dev. Nesse perfil você verá repositórios de códigos criados por mim com objetivo de ajudar outros programadores.

Recentemente venho contribuindo através da Supliu Tecnologia. Segue o perfil dela aqui no GitHub https://github.com/supliu

cnpj-gratis's People

Contributors

fernandobatels avatar filipegar avatar jansenfelipe avatar marciobds avatar mprandot avatar rafaelwithoeft avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cnpj-gratis's Issues

Laravel 5.6 -> Não instala

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].

Undefined index "Telefone"

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

Atualização com a novas urls

<?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');
    }
}

Erro no viewstate

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

Qual a ordem das coisas?

Opa, tudo bem?

Eu acho que não estou sabendo como montar o fluxo corretamente, podem me ajudar?

  1. Montei uma função do VueJS para ir buscar o Cookie e o Captcha:
			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+LBN998c7VBN9xww2avvfZKKwJChIuicwl2ciN4MiwNyGlHATt/r776av+atRVzQ9D58ssvx68sBk5GRCZwXHbZZWluatIY5o+yzCcrI+Mp8cOCsqMavzDGrhFFMIIUtbkmnUpRbVhqUeMkpDXnnXde6pO2d9ttt36dNsGQ11xzTZqkmqjnJ9fC6vn66693mpQSaDvSD73pDwcfBexe4bjjjhu/+gdyejDW3Hg195qb7bffvll77bX7/eRklVVWSfODczA+2lDaKHCN1RtnGCXGLrzwwr9dffXVaSmBXD7XxBDcJ8fW8l8DjJFzEgufD9O38uCPPvoo9XnKKaekNkpRY//9909GVLSoxaOPPtpv4+ijj54wRnSiPeTXX3/t/10ifrRJFahLPzZlq0GOmIA+zj333JQaoJ/m0epx0003DehNe9b+bfj4448TDwA2VpusoDW5uvJ0SLz66quna1tttdVIo3SvzT863GGHHZKRMYAGzWB1H4PVDB4FP/vss1SWOt5JuoK62mzgAFoeyevWX3/9vn6RYGhIjg4QgbY8EW10O/vssycQ2p5UaJVCcragfYS+5JycItU4gQd9iMBtDiJgnzvuuCOVueeee9I19DjrrLPStWOPPbZqDkv44IMPmoceeqg/L4B+Lr/88nSKguMwP/vuu29f55wwR6y2HBJ0dXCPsSlTpvwn6gTBew488MD+51yU9eiamtQgikoQRLpdfPHFqU9OUNhg6nokW2yxRZ/ktAHkeBDPTjiTRJkuZKS+Jw2f0U/j4LMdE237ZdkT2DpImy6XXHJJqnPjjTeOXxntkRq60BZ6WLBhl75XXnnlQBnGK15A9LbDgm233TatlG+//Xaq2wVpU0gEeuSRR9KSDYmjTiQ777xzc/zxxzfXXnttGkAEBtxGaMjB5Fhg8G+++Wb80x+gHGfj9O2jkiaJwVvPFtGJEhgUkpfGhRPoOBEiiZA2OnuSlgDpIkewRCXVA9ZmIjpjnzVrVoq0tc4EaJMHT9YmtFVyhFrQBrqy4Vd7IrmENI4ybRH3q6++4qnnQD0vEJ/go4OFEhKhUcobHqP28uu0HGy66aZhZ5IVV1wx7XghBRu8u+++e8KBvRB5N+ezagsvtuCzcugbbrhhIKrlJikXjSjHOTonJTUkR/Tk8oILLmhmzpyZ7CSHRPTZ6wAYP5MqnWVn8nDGwhk/+wTAxFOO+/QLKRH+traqgd+XLCnQh/phbIyVNCSXYkJgggzphY5o2Z9h15NOOqnqiNfzwyMR2hteUNTAQOz+2b1GnZSEPIq2GLQGbj23bfNIPTY5EEpluBaBcTAGEb0tb5UuIiX9YmjIW2NYCY6MY7BqMS50ZUWhTcRObM7OFnJGCM8+xNvqfxkHHHDABPtZ4QSFJ8yU06bRy+abb57SS61sHv0I7fM3gEdZj2Cp5ElSlwm3QiSfNm1ac9RRR6VJt+CEhTSGCAoR0QlC6FExxGjLH6MNUxuBuIdYqE9LdDkUkZqnojXHVjnBWSQso+hGSsExG5tRjizpY7311mt22WWXfhkvrILoxN8PP/xw88ILL4yPYPkEDkm6QMCI7GJlhRVWCK9HQlkOMghGcvpEaCYN41gw2aoYhXmIZRu3ssYaa4TXI9lxxx2TVzKxTNQ555zTzJ49Ox3+o1NbNLMoEV6gXO5+mwN4MEEQHmOiNxEVokL8DTbYIBzrkhTeoSEf5TSDUw5SPvSLAtVkQbt25ckBO9uN4q677poCmtW7TUh3CaDwI7rvBdsnQit/s4DEKujTAIAT2MYQNmeWUPzL4Mmras4prRCpOK+kH5aXnAEhFrpCRPIyGwX1XgI6MEZE+wLI30b8WsgOHFcBn7/KBgjpBPpIWKnWWmutCWNfGsIBgLUVwomWNsaRYOczzzwz1WfZ17jgDuNmfMOkbRICwRtvvBEGlIjUvDQ3ffr0xUTW9V7Z/rscHkwWZI7IFBGaQbeBQVOPVxxVh1dX2RBgYNtWJCiO0XlHpPaJYptg/DZowjRp/OttAWFnzJiR2vMPLWqhaI/9oo0qaQ6rACcXBx10UP/tR6LdZpttlshDOufrLW+C85JOEVAGSGiEsVx00UVpoyhHYhNvOYOwGpF24YA4UL+9nj2zhG5DF0IrhxJ8XZQSiG6KZCi65ZZbDpQdpWCkCDVLHJOCg0JwohXXIBeToYlgHF0Jzph9XzixBW3SvvJGgU0kJ0Z+8iERJ0/WQRG/YujEgb9FFCvoUTrxWubSs8PICY2xFMkwsu4rF+eePzGJ8nQAaUSYrrLSSisVT2aAXeIgS216VFuOVMhuXHLAmXmM7OtDphqgO/Zig+xJzQoYrbRdQLs+lWBspG9Ks/jXO44XyhNdObZkVWPlsW0iPAFmP+XHwQp2xRVXpD2XdUbJUISGADlC6zq5NLDvSTCpRGqMoGsSm3cKXPMDQrjGOws8YuWMWjt+Jr7mbFnCLlmk3G+//fpGeeKJJ9ISz72o/8kIbTKhHvaUxgtjqgG2R/+oLY4XawmNY0A8u7rYuaAt5hfnGRXQ2+vshU2lDZA8cPJ6FgmNEWwFGqAxliY1LMHwLEt4HMuXCMJrn2wYOdHwdRDOFiNAUF+WSGPTlwjozKkDkV0H+dRbkl81I59lrHw9TNfI9XMO5lckdIbofNvHl60hNPVxxIMPPnhCfSRyIgvmVYSHvIzFrlxssGmHXJWHQbnVxjuDPkvQg/dAogDWRmqcCDJjN13juJM6agudioSmASoJ5F00pt3uZIU36DhLtU4DrOISnSR4UNfXj6CJIkfmaIuzcAiv9vfcc8/kRDUb1DZht875KOTipOb6669PE2LLQAwI5PcXIo4Vlnn09kLb6Iu0rSSsCjydzMGvqh7YjZya/JnjQd8+gs3QhxUZm0apU04gusDZu7+P7Zhf7MW/6OsPK9Axle/9nY7tclFPyxgN0TGGYeB6LDusoOQtt9zSTxe8x/r8lPIMAB3sQAB1ff1aWMfxx5NEKJZVq4eVjTfeOD0Aie7ViP2uJpGd6BWlY8MKT2hJnSL7WjC3lFHUhQvYAsf3jrgkRIcC6Jg77kM/H1wt+vO4YMGCP6sSFz2YUBEGz6NBkVr1JLwlhWeWclmUbksbMKavQ3+lSNIVbR6P49AXTzCtHlZYOimH0A5jgpTcI83CVkTcUUT9LoJ9/VwqGEhXD+6TmrXN26gFZ8GBxbEcmSW8+spqZ8FYNJ7Ej9mzZ/9FFVgu2qC8+aqrrkqTpXoSGrRggtm0Rbkrg4miBob1UYHllEGjOP3m8jcmy5KyhDaPV2rFKmJ1sfLyyy+n+oicnuMx7vmcNeV3rj57De0vSE8gvi8zrGBDu+IwF1ZXC2xbcjjIRsRmjtmM6Tp5LHqXyCjBLn6eIjLzGV3tNYRVx0J2F8b4QRSMimL+u2YevC4IqZkcljLfmSe0wACiAfO1eohjISJZqdkUJe/slb3uuutSf+z0NYFedMZ62GGHJVJ5HQAGZyXAibw+EvoR7MnCqaeeOiEKRoQmenswF74cIp1rf7JAwsMMHlwxbnS0Gz0AGXJpBXk+UduOU8DedlXDKdAxaseKbytHZpFU82ol4hl6pLnq/d352C7qBHn88cfHS0wEESK3nGFoIWq7jdAMnEkiHZrMKQaGRqIIH5VH7ORQj+gjJ/B46aWXJtSH0JoIgdMhXw6RXv1csSe8zEWfLMNd3x+BxDgID4Oi+3ZOuoB6bRtUu7pGZKaudboc1zyptdqO9Yw5J5qACHTEJN53330hOYkugp8ogBf7zR7CIOSRUYRm0BHRbFScjLBz1zvZUX7uy0t8tGnDDz/8MKE+hPZpT5oUVw6xRGAyfc4PsEcbsXMnFF5KrwSUQP2oXQQOgByZvSPBIWzC+0C2LGJTKmySbHfvvffOtwbNoQt5eMqz++67p527BwpGO3nl1AsXLpxwD+FIyIMJVVQkQufywNIbXny1n40uaRQOhT2IXrml2AoOSlkfMQSu8xJS27LO2T1jYRWLju0Q++jaktvCvtmWE2zBEzrmJno/GZLVBrgcoqAkAaS2U6dOnXCPlEWBDShSM+a2dIY6OAr/jvWWq7/WEBrSRI21CS/MyCMtmLzcxCHrrrvuhGt4r59IPkOCEuyPrHhh2RaZsAPkisrViI/Y6BeVG4WUlma+T1ja6OVe84Xw0bzVgBUH3aJ2ud5/iahFaANb8jfjilZ1KzZSj/FLk9YrImA4Jp0o2eX4id9xoF4OaYkI6uUELxWSN45fxwAlREsW4kkIsf1SWBLSr2iDh448oieCR6sET05zk18jNhBpab711lvT238cKXKNQNR1PAgk6grvVMMK86koz7zlgh/OwZgtx4qbQuspHhCdByyUiaQG3gi8UMR7Fbm37CA1g9C3ihHroRboZ1MI245E44J8NuIBPtvxQBJSHERfs8rBpmh6GhnZEP3QrQvpeDwe5dBAKw2iQEW01TU2kMwZ3wpiHDx9zf0YJ2kS6SH1GI+N2vzNNe5RJrfht1J6UQwnQieg83/aF7B3KR0qElqeoo4s6IB70UR1hZ8IlusaI0l4cQViIDXLmgTdLfk0FsbmCRORJQdycjbPREh+1ZW2IxvWgr5xDI4Z33333fGrZTCGEgm4f/jhh/dt0CaQfJiIj/AuN3bFGbGzgmGU3mjFye0XcsgSWvkpBmFSIqN4svsIR52SMdtA3VL+NKzw4hB6Y0zGyN8aJ8amDJ+HBYQX6a0Nawg2SvhTlBw0l7w4P5k0qE1sWjbKYGgREpqJkBI+P2VCUAbRI3AmSApy/AWxucZPR5UiWQ1oe7KPZZkk0hUMqC/h5sA9Gx0Yw4IFC9KXhtFlMoSsJRjwAWIYMN6a/nzgYszUZQ/AD/NENrXC3oo9FuPLHdvx9TehbeWfDEJCo5SUYHmwhs0tu1JQom8+jBr0qdxNwhtaSjckumedD+OR+/KzCdyrgU1HEI67SkTT6hahlmAKEJONYKxAtUHFBqvIaRm30gWV016C8rJL9MYcwqooeAcaFbIpB0k573awEUKZkmFRkGf8yhvnzZuX/WWlLsBYtF0ydgk4KfknjsYqkiMVbUMC9Ysj6DuDCBMKQXKk5p7K+tUN1BJsSUWwNnTZIwiUozxPidGXvDh3KqF3hSL7KQhE97ogS2gtjcMYFjJoEJOJMNSlDRxkGGPn0EYq+tT7FPRLOYTrkJnfW2sbm1/dukKO+8orr6SvGcl5uT6qaFYbHGrIRX3a4WtRjJkvVuRegYXs0Qacfmw5e68G9K/fI88SmgYhD4PvujTY9ANHoK7q44n8hl2NQbmHDsplPWonuS0F8KAs38jI9UufjKnNJiI/ZQHj1N8loCffcpb9FOUVYLogsg+6PPfcc+n4jiejfAvEg3r2f2Pw5LLtQkb0In/Wf19Cyqe6VlixqQvpOS5UG/wql8qwz2Glt6lMG9BNddPfvWshobvkXh4ojVIMFIVoR6LOyUW5rz4oVzMAi9Ik0zaRTn2KHEsKUTSTwfk6WO3YoihPCggBu9jI28dOvl4BjnTGqfjiBa+1Us73R7u8RIVT0wYRmcfovGXI59zmnR/B4W1IfZaj0J9941OrMY7N/LUB3cjNaY9AkyV0LSCNNwqdRIaPJkqgHW9gHIN2cpOIQagTwW/mbJ+0hcOOEuhIH5okRTGEiYEAjK22b9qxUZ5f36QdxqsgUIK3D31zlo0udvVBd/VTA/LlYc+irfB7hRayGYhSkxx48UsRf1KEznUakVPwE9UGeWpuEttWEdpXakDuZvv0E90GjJRzKAu716AsKxTk8ejS92RRWmWxB7ZBb+xUC9pVVJyMcJRqHcuuKHb+Sra3KBIag0TEBMN2KlCnFK265L+0V0M+2syNyaPNOQX6s2fy/LcNfAOFExWPLn2PAnb+/FxCIJyO8Vli1YI6BDXqI6QNevuQc2l9HQ/hm/2QmLfscAZyZebKYhTOPkBoT4guYX8YlAbABKh/jF9CjnyMR2NaEqBfBFibcTw4DNC1Ji0R6JuNLPUIMtH8RbnrKFcL+mWVIuKXbE1ZeMbGj1+XFUoritAWEAYI7QnRNQJbY9agFK1szm3/e4WuYFxETSa9C1GGQVebeWATzvJrieYdKLds65yYjZ70qiVQDUrpoYXKEtHZF9RC42EcOE6EAUJTAc+pWbYjWGN2Bf3p1+wtosgCmPjaVMRO+pFHHlldL0KuX2yG/brA2xsiSE+OzXKgXC7o5KIu97iO/ssLSgHNA7vb/80hwgCh5TkIxycydundB4GjJb8RwuA1dfVtC0ta4CcMiX4vrw1qwz7BqqnnYQmn+rQdbaxqHM7am7Zr/hu8UhpYirrYL7dKtd3rgtpgU1MOneTwAHu3rX7ZTaE1Nst1m5EEDOyXkNqoXftEEj387+Xl4L0fXdrq0XZtCqT6XPMbK9pROREflJwb+/HbE0RnygJfh8/WwUvw9UlLos0qyEV3C9pq6zc3do8u5dCpNpJnCT0MmFgO5C1KRsI4eKA9JagB7dqjOA/axFiUs8jVK0U+gWhsCReNLyI+4DoPR3I64xC33377QHvUKZGsDbZ+aYz0XyIOBEMExqKVnLnLjd2jtlwt6B9dRkJoGtM3DHiyZFFaAkseGF2vWapqIz6TgI4YoybyeQLnxhc5DpERnWxq4oHeei8BRA7TBbZ+7RhrQH3mnVdq9Wal7BCNPYIvx7+kt13THtpZbNf7m/8Ci4pYxVlMmzEAAAAASUVORK5CYII=">
  1. A ideia aqui é fazer o usuário digitar o conteúdo dessa imagem do captcha e mandar para outro método no EmpresaController assim:
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?

Erro ao instalar no Laravel 5.2

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.

Composer.json

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?

Issue ao "errar" o captcha

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!

Laravel 5.6

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].

...

Problema no Retorno

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.

Erro Captcha

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.

base_dir

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 ?

Undefined index: cep

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?

QSA

Será que é possível pegar o quadro societário?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.