NFS-e WebISS: Problemas na assinatura

Estou desenvolvendo uma integração via Web Service com node e estou tendo problemas com a assinatura. Vi alguns tópicos aqui e fiz algumas alterações como mandar a assinatura apenas no LoteRps mas não resolveu.
.

Estou retornando a assinatura para o LoteRps e para o InfDeclaracaoPrestacaoServico.

Também está aqui o arquivo gerado e a resposta.

Obrigado desde já!

request.xml (8,3,KB)
response.xml (2,0,KB)

1 curtida

O campo Id precisa ser único.
Você repetiu o mesmo valor tanto para o LoteRps quanto para o InfDeclaracaoPrestacaoServico.

O campo Id está denifido no arquivo XSD com o tipo tsIdTag.
Embora esteja constando como String de tamanho 255, é melhor usar um valor apenas com letras e números.
Evite usar outros caracteres.

Sendo assim, use A999999 para o LoteRps e B999999 para InfDeclaracaoPrestacaoServico.

Outra dica é usar o envio através do método GerarNfseEnvio.
Com ele você não precisa assinar duas vezes e o retorno é imediato.
Ao invés de ficar esperando o lote processar.

1 curtida

Fiz alguns ajustes para a empresa que estava utilizando segundo o xml da homologação e deu certo pelo GerarNfseEnvio, vou utilizar ele mesmo.

Agradeço pela ajuda!

1 curtida

O envio por lote, permita enviar várias notas de uma só vez.
Mas se der erro em qualquer nota, nenhuma nota do lote é gerada.

Assim, compensa mais usar o GerarNfseEnvio.

Você faz uma mudança no sua lógica para enviar uma por uma e resolve.

2 curtidas

Consegui realizar via GerarNfseEnvio e mantive o mesmo.
Tenho mais uma dúvida na questão da consulta.
Ao mandar a requisição de ConsultarNfseRpsEnvio segundo o manual não é necessário enviar a assinatura, mas o erro que acontece é a falta de certificado digital.
Sabe como posso resolver isso? Não achei nada no manual.

1 curtida

Sim realmente não precisa assinar.
Pelo que entendi o webservice apenas espera o envio do Certificado na conexão https com o servidor.

Segue abaixo o código que uso para consulta em C#:

// ConsultarNfseRpsEnvio
WS_2105302A.NfseWSService ws1 = new WS_2105302A.NfseWSService();
ws1.Url = sService;
ws1.ClientCertificates.Add(cert);

//XDocument 
var doc = new XDocument(new XDeclaration("1.0", "UTF-8", ""));

//EnviarLoteRpsEnvio 
XNamespace xmlns = XNamespace.Get("http://www.abrasf.org.br/nfse.xsd");

XElement consultarNfseRpsEnvio = new XElement(xmlns + "ConsultarNfseRpsEnvio");
//consultarNfseRpsEnvio.Add(new XAttribute("versao", "2.02"));
//consultarNfseRpsEnvio.Add(new XAttribute(XNamespace.Xmlns + "ds", ds));

consultarNfseRpsEnvio.Add(
        new XElement(xmlns + "IdentificacaoRps",
            new XElement(xmlns + "Numero", ID),
            new XElement(xmlns + "Serie", this.serie),
            new XElement(xmlns + "Tipo", this.tipo)
        ),
        new XElement(xmlns + "Prestador",
            new XElement(xmlns + "CpfCnpj",
                new XElement(xmlns + "Cnpj", this.empresa.CNPJ)), //CNPJ
        new XElement(xmlns + "InscricaoMunicipal", this.empresa.InscricaoMunicipal)
        )
    );

doc.Add(consultarNfseRpsEnvio);
doc.Save(System.IO.Path.Combine(path, filename));
s = doc.ToString();

//Envia Lote
s = ws1.ConsultarNfsePorRps(this.Cabecalho(), s);
1 curtida

Era isso mesmo, consegui testando pelo Insomnia após adicionar o certificado digital na requisição e funcionou normalmente.

Agradeço pela ajuda!

1 curtida