From 8ca47e8dfee9be71ea83a5d214b8940c2b8165a9 Mon Sep 17 00:00:00 2001 From: Alonso Date: Thu, 31 Jul 2025 10:06:12 -0600 Subject: [PATCH] Correccion en el metodo de codificacion base64 para llaves --- api/api_v1/endpoints/pedimentos.py | 4 ++-- utils/peticiones.py | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/api/api_v1/endpoints/pedimentos.py b/api/api_v1/endpoints/pedimentos.py index 432553a..ed86e6a 100644 --- a/api/api_v1/endpoints/pedimentos.py +++ b/api/api_v1/endpoints/pedimentos.py @@ -1199,7 +1199,7 @@ async def get_cove(request: ServiceRemesaSchema): documentos_procesados = [] documentos_exitosos = 0 - logger.info(f"Procesando acuses COVE para {len(coves)} documentos...") + logger.info(f"Procesando COVE para {len(coves)} documentos...") for idx, cove in enumerate(coves): documento_info = { @@ -1262,7 +1262,7 @@ async def get_cove(request: ServiceRemesaSchema): "documentos_exitosos": documentos_exitosos, "documentos_fallidos": len(coves) - documentos_exitosos }, - success_message=f"Se procesaron {documentos_exitosos}/{len(coves)} acuses cove de documentos exitosamente" + success_message=f"Se procesaron {documentos_exitosos}/{len(coves)} cove de documentos exitosamente" ) # Agregar advertencias si hubo documentos fallidos diff --git a/utils/peticiones.py b/utils/peticiones.py index 5639b83..ab3c9f2 100644 --- a/utils/peticiones.py +++ b/utils/peticiones.py @@ -9,6 +9,7 @@ import re import os from cryptography.hazmat.primitives import serialization, hashes from cryptography.hazmat.primitives.asymmetric import padding +from cryptography.hazmat.primitives.serialization import load_der_private_key from dotenv import load_dotenv from pathlib import Path from core.config import settings @@ -30,7 +31,7 @@ def load_cert_base64(cert_path: str) -> str: def sign_chain_original(key_path: str, password: str, cadena_original: str) -> str: with open(key_path, 'rb') as key_file: - private_key = serialization.load_pem_private_key( + private_key = load_der_private_key( key_file.read(), password=password.encode() if password else None ) @@ -953,9 +954,17 @@ async def get_soap_cove(credenciales, response_service, soap_controller, cove, i # Realizar petición SOAP logger.info("Realizando petición SOAP...") + # Headers específicos para este servicio SOAP + soap_headers = { + 'Content-Type': 'text/xml; charset=utf-8', + 'SOAPAction': '', + #'Accept-Encoding': 'gzip,deflate', + } + soap_response = await soap_controller.make_request_async( "ventanilla/ConsultarEdocumentService?wsdl", data=soap_xml, + headers=soap_headers ) if (soap_response) and (not soap_error(soap_response)):