Skip to main content

Core library for SIFEN (Paraguay) electronic invoicing integration

Project description

sifen-core

PyPI version Supported Python versions License: MIT

sifen-core es una librería Python pura diseñada para facilitar la integración con SIFEN (Sistema Integrado de Facturación Electrónica Nacional) de Paraguay.

Proporciona herramientas de alto nivel para manejar todo el ciclo de vida de los Documentos Electrónicos (DE): desde la generación del XML hasta la firma digital y la comunicación con los servicios web de la SET.


Características principales

  • Generación de XML: Soporte para DE y Eventos siguiendo las especificaciones de la SET.
  • Firma Digital: Firma XMLDSig (RSA-SHA256) utilizando certificados PKCS#12 (.p12 / .pfx).
  • Comunicación SOAP: Cliente integrado para interactuar con los Web Services (recibe, lote, consulta, evento).
  • Generación de QR: Generación automática de la URL de consulta y su inserción en el XML.
  • Soporte Async: Compatibilidad con aiohttp para operaciones no bloqueantes.
  • Tipado Fuerte: Incluye archivo py.typed para soporte completo de MyPy/Type Checking.

Estructura del paquete

sifen/
├── setup.py            # Script de instalación legacy
├── pyproject.toml      # Configuración de empaquetado moderna
├── MANIFEST.in         # Asegura la inclusión de archivos extra
└── sifen/              # El paquete importable
    ├── __init__.py     # Exports principales
    ├── workflow.py     # Helpers de alto nivel (flujo completo)
    ├── xmlgen/         # Generación de XML (DE y Eventos)
    ├── xmlsign/        # Firma digital (RSA-SHA256)
    ├── qrgen/          # Generación e inserción de QR
    └── setapi/         # Cliente SOAP para la SET

Instalación

Desde PyPI (Recomendado)

pip install sifen-core

Nota: El paquete se instala como sifen-core, pero se importa como import sifen.

Desde GitHub (Desarrollo)

pip install git+https://github.com/joshuboshu/sifen.git

Uso rápido

Flujo simplificado: Generar → Firmar → QR

La librería proporciona un helper en sifen.workflow que maneja todo el proceso inicial:

from sifen.workflow import generate_de_signed_qr_xml

# Leer certificado y configurar secretos
pfx_bytes = open("certificado.p12", "rb").read()
password = "tu_contraseña"
id_csc = 1
csc_secret = "tu_csc_secreto"

# Generar XML firmado con QR listo para enviar
xml_final = generate_de_signed_qr_xml(
    params=params_dict,  # Ver documentación de parámetros
    data=data_dict,      # Datos de la factura
    pfx_bytes=pfx_bytes,
    password=password,
    id_csc=id_csc,
    csc=csc_secret,
    qr_test=True,        # True para ambiente de test
)

Paso a paso detallado

from sifen.xmlgen import generate_de_xml
from sifen.xmlsign import sign_de_xml
from sifen.qrgen import add_qr_to_signed_de_xml
from sifen.setapi import recibe

# 1. Generar XML base
xml = generate_de_xml(params=params, data=data)

# 2. Firmar digitalmente
signed = sign_de_xml(xml, pfx_bytes=pfx, password="pass")

# 3. Insertar código QR
final = add_qr_to_signed_de_xml(signed, id_csc=1, csc="secret", test=True)

# 4. Enviar a la SET
resp = recibe(id=1, xml=final, env="test", pfx_bytes=pfx, password="pass")

Ambientes SIFEN

Ambiente Valor env URL Base
Pruebas "test" https://sifen-test.set.gov.py
Producción "prod" https://sifen.set.gov.py

Requisitos

  • Python 3.10 o superior
  • Dependencias automáticas: lxml, cryptography, xmltodict, requests, aiohttp, qrcode.

Contribuir

¡Las contribuciones son bienvenidas! Si encuentras un error o quieres proponer una mejora, abre un issue o envía un pull request.

Licencia

Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.


Autor

Joshua Lombardo - GitHub

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sifen_core-1.0.1.tar.gz (113.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sifen_core-1.0.1-py3-none-any.whl (122.3 kB view details)

Uploaded Python 3

File details

Details for the file sifen_core-1.0.1.tar.gz.

File metadata

  • Download URL: sifen_core-1.0.1.tar.gz
  • Upload date:
  • Size: 113.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for sifen_core-1.0.1.tar.gz
Algorithm Hash digest
SHA256 9f9329381c85381b91cfab262607a96b093599b09ad45b0f0110600764ac3e1e
MD5 ab2b21c94348be307cc6637ffe14a28e
BLAKE2b-256 09de7bf109579e1671a407349481b9edd5e6fc0c3bdd7106cbc69b8ae706f19b

See more details on using hashes here.

File details

Details for the file sifen_core-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: sifen_core-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 122.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for sifen_core-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7ed84f21e59cd84ec68356f85a257fbd4520f85a460802c89637288d56d5a229
MD5 d61bd55ed47d0773ce73a549805bb62d
BLAKE2b-256 ced9c5694aed72d8aaac3a5e2cbd2fa1e8287333a453a1bd918d29a12a289816

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page