rafawebdev
Mensagens : 29 Data de inscrição : 06/11/2015
| Assunto: Ao assinar:Um contexto XmlDocument é necessário para transformações envelopadas. Seg Dez 07, 2015 3:33 pm | |
| Olá pessoal, Estou com problemas ao tentar assinar o xml. Já consegui fazer testes no SoapUI e corrigi vários erros, porém o que falta agora é justamente a assinatura. A mensagem que está dando é: Erro: Ao assinar o documento - Um contexto XmlDocument é necessário para transformações envelopadas. Segue arquivo em c# que faz a assinatura: - Código:
-
static void Main(string[] args) { //Console.WriteLine("Exemplo de Assinatura Digital XML\r\r"); //Console.Write("Arquivo xml a ser assinado :"); //string _arquivo = Console.ReadLine(); string _arquivo = "E:\\NF NFS Integracao\\NFS\\Ginfes\\xmlsenvio\\xmls\\xmltentativa3.xml"; if (_arquivo == null) { Console.WriteLine("\rNome de arquivo não informado..."); } else if (!File.Exists(_arquivo)) { Console.WriteLine("\rArquivo {0} inexistente...", _arquivo); } else { //Console.Write("URI a ser assinada (Ex.: infCanc, infNFe, infInut, etc.) :"); //string _uri = Console.ReadLine(); string _uri = "EnviarLoteRpsEnvio"; if (_uri == null) { Console.WriteLine("\rURI não informada..."); } else { // // le o arquivo xml // StreamReader SR; string _stringXml; SR = File.OpenText(_arquivo); _stringXml = SR.ReadToEnd(); SR.Close(); // // realiza assinatura // AssinaturaDigital AD = new AssinaturaDigital(); // // cria cert // X509Certificate2 cert = new X509Certificate2(); // // seleciona certificado do repositório MY do windows // Certificado certificado = new Certificado(); cert = certificado.BuscaNome(""); int resultado = AD.Assinar(_stringXml, _uri, cert); if (resultado == 0) { // // grava arquivo assinado // StreamWriter SW; SW = File.CreateText(_arquivo.Trim() + "_assinado"); SW.Write(AD.XMLStringAssinado); SW.Close();
} Console.WriteLine(AD.mensagemResultado); } }
Console.Read();
}
E o xml que estou tentando: - Código:
-
<?xml version="1.0" encoding="UTF-8"?> <arg1> <EnviarLoteRpsEnvio> <LoteRps Id="400000013"> <NumeroLote>13</NumeroLote> <Cnpj>18358664000192</Cnpj> <InscricaoMunicipal>217880</InscricaoMunicipal> <QuantidadeRps>1</QuantidadeRps> <ListaRps> <Rps> <InfRps Id="R1"> <IdentificacaoRps> <Numero>1</Numero> <Serie>MAQ01</Serie> <Tipo>1</Tipo> </IdentificacaoRps> <DataEmissao>2015-10-10T16:37:00</DataEmissao> <NaturezaOperacao>1</NaturezaOperacao> <OptanteSimplesNacional>2</OptanteSimplesNacional> <IncentivadorCultural>2</IncentivadorCultural> <Status>1</Status> <Servico> <Valores> <ValorServicos>10.00</ValorServicos> <IssRetido>2</IssRetido> <BaseCalculo>10.00</BaseCalculo> <ValorLiquidoNfse>10.00</ValorLiquidoNfse> </Valores> <ItemListaServico>1.0</ItemListaServico> <CodigoTributacaoMunicipio>1.0</CodigoTributacaoMunicipio> <Discriminacao>BLA BLA BLA</Discriminacao> <CodigoMunicipio>0000</CodigoMunicipio> </Servico> <Prestador> <Cnpj>18358664000192</Cnpj> </Prestador> <Tomador> <IdentificacaoTomador> <CpfCnpj> <Cnpj>03944784000102</Cnpj> </CpfCnpj> </IdentificacaoTomador> <RazaoSocial>EMPRESA TESTE</RazaoSocial> <Endereco> <Endereco>RUA TESTE</Endereco> <Bairro>TESTE</Bairro> <CodigoMunicipio>3550308</CodigoMunicipio> <Uf>SP</Uf> <Cep>37700000</Cep> </Endereco> <Contato> <Telefone>0000000000</Telefone> <Email>algum.teste@teste.com</Email> </Contato> </Tomador> </InfRps> </Rps> </ListaRps> </LoteRps> </EnviarLoteRpsEnvio> </arg1>
Alguma boa alma caridosa, saberia me ajudar? Muito obrigado desde já. | |
|
rafawebdev
Mensagens : 29 Data de inscrição : 06/11/2015
| Assunto: Re: Ao assinar:Um contexto XmlDocument é necessário para transformações envelopadas. Ter Dez 15, 2015 10:22 am | |
| Resolvido! Para quem tiver esse problema, resolvi da seguinte forma:
Estava tentando assinar a tag EnviarLoteRpsEnvio, mas na verdade era preciso assinar a tag LoteRps. | |
|