Integration with PAC’s
Pick your PAC
from satcfdi.pacs import Environment, PAC
# Use your preferred PAC to stamp your Comprobante
pac = PAC(environment=Environment.TEST) # dummy
# from satcfdi.pacs.diverza import Diverza
# pac = Diverza(rfc="ABC",id="12345",token="$123456&", environment=Environment.TEST)
# from satcfdi.pacs.prodigia import Prodigia
# pac = Prodigia(user="1234", password="pass", contrato="1234", environment=Environment.TEST)
# from satcfdi.pacs.comerciodigital import ComercioDigital
# pac = ComercioDigital(user="1234", password="pass", environment=Environment.TEST)
# from satcfdi.pacs.swsapien import SWSapien
# pac = SWSapien(token="$1234%", environment=Environment.TEST)
# from satcfdi.pacs.finkok import Finkok
# pac = Finkok(username="user@email.com", password="password_or_token", environment=Environment.TEST)
Stamp
from satcfdi.pacs import Accept
doc = pac.stamp(invoice, accept=Accept.XML_PDF)
with open('_stamped_.xml', 'wb') as f:
f.write(doc.xml)
Recover Comprobantes
import datetime
from satcfdi.models import Signer
from satcfdi.pacs.sat import SAT, TipoDescargaMasivaTerceros
# Load fiel
signer = Signer.load(
certificate=open('csd/xiqb891116qe4.cer', 'rb').read(),
key=open('csd/xiqb891116qe4.key', 'rb').read(),
password=open('csd/xiqb891116qe4.txt', 'r').read()
)
sat = SAT(
signer=signer
)
fecha_final = datetime.date.today()
fecha_inicial = fecha_final - datetime.timedelta(days=10)
# Recover Comprobantes
for paquete_id, p in sat.recover_comprobante_iwait(
# id_solicitud="",
fecha_inicial=fecha_inicial,
fecha_final=fecha_final,
rfc_receptor=sat.signer.rfc,
tipo_solicitud=TipoDescargaMasivaTerceros.CFDI
):
with open(f"{paquete_id}.zip", "wb") as f:
f.write(p)
Status Comprobante
from satcfdi.cfdi import CFDI
from satcfdi.pacs.sat import SAT
sat = SAT()
res = sat.status(
cfdi=CFDI.from_file('comprobante.xml')
)
print(res)
Listado 69B
from satcfdi.pacs import TaxpayerStatus
from satcfdi.pacs.sat import SAT
sat_service = SAT()
res = sat_service.list_69b('AAL081211JP0')
assert res == TaxpayerStatus.DEFINITIVO