Documentación teórica
https://developers.sw.com.mx/knowledge-base/como-cancelar-emisor/
Este servicio sirve para consultar el estatus de un CFDI antes de enviarlo a cancelar, con él sabremos sí puede ser cancelado de forma directa, o en caso de que se necesite consultar los relacionados para poder generar la cancelación.
Ejemplo de consumo
1 2 3 4 5 6 7 8 9 10 |
<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=LAN8507268IA&rr=LAN7008173R5&tt=5800.00&id=4e87d1d7-a7d0-465f-a771-1dd216f63c1a]]> </tem:expresionImpresa> </tem:Consulta> </soapenv:Body> </soapenv:Envelope> |
Respuesta correcta
1 2 3 4 5 6 7 8 9 10 11 12 |
<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 con aceptacion</a:EsCancelable> <a:Estado>Vigente</a:Estado> <a:EstatusCancelacion i:nil="true"/> </ConsultaResult> </ConsultaResponse> </s:Body> </s:Envelope> |
Respuesta incorrecta
1 2 3 4 5 6 7 8 9 10 11 12 |
<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>N - 602: Comprobante no encontrado.</a:CodigoEstatus> <a:EsCancelable/> <a:Estado>No encontrado</a:Estado> <a:EstatusCancelacion/> </ConsultaResult> </ConsultaResponse> </s:Body> </s:Envelope> |
Consumo a través de un POST
Debido a que el SAT oculto la declaración del WebService en productivo lo consumiremos a través de un HTTP Request POST indicándole los datos correspondientes.
Ejemplo de consumo HTTP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
POST https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl HTTP/1.1 Content-type: text/xml;charset="utf-8" Accept: text/xml SOAPAction: http://tempuri.org/IConsultaCFDIService/Consulta cache-control: no-cache Host: consultaqr.facturaelectronica.sat.gob.mx accept-encoding: gzip, deflate content-length: 414 Connection: close <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=LSO1306189R5&rr=GACJ940911ASA&tt=4999.99&id=e7df3047-f8de-425d-b469-37abe5b4dabb]]></tem:expresionImpresa> </tem:Consulta> </soapenv:Body> </soapenv:Envelope> |
Respuesta obtenida
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Vary: Accept-Encoding Server: Microsoft-IIS/10.0 X-Powered-By: ASP.NET Date: Mon, 05 Nov 2018 15:54:34 GMT Connection: close Content-Length: 522 <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> |
Recomendamos utilizar POSTMAN , facilita las pruebas previas a la codificación.
Puedes importar el archivo POSTMAN-collection que proporcionamos al final del articulo para su descarga en POSTMAN para que puedas realizar pruebas funcionales del Servicio Web.
Posibles resultados
Estatus, este campo puede tener los siguientes valores:
- Vigente
- Cancelado
EsCancelable, este campo puede tener los siguientes valores:
- Cancelable con aceptación
- No cancelable
- Cancelable sin aceptación
EstatusCancelacion, puede retornar los siguientes valores:
- (null)
- En proceso
- Plazo vencido
- Solicitud rechazada
- Cancelado sin aceptación
- Cancelado con aceptación