API
Consultar Autorizaciones Pendientes

consultarAutorizacionesPendientes

Esta sección detalla la operación para que un contribuyente receptor consulte las solicitudes de cancelación de CFDI que están pendientes de su autorización.

Descripción de la Operación

Cuando un emisor intenta cancelar un CFDI que requiere la aceptación del receptor, esta operación permite al receptor consultar cuáles son esas solicitudes pendientes. Para autenticarse ante el SAT y obtener esta lista, el receptor debe proporcionar su Certificado de Sello Digital (CSD) en formato PEM.

La respuesta incluirá una lista de los folios fiscales (UUIDs) de los comprobantes que esperan una acción (aceptación o rechazo) por parte del receptor.

Parámetros de Entrada (Input)

Parámetro Tipo de Dato Descripción
apikey string Credencial de acceso al servicio (Solicita aquí).
keyPEM string Contenido del archivo de la llave privada (.key) del receptor en formato PEM.
cerPEM string Contenido del archivo del certificado de llave pública (.cer) del receptor en formato PEM.

Parámetros de Salida (Output) - RespuestaPendientes

Atributo Tipo de Dato Descripción
code string Código de respuesta de la operación.
message string Mensaje detallado de la respuesta.
data string Lista de UUIDs de los CFDI pendientes de autorización, separados por comas.

Ejemplo de Código

Solicitud (Request)

Implementación

Herramienta y Configuración: Se utiliza la herramienta svcutil de .NET para generar el cliente a partir del WSDL.

  • Desarrollo: dotnet svcutil https://dev.facturaloplus.com/ws/servicio.do?wsdl
  • Producción: dotnet svcutil https://app.facturaloplus.com/ws/servicio.do?wsdl
// Lee el contenido de los archivos .key.pem y .cer.pem
string keyPem = File.ReadAllText("ruta/al/archivo.key.pem");
string cerPem = File.ReadAllText("ruta/al/archivo.cer.pem");

// Crea la solicitud para el servicio
var request = new consultarAutorizacionesPendientesRequest
{
    apikey = "TU_API_KEY",
    keyPEM = keyPem,
    cerPEM = cerPem
};

// Llama a la operación del servicio web
var response = await client.consultarAutorizacionesPendientesAsync(request);

// Procesa la respuesta
Console.WriteLine($"Código: {response.return.code}");
Console.WriteLine($"Mensaje: {response.return.message}");
Console.WriteLine($"UUIDs Pendientes: {response.return.data}");

Implementación

Herramienta y Configuración: Se utiliza la herramienta wsimport del JDK para generar las clases de cliente.

  • Desarrollo: wsimport -keep -verbose https://dev.facturaloplus.com/ws/servicio.do?wsdl
  • Producción: wsimport -keep -verbose https://app.facturaloplus.com/ws/servicio.do?wsdl
// Lee el contenido de los archivos PEM
String keyPem = new String(Files.readAllBytes(Paths.get("ruta/al/archivo.key.pem")));
String cerPem = new String(Files.readAllBytes(Paths.get("ruta/al/archivo.cer.pem")));

// Prepara la petición
ConsultarAutorizacionesPendientes peticion = new ConsultarAutorizacionesPendientes();
peticion.setApikey("TU_API_KEY");
peticion.setKeyPEM(keyPem);
peticion.setCerPEM(cerPem);

// Llama al servicio
RespuestaPendientes respuesta = port.consultarAutorizacionesPendientes(peticion);

// Procesa la respuesta
System.out.println("Código: " + respuesta.getCode());
System.out.println("Mensaje: " + respuesta.getMessage());
System.out.println("UUIDs Pendientes: " + respuesta.getData());

Implementación

Herramienta y Configuración: Se utiliza la librería zeep. Para instalarla, ejecuta: pip install zeep

from zeep import Client

# Inicializa el cliente con la URL del WSDL
client = Client('URL_DEL_WSDL_AQUI')

# Lee el contenido de los archivos PEM
with open('ruta/al/archivo.key.pem', 'r') as f:
    key_pem_content = f.read()
with open('ruta/al/archivo.cer.pem', 'r') as f:
    cer_pem_content = f.read()

# Llama al servicio con los parámetros requeridos
response = client.service.consultarAutorizacionesPendientes(
    apikey='TU_API_KEY',
    keyPEM=key_pem_content,
    cerPEM=cer_pem_content
)

# Imprime la respuesta
print(f"Código: {response.code}")
print(f"Mensaje: {response.message}")
print(f"UUIDs Pendientes: {response.data}")

Implementación

Herramienta y Configuración: Se requiere la extensión php-soap. Generalmente viene incluida con PHP, pero si no, se puede instalar con apt-get install php-soap (Debian/Ubuntu) o yum install php-soap (CentOS/RHEL). Asegúrate de que esté habilitada en tu php.ini.

// Inicializa el cliente SOAP
$client = new SoapClient('URL_DEL_WSDL_AQUI');

// Lee el contenido de los archivos PEM
$key_pem = file_get_contents('ruta/al/archivo.key.pem');
$cer_pem = file_get_contents('ruta/al/archivo.cer.pem');

// Prepara los parámetros para la solicitud
$params = [
    'apikey' => 'TU_API_KEY',
    'keyPEM' => $key_pem,
    'cerPEM' => $cer_pem
];

// Llama a la operación del servicio
$response = $client->consultarAutorizacionesPendientes($params);

// Muestra la respuesta
echo "Código: " . $response->return->code . "\n";
echo "Mensaje: " . $response->return->message . "\n";
echo "UUIDs Pendientes: " . $response->return->data . "\n";

Respuesta (Response)

La respuesta SOAP contiene la lista de UUIDs pendientes.

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:ws_api" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:ws_api">
    <SOAP-ENV:Body>
        <ns1:consultarAutorizacionesPendientesResponse>
            <return xsi:type="tns:RespuestaPendientes">
                <code xsi:type="xsd:string">200</code>
                <message xsi:type="xsd:string">OK</message>
                <data xsi:type="xsd:string"><![CDATA[UUID_1,UUID_2,UUID_3]]></data>
            </return>
        </ns1:consultarAutorizacionesPendientesResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Códigos de respuesta

Los códigos de respuesta para la consulta de autorizaciones pendientes CFDI son importantes para entender el resultado de la solicitud. A continuación se detallan los códigos más comunes que puedes recibir al realizar una solicitud de consulta de autorizaciones pendientes a través de la API.

Código Descripción
100 Autorizaciones pendientes entregadas
101 No hay autorizaciones pendientes
997 Parámetros inválidos
999 Error interno
300 API KEY Inválida o inexistente