You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Primeiro assino o RPS com o seguinte método:
xmlBODY = etree.fromstring(_BODY)
xmlBODY = signer.assina_xml(xmlBODY,"rps0001")
Essa primeira assinatura sai perfeita. Em seguida tento assinar o Lote, com o seguinte método:
print(etree.dump(xmlBODY))
xmlBODY = etree.fromstring(xmlBODY)
_BODY = signer.assina_xml(xmlBODY, "lote0001")
Porém nesta segunda assinatura, a assinatura do lote é introduzida ANTES da assinatura do RPS, gerando erro de assinatura.
Tentei um segundo método:
Primeiro assino o RPS, extraindo o RPS para um arquivo xmlRPS.
xmlRPS = signer.assina_xml(xmlBODY.xpath('//d:Rps', namespaces={'d': 'http://www.abrasf.org.br/nfse.xsd'})[0], "rps0001")
Em seguida assino o lote SEM a assinatura do RPS, usando o mesmo método de assinatura do lote descrito acima.
Em seguida insiro o RPS assinado no documento, substituindo a parte sem assinatura do documento completo:
container = xmlBODY.xpath('//d:Rps', namespaces={'d': 'http://www.abrasf.org.br/nfse.xsd'})[0]
parent = container.getparent()
parent.replace(container, xmlRPS)
Dessa forma o documento fica perfeitamente assinado, porém recebo a mensagem E174 Arquivo enviado com erro na assinatura.
Um detalhe é que para poder inserir o arquivo dentro do SOUP, eu preciso primeiro converter o arquivo xml para string (o que na verdade converte para Byte, e depois eu converto para string).
Será que alguém consegue entender o que pode estar acontecendo de errado, tanto no erro do primeiro método quanto no erro do segundo método?
Obrigado!
The text was updated successfully, but these errors were encountered:
Estou tentando criar um pedido de NFSe para o webservice da Prefeitura de BH, para o seguinte xml:
_BODY = (""
"<GerarNfseEnvio xmlns="http://www.abrasf.org.br/nfse.xsd\">"
"<LoteRps Id='lote0001' versao='1.00' xmlns="http://www.abrasf.org.br/nfse.xsd\">"
"0001"
f"{_CNPJ}"
f"{_INSM}"
"1"
""
"<Rps xmlns="http://www.abrasf.org.br/nfse.xsd\">"
"<InfRps Id='rps0001' xmlns="http://www.abrasf.org.br/nfse.xsd\">"
< Informações da RPS
""
""
""
""
"")
Primeiro assino o RPS com o seguinte método:
xmlBODY = etree.fromstring(_BODY)
xmlBODY = signer.assina_xml(xmlBODY,"rps0001")
Essa primeira assinatura sai perfeita. Em seguida tento assinar o Lote, com o seguinte método:
print(etree.dump(xmlBODY))
xmlBODY = etree.fromstring(xmlBODY)
_BODY = signer.assina_xml(xmlBODY, "lote0001")
Porém nesta segunda assinatura, a assinatura do lote é introduzida ANTES da assinatura do RPS, gerando erro de assinatura.
Tentei um segundo método:
Primeiro assino o RPS, extraindo o RPS para um arquivo xmlRPS.
xmlRPS = signer.assina_xml(xmlBODY.xpath('//d:Rps', namespaces={'d': 'http://www.abrasf.org.br/nfse.xsd'})[0], "rps0001")
Em seguida assino o lote SEM a assinatura do RPS, usando o mesmo método de assinatura do lote descrito acima.
Em seguida insiro o RPS assinado no documento, substituindo a parte sem assinatura do documento completo:
container = xmlBODY.xpath('//d:Rps', namespaces={'d': 'http://www.abrasf.org.br/nfse.xsd'})[0]
parent = container.getparent()
parent.replace(container, xmlRPS)
Dessa forma o documento fica perfeitamente assinado, porém recebo a mensagem E174 Arquivo enviado com erro na assinatura.
Um detalhe é que para poder inserir o arquivo dentro do SOUP, eu preciso primeiro converter o arquivo xml para string (o que na verdade converte para Byte, e depois eu converto para string).
Será que alguém consegue entender o que pode estar acontecendo de errado, tanto no erro do primeiro método quanto no erro do segundo método?
Obrigado!
The text was updated successfully, but these errors were encountered: