Exemplo n.º 1
0
 /// <summary>
 ///     Cria uma instância da Classe responsável pelos serviços relacionados à NFe
 /// </summary>
 /// <param name="cFgServico"></param>
 public ServicosNFe(ConfiguracaoServico cFgServico)
 {
     _cFgServico  = cFgServico;
     _certificado = string.IsNullOrEmpty(_cFgServico.Certificado.Arquivo)
         ? CertificadoDigital.ObterDoRepositorio(_cFgServico.Certificado.Serial, _cFgServico.Certificado.Senha)
         : CertificadoDigital.ObterDeArquivo(_cFgServico.Certificado.Arquivo, _cFgServico.Certificado.Senha);
     _path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
 }
Exemplo n.º 2
0
        private static X509Certificate2 ObterCertificado()
        {
            if (!string.IsNullOrEmpty(CaminhoCertificadoDigital) && !string.IsNullOrEmpty(SenhaCertificadoDigital))
            {
                return(CertificadoDigital.ObterDeArquivo(CaminhoCertificadoDigital, SenhaCertificadoDigital));
            }

            return(CertificadoDigital.ObterDoRepositorio(NumeroSerieCertificadoDigital, SenhaCertificadoDigital));
        }
Exemplo n.º 3
0
        /// <summary>
        ///     Cria uma instância da Classe responsável pelos serviços relacionados à NFe
        /// </summary>
        /// <param name="cFgServico"></param>
        public ServicosNFe(ConfiguracaoServico cFgServico)
        {
            _cFgServico  = cFgServico;
            _certificado = string.IsNullOrEmpty(_cFgServico.Certificado.Arquivo)
                ? CertificadoDigital.ObterDoRepositorio(_cFgServico.Certificado.Serial, _cFgServico.Certificado.Senha)
                : CertificadoDigital.ObterDeArquivo(_cFgServico.Certificado.Arquivo, _cFgServico.Certificado.Senha);
            _path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            //Define a versão do protocolo de segurança
            ServicePointManager.SecurityProtocol = cFgServico.ProtocoloDeSeguranca;
        }
Exemplo n.º 4
0
        /// <summary>
        ///     Cria uma instância da Classe responsável pelos serviços relacionados à NFe
        /// </summary>
        /// <param name="cFgServico"></param>
        public ServicosNFe(ConfiguracaoServico cFgServico, string pin = null)
        {
            _cFgServico  = cFgServico;
            _certificado = string.IsNullOrEmpty(_cFgServico.Certificado.Arquivo)
                ? CertificadoDigital.ObterDoRepositorio(_cFgServico.Certificado.Serial, _cFgServico.Certificado.Senha)
                : CertificadoDigital.ObterDeArquivo(_cFgServico.Certificado.Arquivo, _cFgServico.Certificado.Senha);

            if (!string.IsNullOrWhiteSpace(pin))
            {
                ((X509Certificate2)_certificado).SetPinForPrivateKey(pin);
            }

            _path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        }
Exemplo n.º 5
0
        private void btn_certificado_arquivo_Click(object sender, EventArgs e)
        {
            string path_arquivo = "";

            try
            {
                if (dlgcertificadoArquivoCaminho.ShowDialog() == DialogResult.OK)
                {
                    path_arquivo = this.dlgcertificadoArquivoCaminho.FileName;
                }
                string           senha       = Prompt.ShowDialog("Insira a senha do certificado", "");
                X509Certificate2 certificado = CertificadoDigital.ObterDeArquivo(path_arquivo, senha);
                user_control.salvarCertificadoUserLogado(certificado, 1, path_arquivo, senha);
                MessageBox.Show("O certificado foi configurado com êxito");
                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro ao selecionar certificado: " + ex.Message);
            }
        }
