¿Cómo obtener la información de un archivo que tiene solicitud de timbrado (XML o ZIP)?
Una vez que ya solicitamos el timbrado de uno o varios documentos, tendremos que esperar (dependiendo de la cantidad de documentos y de los servicios de timbrado) hasta 72 horas días hábiles para poder obtener una respuesta al proceso.
Proceso:
|
Paso
|
Acción
|
|
|
|
Primero se deberá identificar los datos que la petición GET nos solicita enviar.
URL de la solicitud
URL: La URL a la que se realizará la petición será:
Parámetros de la solicitud
FileID: El campo ID es el que se obtuvo como respuesta al momento de hacer tu solicitud POST y PUT.
|
|
Toma nota:
En los parámetros nos pide el ID de la solicitud ( fileID) como dato o bligatorio, como opcional la cantidad de elementos por página ( pageSize) y el número de página ( pageNumber). Si no se capturan los datos opcionales, la solicitud mostrará hasta 500 registros de la página número 1, por lo que si tu solicitud es de más de 500 XML deberás modificar estos campos, de lo contrario tendrás la posibilidad de poder continuar sin esos datos.
|
Headers/encabezados
En esta parte, solicitará datos que ya tenemos y con los que también realizamos nuestra solicitud POST, los cuales son:
License-Code
Subscription-Key
|
|
|
|
Formar URL con parámetros
Cabe mencionar que la petición GET nos pide enviar como parámetros ciertos datos, ya que este tipo de método no admite un cuerpo / body, para ello, hay que adjuntar a la URL como mínimo el FileID, en nuestro caso quedaría de la siguiente manera:
URL original:
"https://qasisvapiscti.azure-api.net/isv/v1/massivestamping/files/"
URL compuesta:
"https://qasisvapiscti.azure-api.net/isv/v1/massivestamping/files/{fileID}"
Como nosotros tenemos el FlieID en una variable desde las peticiones anteriores, tendremos que concatenar la cadena URL para agregar ese dato, en nuestro ejemplo quedaría de la siguiente forma:
url_status_read = "https://qasisvapiscti.azure-api.net/isv/v1/massivestamping/files/"+fileID
|
|
|
|
Realizar la solicitud GET
Una vez que ya tenemos nuestros encabezados y nuestra URL concatenada con el parámetro solicitado (FileID), el siguiente paso es realizar nuestra solicitud, para nuestro ejemplo se realizó de la siguiente forma:
response_get = requests.request("GET", url_status_read, headers=headers_status_read)
Si nuestra petición GET fue realizada de manera correcta obtendremos como respuesta un "200", esto indicará únicamente que la petición fue realizada de manera exitosa, siendo que ya fueron generados nuestros TFD's para nuestros documentos.
|
|
Recuerda:
Este proceso podría tardar hasta 72 horas días hábiles para que pueda finalizar.
|
|
|
|
|
Cómo consultar la respuesta de mi solicitud.
Una vez que hicimos la solicitud para consultar el estado de nuestra petición de timbrado, obtendremos como respuesta varios campos como se muestran a continuación:
Para el código JSON (Notación de Objeto Javascript) la respuesta será similar a la siguiente:

|
|
Importante:
Para el ejemplo anterior, verifica lo siguiente:
1.- Valida que el campo progress de nuestro objeto JSON tenga asignado un valor de 100 ya que esto nos indicará que el proceso ha finalizado, de lo contrario si es menor a 100 indicará que aún hay documentos procesándose en la solicitud, ya que este proceso podrá tomar hasta 72 horas.
2.- Cuando el proceso haya finalizado al 100%, consulta desde el campo details cada uno de los objetos que existe. Deberá existir un objeto por cada documento al que se le haya solicitado un TFD.
3.- Dentro del campo details existirá el campo status el cual nos indicará el estado del proceso, si fue Timbrado o no:
a) Si el documento es timbrado, encontraremos en el campo TFD un valor que corresponderá al timbre fiscal digital. Este valor será el que corresponderá al XML con el nombre enviado.
El nombre del XML al que pertenecerá el TFD se podrá consultar en el campo fileName.
b) Si el documento no fue timbrado, en el campo status se mostrará el estado actual del documento, y en caso de existir errores se podrán visualizar en los campos: ErrorCode, ErrorMessage y ErrorDetail.
|
|
|
|
|
El ejemplo quedó de la siguiente manera:
##Petición por el método GET
response_get = requests.request("GET", url_status_read, headers=headers_status_read)
#si la solicitud es exitosa continuamos
if response_get.status_code == 200:
#generamos un directorio de datos para consultar los objetos json recibidos
dir_response_get = response_get.json()
#almacenamos el valor del campo progress
progress = dir_response_get['progress']
#en caso de que el progreso de la solicitud ya sea del 100% este valor deberá estar en 100
if progress == 100
#generamos un directorio de datos para consultar los objetos json recibidos
details = dir_response_get['details']
#para este caso siempre sera indice 0 por que solo es un XML el que
#se envía por lo que solo es un objeto el que se recibe
#si el estado del documento fue timbrado realizamos lo siguiente
if str(details [0]['status']) == "Timbrado":
#extraemos el TFD, TIMBRE FISCAL DIGITAL
tfd = details [0]['tfd']
fileName = details [0]['fileName']
|
|
|
|
!Y listo!, ya tenemos el TFD y el nombre del archivo XML al que le corresponde, con lo anterior se ha cumplido de manera exitosa el proceso de la API para el Timbrado de CONTPAQi® Nube.
|
|
|