Duvida sobre envio NFSe Rio de Janeiro - RJ

Bom Dia a Todos

Estou fazendo integração da NFSe com Prefeitura Rio de Janeiro - RJ

Consegui conectar ao WebService [https://notacarioca.rio.gov.br/WSNacional/nfse.asmx?wsdl] e também consumir o serviço [http://notacarioca.rio.gov.br/GerarNfse], porém ao enviar o xml na tag esta retornando erro: O servidor remoto retornou um erro: (400) Solicitação Incorreta.

Abaixo vou colocar mais detalhes, quem puder ajudar:

Programação VB .NET

URL_Wsdl = "https://notacarioca.rio.gov.br/WSNacional/nfse.asmx?wsdl"
SoapAction = "http://notacarioca.rio.gov.br/GerarNfse"

strXML = xmlNFSe_GerarNFSe(cls.Base(Page), Request.QueryString("nf_id"))

strRequisicao = "<?xml version=""1.0"" encoding=""utf-8""?>" &
                "<soapenv:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" " &
                                              "xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" " &
                                              "xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"">" &
                   "<soapenv:Body>" &
                      "<GerarNfseRequest xmlns=""http://notacarioca.rio.gov.br/"">" &
                         "<inputXML>" & strXML & "</inputXML>" &
                      "</GerarNfseRequest>" &
                   "</soapenv:Body>" &
                "</soapenv:Envelope>"

strErroNfeVa = wsNFSe(URL_Wsdl, SoapAction, strRequisicao, strRetorno)

Protected Function wsNFSe(strURL_Wsdl As String, 
                          strSoapAction As String, 
                          strRequisicao As String, 
                          ByRef strRetorno As String) As String

            Try

                '***********************************************************************************************
                'WebService NFSe (INICIO)
                '***********************************************************************************************
                'Informações Certificado
                '***********************************************************************************************
                Dim certificado() As String = cls.CertificadoDigital().Split("|")
                Dim Cert As X509Certificate2 = New X509Certificate2(certificado(1), certificado(2))                 'Parametro Adicional X509KeyStorageFlags.MachineKeySet
                Dim webReq As HttpWebRequest, webRes As HttpWebResponse

                Dim byteArray As Byte()
                '***********************************************************************************************

                webReq = CType(WebRequest.Create(strURL_Wsdl), HttpWebRequest)
                webReq.Headers.Add("SOAPAction", strSoapAction)
                webReq.ContentType = "text/xml; charset=utf-8;"
                webReq.Accept = "text/xml"
                webReq.Method = "POST"
                webReq.Timeout = 100000

                byteArray = System.Text.Encoding.UTF8.GetBytes(strRequisicao)                                       'Informando dados
                webReq.ContentLength = byteArray.Length                                                             'Tamanho
                webReq.ClientCertificates.Clear()                                                                   'Limpando dados certificados
                webReq.ClientCertificates.Add(Cert)                                                                 'Incluindo Certificados

                Dim strErro As String = ""

                Try

                    strErro = "[dataStream]"
                    Using dataStream As Stream = webReq.GetRequestStream()
                        dataStream.Write(byteArray, 0, byteArray.Length)                                'Incluindo dados a serem enviados
                    End Using

                    strErro = "[webRes = CType(webReq.GetResponse(), HttpWebResponse)]"
                    webRes = CType(webReq.GetResponse(), HttpWebResponse)                               'Checando Dados a serem recebidos

                    If (webRes.StatusDescription = "OK") Then
                        Dim responseStream As Stream = webRes.GetResponseStream()
                        Dim enc As Encoding = System.Text.Encoding.GetEncoding("utf-8")
                        Dim responseStreamReader As StreamReader = New StreamReader(responseStream, enc)

                        strErro = "[Lendo Retorno XML]"

                        strRetorno = responseStreamReader.ReadToEnd()

                    End If

                Catch ex As Exception
                    strRetorno = ex.Message
                    Return " [a1] " & ex.Message
                End Try

                webReq = Nothing
                webRes = Nothing

                '***********************************************************************************************
                'WebService NFSe (FIM)
                '***********************************************************************************************

                Return ""

            Catch ex As Exception
                strRetorno = ex.Message
                Return " [a2] " & ex.Message
            End Try

        End Function

XML Requisição Gerado (<Envelope… + <InputXML)

<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><GerarNfseRequest xmlns="http://notacarioca.rio.gov.br/"><inputXML><?xml version="1.0" encoding="UTF-8"?><GerarNfseEnvio xmlns="http://notacarioca.rio.gov.br/WSNacional/XSD/1/nfse_pcrj_v01.xsd"><Rps><InfRps xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd" Id="R000023"><IdentificacaoRps><Numero>000023</Numero><Serie>1</Serie><Tipo>1</Tipo></IdentificacaoRps><DataEmissao>2021-09-27T22:42:00</DataEmissao><NaturezaOperacao>1</NaturezaOperacao><OptanteSimplesNacional>2</OptanteSimplesNacional><IncentivadorCultural>2</IncentivadorCultural><Status>1</Status><Servico><Valores><ValorServicos>1</ValorServicos><ValorDeducoes>0</ValorDeducoes><ValorPis>0</ValorPis><ValorCofins>0</ValorCofins><ValorInss>0</ValorInss><ValorIr>0</ValorIr><ValorCsll>0</ValorCsll><IssRetido></IssRetido><ValorIss>0</ValorIss><OutrasRetencoes>0</OutrasRetencoes><Aliquota>0</Aliquota><DescontoIncondicionado>0</DescontoIncondicionado><DescontoCondicionado>0</DescontoCondicionado></Valores><ItemListaServico>0702</ItemListaServico><CodigoTributacaoMunicipio>3304557</CodigoTributacaoMunicipio><Discriminacao>SERVICO (DESCRICAO)Esta nota esta sendo feita para integracao com sistema ERP</Discriminacao><CodigoMunicipio>3304557</CodigoMunicipio></Servico><Prestador><Cnpj>07860645000143</Cnpj><InscricaoMunicipal>78137118</InscricaoMunicipal></Prestador><Tomador><IdentificacaoTomador><CpfCnpj><Cnpj>05330137000128</Cnpj></CpfCnpj></IdentificacaoTomador><RazaoSocial>EXA-RIO SERVICOS LTDA</RazaoSocial><Endereco><Endereco>DOM HELDER CAMARA</Endereco><Numero>5644</Numero><Complemento></Complemento><Bairro>ENGENHO DE DENTRO</Bairro><CodigoMunicipio>3304557</CodigoMunicipio><Uf>3304557</Uf><Cep>20771004</Cep></Endereco></Tomador><ConstrucaoCivil><CodigoObra>COI</CodigoObra><Art/></ConstrucaoCivil></InfRps><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI="#R000023"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>zJiECYr4kJ840K2aNYLt0agdG0U=</DigestValue></Reference></SignedInfo><SignatureValue>Ng4q2jc7kS+NiFNO5ThkY6L7SHJ9HbcfwLboZDgj3eVbSobHQu+s8Eiw70YuupVjSPICQcL6aTdJdwXhW0FYjLpExldiOKjtEdWs+T6jtOJKK1nPRPNleJH9quRE7Z84I0c1DWpdZ4o2I228TkSXHQdkSvKdlt+LLclfaiuYrmdYQM3uDaAmf3Lr6YXDoRisvlT83G+C4bbCimQWd5x7YnVyWKXRLTcohoGWWGXDkXYPbt9VTSFerS6M48LSXtMdw0WtOq2zvrI9hPl2CbZxHR9jpHcRSYlgASNirUALRKyE4RkZaGjYDoemGT7RKG6v+9ECryLTTiEz6mCuTmApOA==</SignatureValue><KeyInfo><X509Data><X509Certificate>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</X509Certificate></X509Data></KeyInfo></Signature></Rps></GerarNfseEnvio></inputXML></GerarNfseRequest></soapenv:Body></soapenv:Envelope>

Enviei ao contato fornecido pela prefeitura RJ - notacariocasis@smf.rio.rj.gov.br, obtive o retorno:

Prezado Sr. Paulo, boa tarde!

A requisição não está chegando ao servidor. Logo, como a situação reportada ocorre no lado cliente, infelizmente não podemos auxiliá-lo além das orientações já fornecidas.

Atenciosamente,
Equipe de Sistemas - Nota Carioca

Respondi o e-mail, aguardo retorno:

Boa Tarde,

Agradeço seu retorno, e compreendo o que falou, vou realizar novamente o envio, porém agora não informando o XML, ou melhor não colocando o XML na tag

Requisição:
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/><soapenv:Body><GerarNfseRequest xmlns=http://notacarioca.rio.gov.br/><inputXML></inputXML></GerarNfseRequest></soapenv:Body></soapenv:Envelope>

Retorno:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd=http://www.w3.org/2001/XMLSchema><soap:Body><GerarNfseResponse xmlns=http://notacarioca.rio.gov.br/><outputXML>&lt;GerarNfseResposta xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns=http://notacarioca.rio.gov.br/WSNacional/XSD/1/nfse_pcrj_v01.xsd&gt;&lt;ListaMensagemRetorno xmlns=http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd&gt;&lt;MensagemRetorno&gt;&lt;Codigo&gt;E972&lt;/Codigo&gt;&lt;Mensagem&gt;Mensagem XML de Pedido do serviço sem conteúdo.&lt;/Mensagem&gt;&lt;/MensagemRetorno&gt;&lt;/ListaMensagemRetorno&gt;&lt;/GerarNfseResposta&gt;</outputXML></GerarNfseResponse></soap:Body></soap:Envelope

Verifiquei seu código e o erro é que o XML tem que estar com as entidades no formato string.

Da próxima vez, teste primeiro a consulta.
É mais simples de implementar e conferir se o webservice está entendendo corretamente as operações.

Separe em outra função o envio para o webservice.
Isso vai te ajudar a reaproveitar em outras cidades.
É basicamente tudo igual, menos na Betha e Elotech.

Nesse exemplo abaixo, os namespaces estão de acordo com o modelo deles.
Isso parece estranho, mas as vezes, costuma dar problema.
Por isso tente copiar igual eu fiz:

<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notacarioca.rio.gov.br/"><x:Header/><x:Body><not:ConsultarNfsePorRpsRequest><not:inputXML>&lt;ConsultarNfseRpsEnvio xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd"&gt;
  &lt;IdentificacaoRps&gt;
    &lt;Numero&gt;2580746&lt;/Numero&gt;
    &lt;Serie&gt;1&lt;/Serie&gt;
    &lt;Tipo&gt;1&lt;/Tipo&gt;
  &lt;/IdentificacaoRps&gt;
  &lt;Prestador&gt;
    &lt;Cnpj&gt;23306087004031&lt;/Cnpj&gt;
    &lt;InscricaoMunicipal&gt;6654452&lt;/InscricaoMunicipal&gt;
  &lt;/Prestador&gt;
&lt;/ConsultarNfseRpsEnvio&gt;</not:inputXML></not:ConsultarNfsePorRpsRequest></x:Body>
</x:Envelope>

Outra coisa, não envie as requisições para o endereço com a operação wsdl.
Mas direto para a URL do serviço:
https://notacarioca.rio.gov.br/WSNacional/nfse.asmx
ou
https://homologacao.notacarioca.rio.gov.br/WSNacional/nfse.asmx

Acho que resolvendo essas coisas, vai funcionar.

1 curtida

Muito obrigado mesmo, essa sacada de trocar:

< por &lt;
e
> por &gt;

Obrigado, agora já consegui comunicar perfeitamente, vou acertando detalhes!

1 curtida