Cliente Python para la API de DocDigitales, diseñado para ejecutarse como una función Lambda de AWS.
- Python 3.10 o superior
- AWS Lambda
- Credenciales de API de DocDigitales
- Clonar el repositorio:
git clone <url-del-repositorio>
cd docdigitales-python- Crear un entorno virtual:
python -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate- Instalar dependencias:
pip install -r requirements.txtdocdigitales-python/
├── README.md
├── requirements.txt
├── src/
│ ├── __init__.py
│ ├── client.py # Cliente principal de la API
│ ├── exceptions.py # Excepciones personalizadas
│ └── models.py # Modelos de datos
├── tests/
│ ├── __init__.py
│ └── test_client.py
└── lambda_function.py # Función Lambda
-
Configurar la variable de entorno
DOCDIGITALES_API_KEYen AWS Lambda con tu clave de API. -
Configurar los siguientes parámetros en AWS Lambda:
- Runtime: Python 3.10
- Handler: lambda_function.lambda_handler
- Memory: 256 MB (mínimo recomendado)
- Timeout: 30 segundos (ajustar según necesidades)
La función Lambda acepta las siguientes acciones:
{
"action": "facturar",
"factura": {
"cliente": {
"rfc": "XAXX010101000",
"nombre": "Cliente Ejemplo",
"email": "cliente@ejemplo.com"
},
"conceptos": [
{
"clave_producto": "001",
"descripcion": "Producto 1",
"cantidad": 1,
"precio_unitario": 100.00,
"unidad": "PIEZA"
}
]
}
}{
"action": "consultar",
"factura_id": "12345"
}{
"action": "cancelar",
"factura_id": "12345",
"motivo": "Motivo de cancelación"
}{
"action": "descargar_pdf",
"factura_id": "12345"
}{
"action": "descargar_xml",
"factura_id": "12345"
}- Crear un archivo ZIP con el contenido del proyecto:
zip -r function.zip . -x "venv/*" "*.pyc" "__pycache__/*"- Subir el archivo ZIP a AWS Lambda a través de la consola de AWS o usando AWS CLI.
Para probar localmente:
- Crear un archivo
.envcon tus credenciales:
DOCDIGITALES_API_KEY=tu_api_key
- Ejecutar pruebas:
pytest tests/- Las credenciales de API se manejan a través de variables de entorno
- Se recomienda usar AWS Secrets Manager para almacenar el API_KEY
- Implementar rate limiting según las necesidades
- Usar IAM roles apropiados para la Lambda
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.