/// <summary> /// Assina um objeto CTe /// </summary> /// <param name="cte"></param> /// <param name="configuracaoServico"></param> /// <returns>Retorna um objeto do tipo CTe assinado</returns> public static void Assina(this CteEletronica cte, ConfiguracaoServico configuracaoServico = null) { if (cte == null) { throw new ArgumentNullException("cte"); } var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; var modeloDocumentoFiscal = cte.infCte.ide.mod; var tipoEmissao = (int)cte.infCte.ide.tpEmis; var codigoNumerico = cte.infCte.ide.cCT; var estado = cte.infCte.ide.cUF; var dataEHoraEmissao = cte.infCte.ide.dhEmi; var cnpj = cte.infCte.emit.CNPJ; var numeroDocumento = cte.infCte.ide.nCT; int serie = cte.infCte.ide.serie; var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico); cte.infCte.Id = "CTe" + dadosChave.Chave; cte.infCte.versao = configServico.VersaoLayout; cte.infCte.ide.cDV = dadosChave.DigitoVerificador; var assinatura = AssinaturaDigital.Assina(cte, cte.infCte.Id, configServico.X509Certificate2); cte.Signature = assinatura; }
public static MDFEletronico Assina(this MDFEletronico mdfe, EventHandler <string> eventHandlerChaveMdfe = null, object quemInvocouEventoChaveMDFe = null) { if (mdfe == null) { throw new ArgumentException("Erro de assinatura, MDFe esta null"); } var modeloDocumentoFiscal = mdfe.InfMDFe.Ide.Mod; var tipoEmissao = (int)mdfe.InfMDFe.Ide.TpEmis; var codigoNumerico = mdfe.InfMDFe.Ide.CMDF; var estado = mdfe.InfMDFe.Ide.CUF; var dataEHoraEmissao = mdfe.InfMDFe.Ide.DhEmi; var cnpj = mdfe.InfMDFe.Emit.CNPJ; var numeroDocumento = mdfe.InfMDFe.Ide.NMDF; int serie = mdfe.InfMDFe.Ide.Serie; var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico); mdfe.InfMDFe.Id = "MDFe" + dadosChave.Chave; if (eventHandlerChaveMdfe != null) { eventHandlerChaveMdfe.Invoke(quemInvocouEventoChaveMDFe, dadosChave.Chave); } mdfe.InfMDFe.Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout; mdfe.InfMDFe.Ide.CDV = dadosChave.DigitoVerificador; var assinatura = AssinaturaDigital.Assina(mdfe, mdfe.InfMDFe.Id, MDFeConfiguracao.X509Certificate2); mdfe.Signature = assinatura; return(mdfe); }
/// <summary> /// Assina um objeto NFe /// </summary> /// <param name="nfe"></param> /// <param name="cfgServico">ConfiguracaoServico para uso na classe Assinador</param> /// <returns>Retorna um objeto do tipo NFe assinado</returns> public static Classes.NFe Assina(this Classes.NFe nfe, ConfiguracaoServico cfgServico = null, X509Certificate2 _certificado = null) { var nfeLocal = nfe; if (nfeLocal == null) { throw new ArgumentNullException("nfe"); } var config = cfgServico ?? ConfiguracaoServico.Instancia; #region Define cNF var tamanhocNf = 9; var versao = (decimal.Parse(nfeLocal.infNFe.versao, CultureInfo.InvariantCulture)); if (versao >= 2) { tamanhocNf = 8; } nfeLocal.infNFe.ide.cNF = Convert.ToInt32(nfeLocal.infNFe.ide.cNF).ToString().PadLeft(tamanhocNf, '0'); #endregion var modeloDocumentoFiscal = nfeLocal.infNFe.ide.mod; var tipoEmissao = (int)nfeLocal.infNFe.ide.tpEmis; var codigoNumerico = int.Parse(nfeLocal.infNFe.ide.cNF); var estado = nfeLocal.infNFe.ide.cUF; var dataEHoraEmissao = nfeLocal.infNFe.ide.dhEmi; var cnpj = nfeLocal.infNFe.emit.CNPJ; if (cnpj == null) { cnpj = nfeLocal.infNFe.emit.CPF.PadLeft(14, '0'); } var numeroDocumento = nfeLocal.infNFe.ide.nNF; var serie = nfeLocal.infNFe.ide.serie; var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao.LocalDateTime, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico); nfeLocal.infNFe.Id = "NFe" + dadosChave.Chave; nfeLocal.infNFe.ide.cDV = Convert.ToInt16(dadosChave.DigitoVerificador); Signature assinatura = null; if (_certificado == null) { assinatura = Assinador.ObterAssinatura(nfeLocal, nfeLocal.infNFe.Id, config); } else { assinatura = Assinador.ObterAssinatura(nfeLocal, nfeLocal.infNFe.Id, _certificado, config.Certificado.ManterDadosEmCache, config.Certificado.SignatureMethodSignedXml, config.Certificado.DigestMethodReference, config.RemoverAcentos); } nfeLocal.Signature = assinatura; return(nfeLocal); }
/// <summary> /// Assina um objeto NFe /// </summary> /// <param name="nfe"></param> /// <returns>Retorna um objeto do tipo NFe assinado</returns> public static Classes.NFe Assina(this Classes.NFe nfe) { var nfeLocal = nfe; if (nfeLocal == null) { throw new ArgumentNullException("nfe"); } #region Define cNF var tamanhocNf = 9; var versao = (decimal.Parse(nfeLocal.infNFe.versao, CultureInfo.InvariantCulture)); if (versao >= 2) { tamanhocNf = 8; } nfeLocal.infNFe.ide.cNF = Convert.ToInt32(nfeLocal.infNFe.ide.cNF).ToString().PadLeft(tamanhocNf, '0'); #endregion var modeloDocumentoFiscal = nfeLocal.infNFe.ide.mod; var tipoEmissao = (int)nfeLocal.infNFe.ide.tpEmis; var codigoNumerico = int.Parse(nfeLocal.infNFe.ide.cNF); var estado = nfeLocal.infNFe.ide.cUF; var dataEHoraEmissao = nfeLocal.infNFe.ide.dhEmi; var cnpj = nfeLocal.infNFe.emit.CNPJ; var numeroDocumento = nfeLocal.infNFe.ide.nNF; var serie = nfeLocal.infNFe.ide.serie; var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico); nfeLocal.infNFe.Id = "NFe" + dadosChave.Chave; nfeLocal.infNFe.ide.cDV = Convert.ToInt16(dadosChave.DigitoVerificador); var assinatura = Assinador.ObterAssinatura(nfeLocal, nfeLocal.infNFe.Id); nfeLocal.Signature = assinatura; return(nfeLocal); }