El web service de SW tiene sus respuestas estandarizadas.
Lo primero que se debe validar es si la petición nos contesta con success o con error
Los posibles escenarios success son los siguientes
Success
v1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Vary: Accept-Encoding Server: Kestrel Request-Context: appId=cid-v1:f7f7980d-900d-413f-a2e3-8b66c3e25741 X-Powered-By: ASP.NET Date: Mon, 08 Jul 2019 15:14:22 GMT Content-Length: 1261 { "data": { "tfd": "<?xml version=\"1.0\" encoding=\"utf-8\"?><tfd:TimbreFiscalDigital xsi:schemaLocation=\"http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd\" Version=\"1.1\" UUID=\"84cb78b8-ba85-47d4-926a-1cdfe79fbf4b\" FechaTimbrado=\"2019-07-08T10:14:23\" RfcProvCertif=\"AAA010101AAA\" ...." }, "status": "success" } |
v2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Vary: Accept-Encoding Server: Kestrel Request-Context: appId=cid-v1:f7f7980d-900d-413f-a2e3-8b66c3e25741 X-Powered-By: ASP.NET Date: Mon, 08 Jul 2019 15:19:08 GMT Content-Length: 6891 { "data": { "tfd": "<?xml version=\"1.0\" encoding=\"utf-8\"?><tfd:TimbreFiscalDigital xsi:schemaLocation=\"http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd\" Version=\"1.1\" UUID=\"c13c7014-ff26-40fe-97bb-ebb30242ab71\" FechaTimbrado=\"2019-07-08T10:19:08\" RfcProvCertif=\"AAA010101AAA\ ...", "cfdi": "<?xml version=\"1.0\" encoding=\"utf-8\"?><cfdi:Comprobante ... " }, "status": "success" } |
v3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Vary: Accept-Encoding Server: Kestrel Request-Context: appId=cid-v1:f7f7980d-900d-413f-a2e3-8b66c3e25741 X-Powered-By: ASP.NET Date: Mon, 08 Jul 2019 15:19:51 GMT Content-Length: 5659 { "data": { "cfdi": "<?xml version=\"1.0\" encoding=\"utf-8\"?><cfdi:Comprobante ..." }, "status": "success" } |
v4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Vary: Accept-Encoding Server: Kestrel Request-Context: appId=cid-v1:f7f7980d-900d-413f-a2e3-8b66c3e25741 X-Powered-By: ASP.NET Date: Mon, 08 Jul 2019 15:20:55 GMT Content-Length: 11399 { "data": { "cadenaOriginalSAT": "||1.1|c35b1cca-8e98-4d99-8b23-5a2004593132|...", "noCertificadoSAT": "20001000000300022323", "noCertificadoCFDI": "20001000000300022815", "uuid": "c35b1cca-8e98-4d99-8b23-5a2004593132", "selloSAT": "qXX2dP...", "selloCFDI": "Xlm6KS...", "fechaTimbrado": "2019-07-08T10:20:56", "qrCode": "iVBORw0...", "cfdi": "<?xml version=\"1.0\" encoding=\"utf-8\"?><cfdi:Comprobante..." }, "status": "success" } |
Error
Error de validación
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
HTTP/1.1 400 Bad Request Transfer-Encoding: chunked Content-Type: application/json; charset=utf-8 Content-Encoding: gzip Vary: Accept-Encoding Server: Kestrel X-Powered-By: ASP.NET Date: Wed, 29 Aug 2018 18:18:58 GMT { "message": "401 - El rango de la fecha de generación no debe de ser mayor a 72 horas para la emisión del timbre.", "messageDetail": "Comprobante.Fecha: Fecha de emisión: 2021-06-09T23:58:30 Fecha del Servidor: 2021-10-14T11:54:01 La fecha de emision no se encuentra en el rango permitido: 2021-10-11T11:54:01 - 2021-10-14T11:59:01", "data": null, "status": "error" } |
Descripción del error
Exceptuando los errores del protocolo HTTP, La respuesta de error de sw siempre tienen la misma estructura json y tiene las siguientes claves message,messageDetail,data,status.
Una vez validado el status e identificar que se trata de un error, se debe acceder a las claves message y messageDetail, a continuación se describe la cualidad de cada una.
message: Código de error del SAT el cual se puede consultar en la matriz de errores publicada por el SAT los codigos de error se pueden consultar en https://developers.sw.com.mx/knowledge-base/listado-de-codigos-de-errores/.
messageDetail: Detalle del error, Aqui viene una respuesta mas digerible y entendible del error.