Exemplo n.º 6
0
        private string Request(MetodoWebService metodo, string xml)
        {
            if (SalvarXmls)
            {
                if (!Directory.Exists(PathXmls))
                {
                    Directory.CreateDirectory(PathXmls);
                }

                string path = Path.Combine(PathXmls, $"{metodo}Request_{DateTime.Now:yyyy-MM-dd_HHmmss}.xml");
                File.WriteAllText(path, xml);
            }

            XmlEnvio    = string.Empty;
            XmlResposta = string.Empty;

            var _timeout = TimeSpan.FromMilliseconds(Timeout);

            X509Certificate2 _certificado = null;

            try
            {
                switch (CertificadoTipo)
                {
                case TipoCertificado.A1Repositorio:
                    _certificado = CertificadoDigital.ObterDoRepositorio(CertificadoSerial, OpenFlags.MaxAllowed);
                    break;

                case TipoCertificado.A1ByteArray:
                    _certificado = CertificadoDigital.ObterDoArrayBytes(CertificadoArrayBytes, CertificadoSenha);
                    break;

                case TipoCertificado.A1Arquivo:
                    _certificado = CertificadoDigital.ObterDeArquivo(CertificadoPath, CertificadoSenha);
                    break;

                case TipoCertificado.A3:
                    _certificado = CertificadoDigital.ObterDoRepositorioPassandoPin(CertificadoSerial, CertificadoSenha);
                    break;

                case TipoCertificado.Nenhum:
                    break;

                default:
                    throw new ArgumentOutOfRangeException("Tipo de certificado não implementado");
                }

                switch (metodo)
                {
                case MetodoWebService.Login:
                    using (var rqst = new LogonServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.Login(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.Logout:
                    using (var rqst = new LogonServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.Logout(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.MotoristaGravar:
                    using (var rqst = new MotoristasServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.MotoristaGravar(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.MotoristaObter:
                    using (var rqst = new MotoristasServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.MotoristaObter(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.ProprietarioGravar:
                    using (var rqst = new ProprietariosServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.ProprietarioGravar(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.ProprietarioObter:
                    using (var rqst = new ProprietariosServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.ProprietarioObter(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.VeiculoGravar:
                    using (var rqst = new VeiculosServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.VeiculoGravar(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.VeiculoObter:
                    using (var rqst = new VeiculosServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.VeiculoObter(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.PefAdicionarOperacaoTransporte:
                    using (var rqst = new PefServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.AdicionarOperacaoTransportePef(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.PefAdicionarPagamento:
                    using (var rqst = new PefServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.AdicionarPagamentoPef(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.PefObterCodigoIdentificacaoOperacaoTransportePorIdOperacaoCliente:
                    using (var rqst = new PefServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.ObterCodigoIdentificacaoOperacaoTransportePorIdOperacaoClientePef(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.PefObterOperacaoTransportePdf:
                    using (var rqst = new PefServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.ObterOperacaoTransportePdfPef(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.PefRetificarOperacaoTransporte:
                    using (var rqst = new PefServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.RetificarOperacaoTransportePef(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.PefCancelarOperacaoTransporte:
                    using (var rqst = new PefServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.CancelarOperacaoTransportePef(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.PefEncerrarOperacaoTransporte:
                    using (var rqst = new PefServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.EncerrarOperacaoTransportePef(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                case MetodoWebService.PefAdicionarViagem:
                    using (var rqst = new PefServiceClient(_timeout))
                    {
                        try
                        {
                            XmlResposta = rqst.AdicionarViagemPef(xml);
                        }
                        finally
                        {
                            XmlEnvio = rqst.XmlEnvio;
                        }
                    }
                    break;

                default:
                    throw new NotImplementedException();
                }

                if (SalvarXmls)
                {
                    string path = Path.Combine(PathXmls, $"{metodo}Response_{DateTime.Now:yyyy-MM-dd_HHmmss}.xml");
                    File.WriteAllText(path, XmlResposta);
                }
            }
            finally
            {
#if NETFRAMEWORK
                if (_certificado != null)
                {
                    _certificado.ForceUnload();
                }
#else
                _certificado?.Dispose();
#endif
            }

            return(XmlResposta);
        }