示例#1
0
        // GET api/SiscomexController/GetDUE
        // Parametros numero due, servicoParametros
        public RetornoSiscomex GetDUE(String numeroDue, ServicoParametros servicoParametros)
        {
            autenticar      = new AutenticarSisconex(); // Autentica
            retornoSisconex = new RetornoSiscomex();

            //Caso o token seja nulo solita autenticação.
            if (token == null)
            {
                if (autenticar.GetTokenAutenticado(servicoParametros))
                {
                    token      = autenticar.getToken();
                    xCSRFtoken = autenticar.getxCSRFtoken();
                }

                client = autenticar.getClient(); // Usa client já configurado
            }

            // seta os novos dados do Header para a consulta
            client.DefaultRequestHeaders.Clear();
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Add("Authorization", token);     // obtido na autenticação
            client.DefaultRequestHeaders.Add("X-CSRF-Token", xCSRFtoken); // obtido na autenticação

            metododeconsumo = "/due/api/ext/due/consultarDadosResumidosDUE?numero=" + numeroDue;

            //efetura a consulta
            responseConsumo = client.GetAsync(metododeconsumo).Result;

            var result = responseConsumo.Content.ReadAsStringAsync().Result;

            retornoSisconex = JsonConvert.DeserializeObject <RetornoSiscomex>(result); // desmonta o resultado.

            return(retornoSisconex);
        }
示例#2
0
        public RetornoSiscomex EnviarRetificacao(string xml, string due, string cpfCertificado)
        {
            try
            {
                var response = SisComex.EnviarRetificacao(xml, due, cpfCertificado);

                var retornoSiscomex = new RetornoSiscomex();

                var retornoResponse = response.Content.ReadAsStringAsync().Result;

                using (MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(Regex.Unescape(retornoResponse))))
                {
                    var reader = new StreamReader(memoryStream, Encoding.UTF8);

                    if (response.StatusCode != HttpStatusCode.OK)
                    {
                        try
                        {
                            var xmlSerializer = new XmlSerializer(typeof(RetornoCriticas));
                            var criticas      = (RetornoCriticas)xmlSerializer.Deserialize(reader);

                            retornoSiscomex.Sucesso  = false;
                            retornoSiscomex.Message  = criticas.Message;
                            retornoSiscomex.Criticas = criticas.Detail?.Errors;
                        }
                        catch (Exception ex)
                        {
                            retornoSiscomex.Sucesso = false;
                            retornoSiscomex.Message = "Erro 500. XML recusado pelo Serpro";
                        }
                    }
                    else
                    {
                        var xmlSerializer = new XmlSerializer(typeof(RetornoSucesso));
                        var sucesso       = (RetornoSucesso)xmlSerializer.Deserialize(reader);

                        retornoSiscomex.Sucesso = true;
                        retornoSiscomex.Message = sucesso.Message;
                        retornoSiscomex.DUE     = sucesso.Due;
                        retornoSiscomex.RUC     = sucesso.Ruc;
                    }
                }

                return(retornoSiscomex);
            }
            catch (Exception ex)
            {
                return(new RetornoSiscomex
                {
                    Sucesso = false,
                    Message = ex.Message
                });
            }
        }
示例#3
0
        // Tipos de RoleType
        //IMPEXP     Declarante importador/exportador
        //DEPOSIT    Depositário
        //OPERPORT   Operador Portuário
        //TRANSPORT  Transportador
        //AGEREMESS  Remessa Expressa/Correio
        //AJUDESPAC  Ajudante de Despachante
        //HABILITAD  Habilitador
        //PUBLICO    Público

        // GET api/values
        public RetornoSiscomex GetDUETeste(String numeroDue)
        {
            SiscomexController siscomexController = new SiscomexController();

            ServicoParametros servicoParametros = new ServicoParametros();

            string priKey = "1234567890.pfx"; /// Numero do Certificado padrão A1 em Arquivo pfx

            servicoParametros.SetCertificado(priKey);
            servicoParametros.SetSenhaCertificado("senha"); /// Senha usada no Certificado.
            servicoParametros.SetTipoRoleType("DEPOSIT");   /// Tipo de RoleType (De acordo com o manual do Siscomex)
            servicoParametros.SetComCertificado(false);

            retornoSiscomex = siscomexController.GetDUE(numeroDue, servicoParametros);

            return(retornoSiscomex);
        }