Browse Source

Adiciona assinatura ao cancelamento da NFSe

tags/0.1.5
Danimar Ribeiro 9 years ago
parent
commit
57d8dc61f8
  1. 13
      pytrustnfe/nfse/paulistana/__init__.py
  2. 2
      pytrustnfe/nfse/paulistana/templates/CancelamentoNFe.xml

13
pytrustnfe/nfse/paulistana/__init__.py

@ -3,12 +3,10 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import os import os
import logging
import suds import suds
from OpenSSL import crypto from OpenSSL import crypto
from base64 import b64encode, b64decode
from uuid import uuid4
from pytrustnfe.xml import render_xml, valida_schema, sanitize_response
from base64 import b64encode
from pytrustnfe.xml import render_xml, sanitize_response
from pytrustnfe.client import get_authenticated_client from pytrustnfe.client import get_authenticated_client
from pytrustnfe.certificado import extract_cert_and_key_from_pfx, save_cert_key from pytrustnfe.certificado import extract_cert_and_key_from_pfx, save_cert_key
from pytrustnfe.nfe.assinatura import Assinatura from pytrustnfe.nfe.assinatura import Assinatura
@ -17,15 +15,20 @@ from pytrustnfe.nfe.assinatura import Assinatura
def sign_tag(certificado, **kwargs): def sign_tag(certificado, **kwargs):
pkcs12 = crypto.load_pkcs12(certificado.pfx, certificado.password) pkcs12 = crypto.load_pkcs12(certificado.pfx, certificado.password)
key = pkcs12.get_privatekey() key = pkcs12.get_privatekey()
if 'nfse' in kwargs:
for item in kwargs['nfse']['lista_rps']: for item in kwargs['nfse']['lista_rps']:
signed = crypto.sign(key, item['assinatura'], 'SHA1') signed = crypto.sign(key, item['assinatura'], 'SHA1')
item['assinatura'] = b64encode(signed) item['assinatura'] = b64encode(signed)
if 'cancelamento' in kwargs:
signed = crypto.sign(key, kwargs['cancelamento']['assinatura'], 'SHA1')
kwargs['cancelamento']['assinatura'] = b64encode(signed)
def _send(certificado, method, **kwargs): def _send(certificado, method, **kwargs):
# A little hack to test # A little hack to test
path = os.path.join(os.path.dirname(__file__), 'templates') path = os.path.join(os.path.dirname(__file__), 'templates')
if method == 'TesteEnvioLoteRPS' or method == 'EnvioLoteRPS':
if method == 'TesteEnvioLoteRPS' or method == 'EnvioLoteRPS' \
or method == 'CancelamentoNFe':
sign_tag(certificado, **kwargs) sign_tag(certificado, **kwargs)
if method == 'TesteEnvioLoteRPS': if method == 'TesteEnvioLoteRPS':

2
pytrustnfe/nfse/paulistana/templates/CancelamentoNFe.xml

@ -1,7 +1,7 @@
<PedidoCancelamentoNFe <PedidoCancelamentoNFe
xmlns="http://www.prefeitura.sp.gov.br/nfe"> xmlns="http://www.prefeitura.sp.gov.br/nfe">
<Cabecalho Versao="1" xmlns=""> <Cabecalho Versao="1" xmlns="">
<CPFCNPJRemetente><CNPJ>{{ cancelamento.cpf_cnpj }}</CNPJ></CPFCNPJRemetente>
<CPFCNPJRemetente><CNPJ>{{ cancelamento.cnpj_remetente }}</CNPJ></CPFCNPJRemetente>
<transacao>1</transacao> <transacao>1</transacao>
</Cabecalho> </Cabecalho>
<Detalhe xmlns=""> <Detalhe xmlns="">

Loading…
Cancel
Save