La url del servicio web es la siguiente:
La definición nos indica que debemos enviar la información como datos en una petición POST de la siguiente manera:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:Consulta>
<!--Optional:-->
<tem:expresionImpresa>
<![CDATA[?re={RFC_emisor}&rr={RFC_receptor}&tt={Total_Facturado}&id={UUID_timbrado}]]>
</tem:expresionImpresa>
</tem:Consulta>
</soapenv:Body>
</soapenv:Envelope>
Donde el elemento “tem:expresionImpresa” hace referencia a la expresión impresa para generar el código QR de la factura, como está especificado en el Anexo 20 del formato de la factura electrónica, donde:
Prefijo | Datos |
---|---|
re | Es el RFC del emisor de la factura. Se obtiene del nodo cfdi:Comprobante/cfdi:Emisor o del dato directo ‘re’ escaneado del código de barras. |
rr | Es el RFC del receptor de la factura. Se obtiene del nodo cfdi:Comprobante/cfdi:Receptor o del dato directo ‘rr’ escaneado del código de barras. |
tt | Es el monto total facturado. Se obtiene del nodo cfdi:Comprobante, atributo “Total” o del dato directo ‘tt’ escaneado del código de barras. |
id | Es el uuid del timbrado de la factura. Se obtiene del nodo cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital atributo “UUID” o del dato directo ‘id’ escaneado del código de barras. |
Esta es la respuesta del servicio web:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<ConsultaResponse xmlns="http://tempuri.org/">
<ConsultaResult xmlns:a="http://schemas.datacontract.org/2004/07/Sat.Cfdi.Negocio.ConsultaCfdi.Servicio" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:CodigoEstatus>S - Comprobante obtenido satisfactoriamente.</a:CodigoEstatus>
<a:EsCancelable>Cancelable sin aceptación</a:EsCancelable>
<a:Estado>Vigente</a:Estado>
<a:EstatusCancelacion/>
</ConsultaResult>
</ConsultaResponse>
</s:Body>
</s:Envelope>
Contiene un elemento “ConsultaResponse”, el cual contiene un elemento “ConsultaResult” el cual es un elemento complejo que contiene 4 sub elementos con la siguiente información:
Elemento | Dato |
---|---|
a:CodigoEstatus | Es el estatus de la petición. ‘S’ si fué un éxito, ‘N’ si no fué encontrado. |
a:EsCancelable | Indica si la factura se puede cancelar. Puede ser cancelable con o sin aceptación, o no cancelable |
a:Estado | Es el estado de la factura, ‘Vigente’ si esta activa, o puede estar cancelada. |
a:EstatusCancelacion | Es el estatus de la cancelación, ya que el proceso tiene varios pasos. |
Si escaneamos un código qr en una representación impresa de una factura CFDI válida nos da esta url:
Nos lleva a una página del mismo SAT, donde podemos hacer la verificación con un formulario, caputando la información de un captcha.
De esta misma url podemos obtener la información para generar nuestra petición POST y hacer uso del web service, ya que contiene la información necesaria: UUID, RFC Emisor, RFC Receptor y Total de la factura, para poder hacerlo automáticamente, sin necesidad del captcha.
Otra forma de hacerlo es leyendo la información del archivo *.xml y posteriormente hacer la petición al web service. Esto es en especial útil para verificar que las facturas que emitimos mediante un PAC realmente se encuentren en el SAT y con el status correcto, o para válidar que efectivamente una factura haya sido cancelada.
admin
June 11, 2020
Web Services
No Comment