Skip to content

Erro ao assinar o arquivo .xml #373

@Alexandre-Dev1010

Description

@Alexandre-Dev1010

Boa noite pessoal alguem poderia me ajudar com esse erro ? from pynfe.processamento.comunicacao import ComunicacaoSefaz
from pynfe.entidades.cliente import Cliente
from pynfe.entidades.emitente import Emitente
from pynfe.entidades.notafiscal import NotaFiscal
from pynfe.entidades.fonte_dados import _fonte_dados
from pynfe.processamento.serializacao import SerializacaoXML
from pynfe.processamento.assinatura import AssinaturaA1
from pynfe.utils.flags import CODIGO_BRASIL
from decimal import Decimal
import datetime

certificado = "certificado_digital_16_07_2024.pfx"
senha = '124816tS@'
uf = 'ba'
homologacao = True

emitente

emitente = Emitente(
razao_social='TECH SILVA TECNOLOGIA LTDA',
nome_fantasia='TECH SILVA SEGURANCA ELETRONICA',
cnpj='38158054000152', # cnpj apenas números
codigo_de_regime_tributario='1', # 1 para simples nacional ou 3 para normal
inscricao_estadual='170288972', # numero de IE da empresa
inscricao_municipal=None,
cnae_fiscal='4321500', # cnae apenas números
endereco_logradouro='10AV RUA OTAVIO TOSTA',
endereco_numero='288',
endereco_bairro='MANTEIGA',
endereco_municipio='MURITIBA',
endereco_uf='BA',
endereco_cep='44340000',
endereco_pais=CODIGO_BRASIL
)

cliente

cliente = Cliente(
razao_social='Alexandre Ferreira Cardoso',
tipo_documento='CPF', #CPF ou CNPJ
email='xande09010@email.com',
numero_documento='07308099512', # numero do cpf ou cnpj
indicador_ie=9, # 9=Não contribuinte
endereco_logradouro='Rua Laurencio Moreira',
endereco_numero='01',
endereco_complemento='casa',
endereco_bairro='centro',
endereco_municipio='Governador Mangabeira',
endereco_uf='BA',
endereco_cep='44350000',
endereco_pais=CODIGO_BRASIL,
endereco_telefone='75983635533',
)

Nota Fiscal

nota_fiscal = NotaFiscal(
emitente=emitente,
cliente=cliente,
uf=uf.upper(),
natureza_operacao='VENDA', # venda, compra, transferência, devolução, etc
forma_pagamento=0, # 0=Pagamento à vista; 1=Pagamento a prazo; 2=Outros.
tipo_pagamento=1,
modelo=55, # 55=NF-e; 65=NFC-e
serie='1',
numero_nf='111', # Número do Documento Fiscal.
data_emissao=datetime.datetime.now(),
data_saida_entrada=datetime.datetime.now(),
tipo_documento=1, # 0=entrada; 1=saida
municipio='2911600', # Código IBGE do Município
tipo_impressao_danfe=1, # 0=Sem geração de DANFE;1=DANFE normal, Retrato;2=DANFE normal Paisagem;3=DANFE Simplificado;4=DANFE NFC-e;
forma_emissao='1', # 1=Emissão normal (não em contingência);
cliente_final=1, # 0=Normal;1=Consumidor final;
indicador_destino=1,
indicador_presencial=1,
finalidade_emissao='1', # 1=NF-e normal;2=NF-e complementar;3=NF-e de ajuste;4=Devolução de mercadoria.
processo_emissao='0', #0=Emissão de NF-e com aplicativo do contribuinte;
transporte_modalidade_frete=1,
informacoes_adicionais_interesse_fisco='Mensagem complementar',
totais_tributos_aproximado=Decimal('21.06'),
)

Produto

nota_fiscal.adicionar_produto_servico(
codigo='1', # id do produto
descricao='Notebook Asus',
ncm='84713012',
#cest='0100100', # NT2015/003
cfop='5102',
unidade_comercial='UN',
ean='SEM GTIN',
ean_tributavel='SEM GTIN',
quantidade_comercial=Decimal('1'), # 12 unidades
valor_unitario_comercial=Decimal('500'), # preço unitário
valor_total_bruto=Decimal('500'), # preço total
unidade_tributavel='UN',
quantidade_tributavel=Decimal('1'),
valor_unitario_tributavel=Decimal('1'),
ind_total=1,
# numero_pedido='12345', # xPed
# numero_item='123456', # nItemPed
icms_modalidade='102',
icms_origem=0,
icms_csosn='400',
pis_modalidade='07',
cofins_modalidade='07',
valor_tributos_aprox='21.06'
)

responsável técnico

nota_fiscal.adicionar_responsavel_tecnico(
cnpj='99999999000199',
contato='TadaSoftware',
email='tadasoftware@gmail.com',
fone='11912341234'
)

exemplo de nota fiscal referenciada (devolução/garantia)

nfRef = NotaFiscalReferenciada(

chave_acesso='99999999999999999999999999999999999999999999')

nota_fiscal.notas_fiscais_referenciadas.append(nfRef)

exemplo de grupo de pessoas autorizadas a baixar xml

autxml_lista = ['99999999000199', '00000000040']

for index, item in enumerate(autxml_lista, 1):

nota_fiscal.adicionar_autorizados_baixar_xml(CPFCNPJ=item)

serialização

serializador = SerializacaoXML(_fonte_dados, homologacao=homologacao)
nfe = serializador.exportar()

assinatura

a1 = AssinaturaA1(certificado, senha)
xml = a1.assinar(nfe)

envio

con = ComunicacaoSefaz(uf, certificado, senha, homologacao)
envio = con.autorizacao(modelo='nfe', nota_fiscal=xml)

em caso de sucesso o retorno será o xml autorizado

Ps: no modo sincrono, o retorno será o xml completo ( = + )

no modo async é preciso montar o nfeProc, juntando o retorno com a NFe

from lxml import etree
if envio[0] == 0:
print('Sucesso!')
print(etree.tostring(envio[1], encoding="unicode").replace('\n','').replace('ns0:','').replace(':ns0', ''))

em caso de erro o retorno será o xml de resposta da SEFAZ + NF-e enviada

else:
print('Erro:')
print(envio[1].text) # resposta
print('Nota:')
print(etree.tostring(envio[2], encoding="unicode")) # nfe

PS D:\nfe_teste> & C:/Users/User/AppData/Local/Programs/Python/Python312/python.exe d:/nfe_teste/app_nfe.py
Traceback (most recent call last):
File "d:\nfe_teste\app_nfe.py", line 131, in
xml = a1.assinar(nfe)
^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\site-packages\pynfe\processamento\assinatura.py", line 51, in assinar
signed_root = signer.sign(
^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\site-packages\signxml\signer.py", line 202, in sign
raise InvalidInput("No PEM-encoded certificates found in string cert input data")
signxml.exceptions.InvalidInput: No PEM-encoded certificates found in string cert input data
PS D:\nfe_teste>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions