Es un servicio web que permite verificar el estatus de las solicitudes de descarga realizadas previamente a través del servicio de solicitud de descarga masiva, en caso de que la solicitud de descarga haya sido aceptada y se encuentre con estatus de terminado, este servicio de verificación devolverá los identificadores de los paquetes que conforman la solicitud de descarga.
La siguiente es una guía dirigida para la generación del XML de la petición a la operación de verificar la solicitud de descarga.
Requisitos
Para la autentificación es necesario contar con los siguientes requisitos:
- Certificado (*.cer) de nuestra FIEL.
- Llave privada (*.key) de nuestra FIEL.
- Password de llave privada.
Para la guía y creación del XML, tomaremos de ejemplo el XML que aparece dentro de la guía que nos proporciona el SAT para el consumo de esté Web Service.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:des="http://DescargaMasivaTerceros.sat.gob.mx" xmlns:xd="http://www.w3.org/2000/09/xmldsig#"> <soapenv:Header/> <soapenv:Body> <des:VerificaSolicitudDescarga> <!--Optional:--> <des:solicitud IdSolicitud="4E80345D-917F-40BB-A98F-4A73939343C5" RfcSolicitante="AXT940727FP8"> <!--Optional:--> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference URI=""> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>leZ4dK/Q/RNbckYkY7WOOnCjK5Q=</DigestValue> </Reference> </SignedInfo> <SignatureValue>BuuRjPmgk4Qwl2ER7vjL7+57WiqNZMRD12Hjfh65irEI1Cu8biQSqeHHiaZ7Nn mB/LsjyGaHQmZMW50mfnDtNzowAdytB6FS0RNUNLoajAZAdii8bYHYoW0BqrLaXSImwbZYa Hgi4TlPch1OpXZHmUOqfS1qnEEsRXVBN2DvEh1RbAYupmQxBMW75eo4HZZm/lRug44mb47 Evm9428ejTzTnu6LDPEAZEmHV4jOwRzqmM4GgiW7aEptqHOhdSxV+QzPSQ2/H5s8AZZ41LC K+3gSdCq3Kmf9S2H5R3BRS6VSam5J9xa0I2CvzJf/REwrxHsc7Xk9uXwXWOofjeTI1Bw==</SignatureValue> <KeyInfo> <X509Data> <X509IssuerSerial> <X509IssuerName>OID.1.2.840.113549.1.9.2=Responsable: ACDMA, OID.2.5.4.45=SAT970701NN3, L=Coyoacán, S=Distrito Federal, C=MX, PostalCode=06300, STREET="Av. Hidalgo 77, Col. Guerrero", E=asisnet@pruebas.sat.gob.mx, OU=Administración de Seguridad de la Información, O=Servicio de Administración Tributaria, CN=A.C. 2 de pruebas(4096)</X509IssuerName> <X509SerialNumber>292233162870206001759766198425879490509036075057</X509SerialNumber> </X509IssuerSerial> <X509Certificate>MIIGiDCCBHCgAwIBAgIUMzAwMDEwMDAwMDAzMDAwMjkwODEwDQY JKoZIhvcNAQELBQAwggFmMSAwHgYDVQQDDBdBLkMuIDIgZGUgcHJ1ZWJhcyg0MDk2K TEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWE xODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3 JtYWNpw7NuMSkwJwYJKoZIhvcNAQkBFhphc2lzbmV0QHBydWViYXMuc2F0LmdvYi5teDE mMCQGA1UECQwdQXYuIEhpZGFsZ28gNzcsIENvbC4gR3VlcnJlcm8xDjAMBgNVBBEMBTA2 MzAwMQswCQYDVQQGEwJNWDEZMBcGA1UECAwQRGlzdHJpdG8gRmVkZXJhbDESMBA GA1UEBwwJQ295b2Fjw6FuMRUwEwYDVQQtEwxTQVQ5NzA3MDFOTjMxITAfBgkqhkiG9w0 BCQIMElJlc3BvbnNhYmxlOiBBQ0RNQTAeFw0xNzEwMjUxNDU5NDhaFw0yMTEwMjQxNDU 5NDhaMIIBQTFEMEIGA1UEAxM7Q09SUE9SQVRJVk8gSU5NT0JJTElBUklPIERFIENPTlRST0w gWSBBU0VTT1JJQSBTIEEgQiBERSBDIFYxRDBCBgNVBCkTO0NPUlBPUkFUSVZPIElOTU9C SUxJQVJJTyBERSBDT05UUk9MIFkgQVNFU09SSUEgUyBBIEIgREUgQyBWMUQwQgYDVQ QKEztDT1JQT1JBVElWTyBJTk1PQklMSUFSSU8gREUgQ09OVFJPTCBZIEFTRVNPUklBIFMgQ SBCIERFIEMgVjELMAkGA1UEBhMCTVgxGTAXBgkqhkiG9w0BCQEWCmFhQHNhdC5nb2IxJ TAjBgNVBC0THEFYVDk0MDcyN0ZQOCAvIFZBQUU3MzEwMjExMjExHjAcBgNVBAUTFSAvIF ZBQUU3MzEwMjFIREZSR1IwNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBA KyJR9I+BClVEKhvf2VhoucqdbnwaKAolx3x1Ce3XeLBm8mj0z7cHiRr+u8VUNZeMWMKNsJDJ AzxQwqpjIzD7boCbxGoiNw3zEEGzkEugcCu7J4IfW7s0Bf1FWzeqwsOU6COAIfdtfa1a6nPs9G PiMO+XiuyBxPzotVhlmfcZX0Ly7GOkhLRJm5ezvSU4d7afBJ6BZEb/hrFamnICgTyzXVNkRlQU EJ1pcDQNMz4wAoRIlmcvujYgr1VTMfkLXmsJVJNun/ybojfQ1ALjCVBmCqQfw5uO1VMUYz0w O83FjEGWFK7/JdzPnTT21dpyR0z1HSGOYXHthwNjaF0uoUegUsCAwEAAaNPME0wDAYDVR 0TAQH/BAIwADALBgNVHQ8EBAMCA9gwEQYJYIZIAYb4QgEBBAQDAgWgMB0GA1UdJQQ WMBQGCCsGAQUFBwMEBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEATnZwK/g+L 90DjyeSCIw420VO8HkaxpBPqUOdZsuEo23Y//bBFXXtENsm/8djRpVM39L898+Ak4Re9Ln3p dd/RQ3AAUZtRZtaCJnxiGVOh/NyMCQLi1lH3P0ODEE7i5RBcld+9sR7LVapQ3DnxJ8/bKr4MlY +KrChU/GKjW7KjHe+CaIoALUJKy83sLekF1MPVZASf+Q3XXAtleWjQta6iBCW42MRheG/VWVx bB+w4HjNPeEcrvw/WDdamCZaEwe85ZJjhcjlZOPmt6U7Pf+rOVCWFAaIku6S+hSynvmNs2 WViqC02zl2kc757nOyU6KEFOC0U2hnsUMXIjlR0VGrU526rNS8Wprv3fofcMDv/9z+igMc01x7 mNAMI8oVdfAvGrsuCoEaPUFqCBtNbVmqOVx6FQdajyf8vACMfwp3R+S3Wk3ITgOSds5j9UA AABeXrsQ1DKFzjd87FdWpyucLpqfURIGHOoXb6cVoL1x4mQLpB1blaMokEO1NxxaaEU1I2Latt +3hS+HMTNRzqy/6dqiBaTMxljMMWfr4PO6MCd4sz0ARnuEkYGCtW7NG9Bdi0ISDw4DrKCOl q6tEPCxh91EurhNR+UYCpuFsubg2Hu26CTJZuE175E2Jp+GI6I8KrsYxKZMKIHL1CJgZSVExllm BzBGtjbxIkdqIH4307gs=</X509Certificate> </X509Data> </KeyInfo> </Signature> </des:solicitud> </des:VerificaSolicitudDescarga> </soapenv:Body> </soapenv:Envelope>
Calcular datos necesarios
Id Solicitud: Id obtenido en el Web Service de solicitud. Por ejemplo: de7f98b6-d20f-44de-ab19-b312b489eec2
RFC solicitante: Nuestro RFC.
Certificado: Al igual que en CFDI 4.0, tomar los bytes del archivo .cer de la FIEL y hacer un encode utilizando base64.
Datos del Certificado: Obtener los datos del Certificado en el campo “Issuer” o “Emisor”.
Utilizando la FIEL de pruebas, el resultado sería: OID.1.2.840.113549.1.9.2=responsable: ACDMA-SAT, OID.2.5.4.45=2.5.4.45, L=COYOACAN, S=CIUDAD DE MEXICO, C=MX, PostalCode=06370, STREET=3ra cerrada de caliz, E=oscar.martinez@sat.gob.mx, OU=SAT-IES Authority, O=SERVICIO DE ADMINISTRACION TRIBUTARIA, CN=AC UAT
Número de Certificado: Obtener el dato del Certificado en el campo “Serial number”.
Utilizando la FIEL de pruebas, el resultado sería:
3330303031303030303030353030303033343137
NOTA: Así mismo tener en cuenta, que el dato puede ser incluido como Hexadecimal o Decimal. Puede variar de acuerdo al lenguaje.
DigestValue: Se debe calcular el SHA1 en formato binario del siguiente texto (obviamente los datos cambiarán según situación)
Por texto, nos referimos a el siguiente nodo con el namespace, pero dicho nodo debe ir sin espacios.
<des:verificasolicituddescarga xmlns:des="http://DescargaMasivaTerceros.sat.gob.mx"> <des:solicitud idsolicitud="de7f98b6-d20f-44de-ab19-b312b489eec2" rfcsolicitante="EWE1709045U0"></des:solicitud> </des:verificasolicituddescarga>
Y los bytes que obtienes codearlos a base64.Utilizando este nodo, el resultado sería el siguiente: FfuNCfbSl8EGxkKTlaisLJnLD+s=
SignatureValue: Se debe calcular con un algoritmo de digestión SHA1 utilizando la llave privada de la FIEL y el siguiente texto:
<signedinfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <canonicalizationmethod algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></canonicalizationmethod> <signaturemethod algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></signaturemethod> <reference uri="#_0"> <transforms> <transform algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></transform> </transforms> <digestmethod algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></digestmethod> <digestvalue>FfuNCfbSl8EGxkKTlaisLJnLD+s=</digestvalue> </reference> </signedinfo>
NOTA: Tener en consideración que el DigestValue anteriormente calculado aparece en dicho texto.
Una vez hecha la digestión, el resultado en bytes lo codeamos en base64. Utilizando la llave privada de la FIEL de pruebas “EWE1709045U0”, el resultado sería el siguiente: fOfBvs7EiUBdoulAIGuJp5TkMyss9TE6nrdX2Af6WSrBaqXQ3ZLWPLQMJVr7lXRwwadRTw2uz/BN/6yDl/WJEwYo+0pNnvy0wROT7li0ESoyHmzUSit98NEUaD7Os0HX9HbHwxFEGauXIWrV+qgDHUhFjeJ5df2+C32+GkAcK8rFj4qjspkNUFzmpRKcogQUrgGVwIGH9Z8WS8WlDclZ3tfdXBzHPKBVczcTpxLSf4KylX32Y4nAwrj1VQPggLSfnlXsV0xnNwsyOymE8P0AUNxqO/jXD3sruNLdGudiHwcipL9I+Mxo6Y9/te/SRnCFzUL+/hg2G4C2NtBin3R7HA==
Llenado de campos
Una vez que tengamos los datos anteriormente calculados, procederíamos a ponerlos sobre la plantilla del XML que se debe enviar al SAT.
IdSolicitud: Este campo, irá en el nodo de des:solicitud.
Rfc Solicitante: Este dato también va en el nodo de des:solicitud.
Certificado: Es el texto que en el nodo
s:Envelope/s:Body/o:Security/des:VerificaSolicitudDescarga/ des:solicitud/Signature/KeyInfo/X509Data/X509Certificate
Datos del Certificado: Es el texto que en el nodo
s:Envelope/s:Body/o:Security/des:VerificaSolicitudDescarga/ des:solicitud/Signature/KeyInfo/X509Data/X509IssuerSerial/X509IssuerName
Número de Certificado: Es el texto que en el nodo
s:Envelope/s:Body/o:Security/des:VerificaSolicitudDescarga/ des:solicitud/Signature/KeyInfo/X509Data/X509IssuerSerial/X509SerialNumber
DigestValue: Es el texto que en el nodo s:Envelope/s:Body/o:Security/des:VerificaSolicitudDescarga/des:solicitud/ Signature/SignedInfo/Reference/DigestValue
SignatureValue: Es el texto que va en el nodo s:Envelope/s:Body/o:Security/des:VerificaSolicitudDescarga/des:solicitud/ Signature/SignatureValue
Documento Final
Después de hacer el cálculo y llenado de los datos, tendríamos el siguiente XML de ejemplo.
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:des="http://DescargaMasivaTerceros.sat.gob.mx" xmlns:xd="http://www.w3.org/2000/09/xmldsig#"> <s:Header/> <s:Body> <des:VerificaSolicitudDescarga> <des:solicitud IdSolicitud="de7f98b6-d20f-44de-ab19-b312b489eec2" RfcSolicitante="EWE1709045U0"> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference URI="#_0"> <Transforms> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>FfuNCfbSl8EGxkKTlaisLJnLD+s=</DigestValue> </Reference> </SignedInfo> <SignatureValue>fOfBvs7EiUBdoulAIGuJp5TkMyss9TE6nrdX2Af6WSrBaqXQ3ZLWPLQMJVr7lXRwwadRTw2uz/BN/6yDl/WJEwYo+0pNnvy0wROT7li0ESoyHmzUSit98NEUaD7Os0HX9HbHwxFEGauXIWrV+qgDHUhFjeJ5df2+C32+GkAcK8rFj4qjspkNUFzmpRKcogQUrgGVwIGH9Z8WS8WlDclZ3tfdXBzHPKBVczcTpxLSf4KylX32Y4nAwrj1VQPggLSfnlXsV0xnNwsyOymE8P0AUNxqO/jXD3sruNLdGudiHwcipL9I+Mxo6Y9/te/SRnCFzUL+/hg2G4C2NtBin3R7HA==</SignatureValue> <KeyInfo> <X509Data> <X509IssuerSerial> <X509IssuerName>OID.1.2.840.113549.1.9.2=responsable: ACDMA-SAT, OID.2.5.4.45=2.5.4.45, L=COYOACAN, S=CIUDAD DE MEXICO, C=MX, PostalCode=06370, STREET=3ra cerrada de caliz, E=oscar.martinez@sat.gob.mx, OU=SAT-IES Authority, O=SERVICIO DE ADMINISTRACION TRIBUTARIA, CN=AC UAT</X509IssuerName> <X509SerialNumber>3330303031303030303030353030303033343137</X509SerialNumber> </X509IssuerSerial> <X509Certificate>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</X509Certificate> </X509Data> </KeyInfo> </Signature> </des:solicitud> </des:VerificaSolicitudDescarga> </s:Body> </s:Envelope>
Dicho ejemplo fue realizado con la FIEL del certificado de pruebas “EWE1709045U0”.
Response
<s:envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <verificasolicituddescargaresponse xmlns="http://DescargaMasivaTerceros.sat.gob.mx"> <verificasolicituddescargaresult codestatus="5000" estadosolicitud="3" codigoestadosolicitud="5000" numerocfdis="121" mensaje="Solicitud Aceptada"> <idspaquetes>de7f98b6-d20f-44de-ab19-b312b489eec2_01</idspaquetes> </verificasolicituddescargaresult> </verificasolicituddescargaresponse> </s:body> </s:envelope>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <VerificaSolicitudDescargaResponse xmlns="http://DescargaMasivaTerceros.sat.gob.mx"> <VerificaSolicitudDescargaResult CodEstatus="300" EstadoSolicitud="0" NumeroCFDIs="0" Mensaje="Token invalido."/> </VerificaSolicitudDescargaResponse> </s:Body> </s:Envelope>