SriSignXml
Servicio para firmar xml enviar a recepción y autorización, echo en fastApi, sri ecuador firma electronica con librería xades usada en python.
Install / Use
/learn @UTC1992/SriSignXmlREADME
Firma electronica Sri con Xades Ecuador
El proyecto es una api creada en FastApi con python, dados los datos de la factura permite generar el archivo xml firmado, enviarlo a recepción y autorización al SRI, en la response obtendrás la clave de acceso del xml, el archivo firmado, y atributos que te dirán si el archivo fue recibido y autorizado. Nota: Es una base que te podría servir para tu proyecto ya que la idea es usarlo como micro-servicio.
Si te sirve regalame una estrella. ⭐️⭐️⭐️⭐️
Xades
La librería Xades se usa para firmar el xml generado y esta echa en Java, funciona bien con -> jdk version "1.8.0_402". Recomiendo que lo usen y sí lo hacen en docker lo configuren de esa forma.
Python
La versión de Python con la que se creo es: Python 3.11.3
Requisitos para Instalación Local
- Python 3.11
- Java JDK 1.8 (para la librería Xades)
Instalación de Java
Windows
- Descarga JDK 1.8 desde el sitio oficial de Oracle o AdoptOpenJDK.
- Instala el JDK.
- Configura las variables de entorno:
- Ve a "Propiedades del sistema" > "Variables de entorno".
- Agrega
JAVA_HOMEcon la ruta de instalación (ej:C:\Program Files\Java\jdk1.8.0_402). - Agrega
%JAVA_HOME%\binalPATH.
Mac
- Instala Homebrew si no lo tienes:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - Instala JDK 1.8:
brew install openjdk@8 - Configura las variables:
- Agrega a
~/.zshrco~/.bash_profile:export JAVA_HOME=/usr/local/opt/openjdk@8/libexec/openjdk.jdk/Contents/Home - Agrega
export PATH=$JAVA_HOME/bin:$PATH - Ejecuta
source ~/.zshrc
- Agrega a
Linux (Ubuntu/Debian)
- Actualiza el sistema:
sudo apt update - Instala JDK 1.8:
sudo apt install openjdk-8-jdk - Verifica:
java -version - Las variables de entorno suelen configurarse automáticamente, pero si no, agrega a
~/.bashrc:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64export PATH=$JAVA_HOME/bin:$PATH- Ejecuta
source ~/.bashrc
Instalación Local
- Clonar el repositorio
- Instalar las librerías: pip install -r requirements.txt
- Colocar la firma electrónica en la carpeta app y nombrarla signature.p12 (p12 es la extensión del archivo)
- En el archivo env se encuentra la variable PASSWORD allí debes colocar la clave de tu firma electronica
- Correr la api con: uvicorn main:app --reload
- Acceder a Swagger UI en:
http://localhost:8000/docs(puerto por defecto de Uvicorn)
Ejecución con Docker (Sin Instalación Local)
Este proyecto incluye un Dockerfile que permite ejecutarlo en un contenedor Docker sin necesidad de instalar Python, Java u otras dependencias en tu sistema local (Windows, Mac o Linux). El contenedor incluye automáticamente Java 11 para la librería Xades.
Requisitos
- Docker instalado en tu sistema.
Pasos
- Clonar el repositorio.
- Colocar la firma electrónica en la carpeta
appy nombrarlasignature.p12. - Configurar el archivo
.envcon la clave de tu firma electrónica en la variablePASSWORD. - Construir la imagen Docker:
docker build -t sri-sign-xml-open-source . - Ejecutar el contenedor:
docker run -p 5003:5003 sri-sign-xml-open-source - Acceder a la API en
http://localhost:5003. - Para interactuar con la API, abre Swagger UI en tu navegador:
http://localhost:5003/docs.
Ver Logs
- Para ver logs en tiempo real:
docker logs -f <nombre_del_contenedor>(reemplaza con el nombre asignado). - Si ejecutas en modo detached:
docker run -d -p 5003:5003 --name sri-container sri-sign-xml-open-source
Cambios Recientes
- Puerto actualizado a 5003 para evitar conflictos.
- Agregado
httpxarequirements.txtpara compatibilidad con operaciones asíncronas de zeep.
Créditos
Este proyecto fue inspirado por https://github.com/cmruizg777/FirmaElectronicaPython/tree/master/db
Contacto
Para más información, recomendaciones o dudas puedes escribirme a correo electrónico.
