Posición variante UUID

Hola buen día, tengo algunas dudas acerca de la estructura en la que viene el xml cuando solicitas el servicio de attachment
En algún punto de mi script necesito utilizar el UUID de la factura, y la manera en la que lo recupero es acceder a la posición del UUID dentro del xml, la cual últimamente ha estado variando entre facturas y esto me provoca una excepción en mi script, quisiera saber si existe la posiblidad de recuperar el UUID de la factura dentro de este endpoint para evitar futuros inconvenientes en la integración
Saludos

Hola Fabian buenas tardes

Me podrías ayudar con dos ejemplos?, uno donde venga como normalmente lo tienes y otro donde este en diferente nodo. Me puedes proporcionar un id_transaction o un id_attachment o un UUID, me gustaría revisar a detalle tu caso.

Gracias,
Saludos.

Hola Rafael buen día te adjunto los UUID de dos transacciones en las que viene en diferente nodo ademas te adjunto la posicion en la que lo tengo que buscar en una y otra

en el siguiente uuid es donde normalmente viene la info de UUID -> E178B958-EC28-4FF6-9961-A00E1F644E4A
la posición en la que lo busco es la siguiente -> $attachment['extra'][0]['c'][4]['c'][0]['a']['UUID']

en el segundo UUID es donde viene en un nodo diferente -> A55510B1-32C8-464C-B3B6-1AFDCDF740FE
y la posición en la que lo debo buscar es la siguiente -> $attachment['extra'][0]['c'][3]['c'][1]['a']['UUID']

como una solución temporal(no creo sea la mejor) hago un isset aquí $attachment['extra'][0]['c'][4] pues en el segundo UUID esa posición no existe, de esta manera puedo saber en que posición se encuentra en cada caso.
Gracias por responder

Gracias por el dato, pero tengo problema en localizar los UUIDs que me proporcionas. Podrías adicionalmente indicarme el id_credential que te regresa al consultar las transacciones?.

Ese dato lo puedes obtener consultando https://sync.paybook.com/v1/credentials

Hola Fabian,

Me puse a revisar un poco los datos que me estas pasando (tomando otros folios como ejemplo). Veo que la posición varía dependiendo del detalle en la factura. Dentro de nodo principal pueden existir los siguientes hijos: emisor, receptor, conceptos, impuestos, complemento, etc.

Quiero suponer que en algunos casos viene impuestos y conceptos, y en otros solo uno de los dos (por eso a veces esta en la posición 3 o 4).

En tu caso te recomiendo hacer un ciclo para comprobar el nodo correcto donde deberías buscar (supongo que estas usando PHP, pero esto aplica para cualquier lenguaje):

$folio = null;
foreach ($attachment['extra'][0]['c'] as $key => $value) {
    if ($attachment['extra'][0]['c'][$key]['c'] === 'CFDI:COMPLEMENTO') {
        $folio = $attachment['extra'][0]['c'][$key]['c'][1]['a']['UUID'];
    }
}

La idea es que busques dentro de CFDI:COMPLEMENTO porque ahí es donde vive el UUID.

Alternativamente puedes consultar el siguiente endpoint: https://sync.paybook.com/v1/attachments/:id_attachment/json este endpoint exporta el XML en JSON de una manera más legible que el otro endpoint.

Si utilizas este segundo endpoint puedes consultar más directo, por ejemplo:

$folio = $attachment['CFDI:COMPROBANTE']['CFDI:COMPLEMENTO']['TFD:TIMBREFISCALDIGITAL']['UUID'];


Como dato adicional existen varias versiones del CFDI, y tienen sus variantes en cuestión de como pudieras encontrar los datos. Esa especificación la puedes encontrar aquí http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Paginas/Anexo_20_version3.3.aspx por si te interesa.

Gracias,
Saludos.