def _render(certificado, method, **kwargs): path = os.path.join(os.path.dirname(__file__), 'templates') xml_send = render_xml(path, '%s.xml' % method, True, **kwargs) reference = '' signer = Assinatura(certificado.pfx, certificado.password) xml_send = signer.assina_xml(xml_send, reference) return xml_send
def test_assinar_xml_valido(self): pfx = open(os.path.join(self.caminho, 'teste.pfx')).read() signer = Assinatura(pfx, '123456') xml = signer.assina_xml( etree.fromstring(XML_ASSINAR), 'NFe43150602261542000143550010000000761792265342') xml_assinado = open(os.path.join(self.caminho, 'xml_assinado.xml'), 'r').read() self.assertEqual(xml_assinado, xml, 'Xml assinado é inválido')
def test_assinar_xml_valido(self): pfx = open(os.path.join(self.caminho, "teste.pfx"), "rb").read() signer = Assinatura(pfx, "123456") xml = signer.assina_xml( etree.fromstring(XML_ASSINAR), "NFe43150602261542000143550010000000761792265342", ) xml_assinado = open( os.path.join(self.caminho, "xml_valido_assinado.xml"), "r").read() self.assertEqual(xml_assinado, xml, "Xml assinado é inválido")
def test_assinar_xml_valido(self): pfx = open(os.path.join(self.caminho, 'teste.pfx')).read() signer = Assinatura(pfx, '123456') xml = signer.assina_xml( etree.fromstring(XML_ASSINAR), 'NFe43150602261542000143550010000000761792265342') xml_assinado = open(os.path.join(self.caminho, 'xml_valido_assinado.xml'), 'r').read() self.assertEqual(xml_assinado, xml, 'Xml assinado é inválido')
def _render(certificado, method, **kwargs): path = os.path.join(os.path.dirname(__file__), 'templates') xml_send = render_xml(path, '%s.xml' % method, True, **kwargs) reference = '' if method == 'RecepcionarLoteRpsV3': reference = 'rps%s' % kwargs['nfse']['lista_rps'][0]['numero'] signer = Assinatura(certificado.pfx, certificado.password) xml_send = signer.assina_xml(xml_send, reference) return xml_send
def _render(certificado, method, **kwargs): path = os.path.join(os.path.dirname(__file__), 'templates') xml_send = render_xml(path, '%s.xml' % method, True, **kwargs) reference = '' if method == 'RecepcionarLoteRpsV3': reference = 'rps%s' % kwargs['nfse']['lista_rps'][0]['numero'] signer = Assinatura(certificado.pfx, certificado.password) xml_send = signer.assina_xml(xml_send, reference) return xml_send
def _render(certificado, method, **kwargs): path = os.path.join(os.path.dirname(__file__), 'templates') xml_send = render_xml(path, '%s.xml' % method, True, **kwargs) reference = '' if method == 'GerarNfse': reference = 'r%s' % kwargs['rps']['numero'] elif method == 'CancelarNfse': reference = 'Cancelamento_NF%s' % kwargs['cancelamento']['numero_nfse'] signer = Assinatura(certificado.pfx, certificado.password) xml_send = signer.assina_xml(xml_send, reference) return xml_send.encode('utf-8')
def _render(certificado, method, **kwargs): path = os.path.join(os.path.dirname(__file__), "templates") xml_send = render_xml(path, "%s.xml" % method, True, **kwargs) reference = "" if method in ("RecepcionarLoteRpsV3", "RecepcionarLoteRpsSincronoV3"): reference = "rps%s" % kwargs["nfse"]["lista_rps"][0]["numero"] elif method == "CancelarNfseV3": reference = "C%s" % kwargs["cancelamento"]["numero_nfse"] signer = Assinatura(certificado.pfx, certificado.password) xml_send = signer.assina_xml(xml_send, reference) return xml_send
def sign_rps(path, certificado, **kwargs): if "nfse" in kwargs: lote = "" for item in kwargs["nfse"]["lista_rps"]: data = {"rps": item} xml_rps = render_xml(path, "Rps.xml", True, **data) signer = Assinatura(certificado.pfx, certificado.password) lote += signer.assina_xml( xml_rps, f"rps:{item.get('numero')}{item.get('serie')}", getchildren=True ) return lote return ""
def _render(certificado, method, **kwargs): path = os.path.join(os.path.dirname(__file__), "templates") xml_send = render_xml(path, "%s.xml" % method, True, **kwargs) reference = "" if method == "GerarNfse": reference = "r%s" % kwargs["rps"]["numero"] elif method == "CancelarNfse": reference = "Cancelamento_NF%s" % kwargs["cancelamento"]["numero_nfse"] signer = Assinatura(certificado.pfx, certificado.password) xml_send = signer.assina_xml(xml_send, reference) return xml_send.encode("utf-8")
def test_assinar_xml_invalido(self): pfx = open(os.path.join(self.caminho, "teste.pfx"), "rb").read() signer = Assinatura(pfx, "123456") self.assertRaises( Exception, signer.assina_xml, signer, etree.fromstring(XML_ERRADO), "NFe43150602261542000143550010000000761792265342", )
def _render(certificado, method, **kwargs): path = os.path.join(os.path.dirname(__file__), "templates") parser = etree.XMLParser( remove_blank_text=True, remove_comments=True, strip_cdata=False ) lote = "" referencia = "" if method == "RecepcionarLoteRps": referencia = "lote" lote = sign_rps(path, certificado, **kwargs) kwargs["lote"] = lote xml_send = render_xml(path, "%s.xml" % method, False, **kwargs) signer = Assinatura(certificado.pfx, certificado.password) xml_send = signer.assina_xml(etree.fromstring( xml_send, parser=parser), f"{referencia}", getchildren=True) return xml_send
def test_assinar_xml_senha_invalida(self): pfx = open(os.path.join(self.caminho, 'teste.pfx')).read() signer = Assinatura(pfx, '123') self.assertRaises(Exception, signer.assina_xml, signer, etree.fromstring(XML_ASSINAR), 'NFe43150602261542000143550010000000761792265342')