1. Home
  2. [Descarga Masiva SAT] Solicitud

[Descarga Masiva SAT] Solicitud

Está guía está dirigida para la generación del XML de la petición. En nuestro GitHub, puedes encontrar ejemplos para C# y PHP, donde cada uno tiene sus propios requisitos.

Requisitos

  • Certificado (*.cer) de nuestra FIEL
  • Llave privada (*.key) de nuestra FIEL
  • Password de llave privada

Si tomamos el XML que aparece en la guía que nos proporciona el SAT para el consumo de esté Web Service, tendríamos algo como el siguiente XML

Calcular datos necesarios

Fecha inicial: Fecha de inicio, con formato AAAA-MM-DDThh:mm:ss.

Fecha final: Fecha de fin del rango, con formato AAAA-MM-DDThh:mm:ss.

RFC solicitante: Nuestro RFC. Es necesario que nuestro RFC sea incluído en alguno de los 2 siguientes campos.

RFC Emisor (opcional): Incluir este campo afectará al criterio con el que se realizará la búsqueda en el SAT. Puede llevar nuestro RFC o algún otro. También se puede omitir este campo y solo realizar la búsqueda con nuestro RFC como receptor.

RFC Receptor (opcional): Incluir este campo afectará al criterio con el que se realizará la búsqueda en el SAT. Puede llevar nuestro RFC o algún otro. También se puede omitir este campo y solo realizar la búsqueda con nuestro RFC como Emisor.

Tipo de Solicitud: Tipo de solicitud que se realizará al SAT, CFDI o Metadata

Certificado: Al igual que en CFDI 3.3, 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”.

Utilizando la FIEL de pruebas, el resultado sería: CN=A.C. 2 de pruebas(4096),O=Servicio de Administración Tributaria,OU=Administración de Seguridad de la Información,emailAddress=asisnet@pruebas.sat.gob.mx,street=Av. Hidalgo 77, Col. Guerrero,postalCode=06300,C=MX,ST=Distrito Federal,L=Coyoacán,x500UniqueIdentifier=SAT970701NN3,unstructuredName=Responsable: ACDMA

En algunos lenguajes podría verse un poco diferente.

Número de Certificado: Obtener el dato del Certificado en el campo “Serial number”.

Utilizando la FIEL de pruebas, el resultado sería: 286524172099382162235533054548081509963388106800

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)

Cuando digo texto, es el nodo con el namespace, pero dicho nodo debe ir sin espacios

Y los bytes que obtienes codearlos a base64.

Utilizando este nodo, el resultado tiene que ser: GWJhbnAIBv0dny/4CY++AC4LPnY=

SignatureValue: Se debe calcular un algoritmo de digestión SHA1 utilizando la llave privada de la FIEL y el siguiente texto:

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 “AUAC4601138F9”, el resultado tiene que ser: WrH2ljudYMB/f88LHIgv5q5qNI2CrYPs5Xx4SVuSj67/iVR4AKBoN5sQSXaqmvbMds1jrx+NqmS2z9IYWmMXzLkz4rhOrZco+5wdRAlZfsnCPgmgml44i5K1sMs+yx5eldHOUMXIpofRYUidA7e1o9BcOVVlUwjD4f7gibqD5GSsV0e1mtL3O6oM7lEiRFDsc0eq3Ul5fHWxcxtzf93W2KUsIILT5iymLiebzqAZJcq4LpEXV9PIPNcmCTdbC1/QSrOb4Or7PkOa34Adavs33yGnmSLud9EHUrc0ZwyydklkMZmcGwAva2a5kzE0bvvyWODHHM8pxPX0ztsMVhfQHA==

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.

Fecha Inicial y Fecha Final: Estos campos, irán en el nodo de des:solicitud.

RFC’s: Estos datos también van en el nodo de des:solicitud.

Tipo de Solicitud: Este dato va en el nodo des:solicitud y solo puede llevar como valor “CFDI” o “Metadata“.

Certificado: Es el texto que en el nodo s:Envelope/s:Body/o:Security/des:SolicitaDescarga/des:solicitud/ Signature/KeyInfo/X509Data/X509Certificate

Datos del Certificado: Es el texto que en el nodo s:Envelope/s:Body/o:Security/des:SolicitaDescarga/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:SolicitaDescarga/des:solicitud/ Signature/KeyInfo/X509Data/X509IssuerSerial/X509SerialNumber

DigestValue: Es el texto que en el nodo s:Envelope/s:Body/o:Security/des:SolicitaDescarga/des:solicitud/Signature/ SignedInfo/Reference/DigestValue

SignatureValue: Es el texto que va en el nodo s:Envelope/s:Body/o:Security/des:SolicitaDescarga/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.

Dicho ejemplo fue realizado con la FIEL del certificado de pruebas “AUAC4601138F9”, disponible para su descarga en este enlace.

Response exitoso

 

Response con error

 

Siguientes Pasos: 

Updated on enero 11, 2019

Was this article helpful?