示例#1
0
        public bool InternalRFBGetDataCNPJ(string cnpj, string captcha, out RfbCnpjCpfDataContract cnpjCpfData,
            out string mensagem)
        {
            var ret = new RfbCnpjCpfDataContract();
            try
            {
                mensagem = null;

                var sendData = new NameValueCollection();
                sendData.Add("cnpj", cnpj);
                sendData.Add("txtTexto_captcha_serpro_gov_br", captcha);
                sendData.Add("search_type", "cnpj");
                sendData.Add("origem", "comprovante");
                sendData.Add("submit1", "Consultar");
                //sendData.Add("viewstate", HttpContext.Current.Session["GetCNPJViewState"].ToString());

                var wc = new CookieAwareWebClient();
                wc.CookieContainer = Session["GetCNPJCookies"] as CookieContainer;
                wc.CookieContainer.SetCookies(new Uri(AddressBase), "flag=1");
                wc.Headers.Add("User-Agent", UserAgent);
                var resultByte = wc.UploadValues(AddressBase + AddressDataCNPJ, "POST", sendData);

                var result = Encoding.Default.GetString(resultByte);

                var valid = new HtmlDocument();
                valid.LoadHtml(result);
                if (valid.GetElementbyId("imgcaptcha") != null)
                    throw new ArgumentException(@"Captcha inválido", nameof(captcha));

                if (result.Contains("lido. Verifique se o mesmo foi digitado corretamente"))
                    throw new ArgumentException(@"Cnpj inválido", nameof(UtilsController));

                if (result.Contains("mero de CNPJ informado. Verifique se o mesmo foi digitado corretamente."))
                    throw new ArgumentException(@"Cnpj inválido", nameof(UtilsController));

                result = result.Remove(0, result.IndexOf("NOME EMPRESARIAL"));
                result = result.Remove(result.IndexOf("DATA DA SITUA"), result.Length - result.IndexOf("DATA DA SITUA"));
                var docHtml = new HtmlDocument();
                docHtml.LoadHtml(result);
                var dataResult =
                    docHtml.DocumentNode.Descendants()
                        .Where(i => i.Name == "font")
                        .Select(i => i.InnerText.Replace("\t", "").Replace("\r", "").Replace("\n", "").RemoveAccents())
                        .ToList();
                var available = string.Empty;

                ret.Status = true;
                foreach (var item in dataResult)
                {
                    if (!string.IsNullOrEmpty(available))
                    {
                        var data = CultureInfo.GetCultureInfo("pt-BR").TextInfo.ToTitleCase(item.Trim());
                        switch (available)
                        {
                            case "NOME EMPRESARIAL":
                                ret.RazaoSocial = data;
                                break;
                            case "TITULO DO ESTABELECIMENTO (NOME DE FANTASIA)":
                                ret.NomeFantasia = data;
                                break;
                            case "LOGRADOURO":
                                ret.Logradouro = data;
                                break;
                            case "NUMERO":
                                ret.Numero = data;
                                break;
                            case "COMPLEMENTO":
                                ret.Complemento = data;
                                break;
                            case "CEP":
                                ret.Cep = data;
                                break;
                            case "BAIRRO/DISTRITO":
                                ret.Bairro = data;
                                break;
                            case "MUNICIPIO":
                                ret.Cidade = data;
                                break;
                            case "UF":
                                ret.Estado = data;
                                break;
                            case "SITUACAO CADASTRAL":
                                ret.Status = data.Trim().ToLower() == "ativa";
                                break;
                            case "CODIGO E DESCRICAO DA ATIVIDADE ECONOMICA PRINCIPAL":
                                ret.CnaePrincipal = data;
                                break;
                            case "CODIGO E DESCRICAO DAS ATIVIDADES ECONOMICAS SECUNDARIAS":
                                ret.CnaeSecundario = data;
                                break;
                            case "CODIGO E DESCRICAO DA NATUREZA JURIDICA":
                                ret.NaturezaJuridica = data;
                                break;
                        }
                        available = null;
                    }
                    if (keysCNPJ.Contains(item))
                        available = item;
                }
                cnpjCpfData = ret;
                return true;
            }
            catch (Exception)
            {
                mensagem = "Captcha inválido";
            }
            cnpjCpfData = null;
            return false;
        }
示例#2
0
 public bool InternalRFBGetData(string document, string captcha, out RfbCnpjCpfDataContract saida,
     out string mensagem)
 {
     document = StringHelper.GetStringNumbersOnly(document);
     if (document.Length == 14)
         return InternalRFBGetDataCNPJ(document, captcha, out saida, out mensagem);
     saida = null;
     mensagem = "Documento inválido";
     return false;
 }