예제 #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);
 }
예제 #2
0
        private static X509Certificate2 ObterCertificado()
        {
            if (!string.IsNullOrEmpty(CaminhoCertificadoDigital) && !string.IsNullOrEmpty(SenhaCertificadoDigital))
            {
                return(CertificadoDigital.ObterDeArquivo(CaminhoCertificadoDigital, SenhaCertificadoDigital));
            }

            return(CertificadoDigital.ObterDoRepositorio(NumeroSerieCertificadoDigital, SenhaCertificadoDigital));
        }
예제 #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;
        }
예제 #4
0
 private void CarregaDadosCertificado()
 {
     try
     {
         var cert = CertificadoDigital.ObterDoRepositorio();
         TxtCertificado.Text = cert.SerialNumber;
         //TxtValidade.Text = "Validade: " + cert.GetExpirationDateString();
     }
     catch (Exception ex)
     {
         Funcoes.Mensagem(ex.Message, TituloErro, MessageBoxButton.OK);
     }
 }
예제 #5
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);
        }
예제 #6
0
        public void ObterSerialCertificado()
        {
            var numeroSerie = CertificadoDigital.ObterDoRepositorio();

            NumeroDeSerie = numeroSerie.SerialNumber;
        }
예제 #7
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);
        }