Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03

Crear SolicitaDescarga de los servicios web de descarga masiva del SAT

Todo lo que no cabe en los demas foros........
Avatar de Usuario
Dado
Mensajes: 15836
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Crear SolicitaDescarga de los servicios web de descarga masiva del SAT

Mensajepor Dado » Vie Sep 28, 2018 3:59 pm

Si, asi parece, si Uri="" entonces es el "entire XML doc"

Yo estoy tratando de corregir el error de lectura de certificado, pienso que si el WS no puede leer el certificado entonces no va a poder validar la firma

Al principio pense que era porque estaba usando el certificado de prueba, pero ya estoy usando uno real y tengo el mismo error, INCLUSO CON EL PROGRAMA DE HALCON DIVINO tengo el error de certificado

Mi ultimo recurso es usar la documentacion oficial del SAT :mrgreen:
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

crono81
Mensajes: 118
Registrado: Lun Dic 16, 2013 5:55 pm

Re: Crear SolicitaDescarga de los servicios web de descarga masiva del SAT

Mensajepor crono81 » Vie Sep 28, 2018 4:13 pm

Parece que di con la respuesta, viendo el codigo de halcon divino:
esta linea de codigo:
DigestValue = cert.GetCertHash()
por lo tanto el digest value, es el hash del certificado, podrias verificar con el certificado que usaste obtener el hash y ver si da contra el valor del request: 1djKnucpcQ8MvErygIvwzz6PNUM=
segun para obtener el hash en openssl se usa esta instruccion
openssl x509 -hash -in cert.pem -noout
Espero tus comentarios

Avatar de Usuario
Dado
Mensajes: 15836
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Crear SolicitaDescarga de los servicios web de descarga masiva del SAT

Mensajepor Dado » Vie Sep 28, 2018 4:30 pm

Nop, me da un valor de solo 9 cifras : 8becd69a

Adjunto el certificado de prueba que use, incluyendo el CER original y tambien convertido en formato PEM como lo pide tu instruccion de OpenSSL
Adjuntos
HASH.zip
(3.2 KiB) Descargado 296 veces
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

crono81
Mensajes: 118
Registrado: Lun Dic 16, 2013 5:55 pm

Re: Crear SolicitaDescarga de los servicios web de descarga masiva del SAT

Mensajepor crono81 » Vie Sep 28, 2018 4:33 pm

No intentaste sacar el sha1 del hash, luego base64?

EDITO: creo que yo no obtengo el valor correcto, pues uso una version vieja de openssl, y no se cual usan en el sat, pues hay diferencias entre el hash de una version y de la otra

Avatar de Usuario
Dado
Mensajes: 15836
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Crear SolicitaDescarga de los servicios web de descarga masiva del SAT

Mensajepor Dado » Vie Sep 28, 2018 4:57 pm

El hash es el mismo no importa como lo obtengas, te imaginas ! por ejemplo que el SHA1 que calcula OpenSSL no sea el mismo SHA1 que calcula "Bouncy Castle" (libreria que usan en C#). Siempre y sin importar como lo calcules debe ser el mismo SHA1 para la misma cadena

Ya es hora de retirarme (6pm) mañana le sigo desde mi casa que es tu casa y vemos si podemos adelantarle algo mas.....buen fin de semana !
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

crono81
Mensajes: 118
Registrado: Lun Dic 16, 2013 5:55 pm

Re: Crear SolicitaDescarga de los servicios web de descarga masiva del SAT

Mensajepor crono81 » Vie Sep 28, 2018 5:05 pm

Estoy de acuerdo, pero yo lo digo por las versiones de openssl, las cuales si hacen un "openssl x509 -hash" distinto entre las dos.

EDITO: esto parecerá tonto, pero va de la mano con lo que hace el sat (al parecer no se está firmando nada aqui). Viendo mas a fondo el codigo de halcon divino:

Código: Seleccionar todo

        public Requester.SignatureType Signature()
        {
            X509Certificate2 cert = new X509Certificate2(path, password, X509KeyStorageFlags.DefaultKeySet);
            Requester.SignatureType signature = new Requester.SignatureType();
            signature.SignedInfo = new Requester.SignedInfoType();
            signature.SignedInfo.CanonicalizationMethod = new Requester.CanonicalizationMethodType();
            signature.SignedInfo.CanonicalizationMethod.Algorithm = "Algorithm";
            signature.SignedInfo.SignatureMethod = new Requester.SignatureMethodType();
            signature.SignedInfo.SignatureMethod.Algorithm = "Algorithm";
            signature.SignedInfo.Reference = new Requester.ReferenceType
            {
                DigestMethod = new Requester.DigestMethodType
                { Algorithm = "Algorithm" },
                DigestValue = cert.GetCertHash()//<<<<-----------------AQUI SE AGREGA EL HASH (supongo yo que sha1 hexadecimal base64)
            };
            signature.SignatureValue = cert.GetPublicKey();//<<<<<<<<-------Aqui se agrega la llave pubica del certificado (OJO la llave, no el certificado)
            signature.KeyInfo = new Requester.KeyInfoType
            {
                X509Data = new Requester.X509DataType
                {
                    X509IssuerSerial = new Requester.X509IssuerSerialType
                    {
                        X509IssuerName = cert.IssuerName.Name,
                        X509SerialNumber = cert.GetSerialNumberString()
                    },
                    X509Certificate = cert.RawData
                }
            };
            return signature;
        }

Teniendo esto en cuenta y viendo el request, tiene lógica

Código: Seleccionar todo

<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">
      <SolicitaDescarga xmlns="http://DescargaMasivaTerceros.sat.gob.mx">
         <solicitud RfcEmisor="AAA010101AAA" RfcSolicitante="AAA010101AAA" FechaInicial="2018-09-27T00:00:00" FechaFinal="2018-09-27T23:59:59" TipoSolicitud="CFDI">
            <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
               <SignedInfo>
                  <CanonicalizationMethod Algorithm="Algorithm"/>
                  <SignatureMethod Algorithm="Algorithm"/>
                  <Reference>
                     <DigestMethod Algorithm="Algorithm"/>
                     <DigestValue>AQUI VA EL HASH</DigestValue>   <<<<<<<---------------------------------------------------
                  </Reference>
               </SignedInfo>
               <SignatureValue>AQUI VA LA LLAVE PUBLICA</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>3230303031303030303030333030303232383135</X509SerialNumber>
                     </X509IssuerSerial>
                     <X509Certificate>AQUI VA EL CERTIFICADO</X509Certificate><<<<<<<---------------------------------------------------
                  </X509Data>
               </KeyInfo>
            </Signature>
         </solicitud>
      </SolicitaDescarga>
   </s:Body>
</s:Envelope>

Creo que esta es la solución, saludos y a ver si mañana ya tenemos la solución

Avatar de Usuario
Dado
Mensajes: 15836
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Crear SolicitaDescarga de los servicios web de descarga masiva del SAT

Mensajepor Dado » Vie Sep 28, 2018 10:00 pm

LO TENGO !

Y de hecho ya lo tenia desde ayer, sin darme cuenta :lol:

Recuerdas el problema que estuve reportando ? "CERTIFICADO INVALIDO"

Pues resulta que todo este tiempo habia estado usando certificados de sello CSD, primero uno de prueba, luego uno real, bueno aqui una nota que debe estar resaltada :

SE DEBE USAR LA e.FIRMA, CONOCIDA ANTERIORMENTE COMO FIEL, NO USAR EL CSD
ADEMAS SE DEBE USAR UN CERTIFICADO *REAL*, NO SE PUEDEN USAR CERTIFICADOS DE PRUEBA


Se debe calcular el digest del siguiente nodo, (((curiosamente NO lleva namespace, pero si estan ordenados alfabeticamente los atributos y el nodo expandido <></>)))

Código: Seleccionar todo

<des:solicitud FechaFinal="2017-10-05T00:00:00" FechaInicial="2017-10-01T00:00:00" RfcEmisor="xxxxxxxx" RfcSolicitante="xxxxxxx" TipoSolicitud="CFDI"></des:solicitud>


Aqui dejo un request y response, el unico truco curioso es que despues de crear el nodo de la firma se debe insertar enmedio del <des:solicitud> asi :

<des:solicitud Fecha....etc><Signature>blah blah</Signature></des:solicitud>

Nota que hice muchisimos cambios respecto a lo que teniamos con el programa de Halcon Divino, aqui volvi a reescribir todo el request basandome en la documentacion del SAT

(tuve que borrar datos privados, es que son reales, lo siento)
Adjuntos
response.xml
(418 Bytes) Descargado 352 veces
request.xml
(2.11 KiB) Descargado 489 veces
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

crono81
Mensajes: 118
Registrado: Lun Dic 16, 2013 5:55 pm

Re: Crear SolicitaDescarga de los servicios web de descarga masiva del SAT

Mensajepor crono81 » Sab Sep 29, 2018 10:42 am

Perfecto Dado, yo juraba que era un certificado, por como empieza (MIIBCgKCAQEAgvvCiCFDFVaYX7xdVRh.....) este es el sello del primer request, por como inicia, parece la llave publica de un certificado, por eso supuse eso.

Dirás la pseudo documentación, que más bien parece un extracto de la verdadera documentación, pues a diferencia de la documentación del cfdi, donde se indidca detalladamente como obtener la firma, aqui no lo hacen, pareciera que (como comentaba un compañero programador) el sat quisiera dar uso exclusivo a ciertos proveedores.

Pero en fin, supongo que las dos peticiones restantes van a ser más sencillas, pues el request es similar a éste.

EDITO: ya logro obtener el id de descarga, a verificar y a descargar.
Gracias.

crono81
Mensajes: 118
Registrado: Lun Dic 16, 2013 5:55 pm

Re: Crear SolicitaDescarga de los servicios web de descarga masiva del SAT

Mensajepor crono81 » Lun Oct 01, 2018 11:57 am

Buen dia Dado, que has obtenido de respuesta a la verificación de las descargas, yo en dos distintas solo obtengo:

Código: Seleccionar todo

<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="5" CodigoEstadoSolicitud="5004" NumeroCFDIs="0" Mensaje="Solicitud Aceptada"/>
      </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="5000" EstadoSolicitud="5" CodigoEstadoSolicitud="5004" NumeroCFDIs="0" Mensaje="Solicitud Aceptada"/>
      </VerificaSolicitudDescargaResponse>
   </s:Body>
</s:Envelope>

Que no se encuentra, siendo que la envié el sabado la primera y hoy la segunda.
Saludos

Avatar de Usuario
Dado
Mensajes: 15836
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Crear SolicitaDescarga de los servicios web de descarga masiva del SAT

Mensajepor Dado » Lun Oct 01, 2018 12:08 pm

Nop, tampoco he avanzado, tengo es estatus_solicitud = 1 es decir como "aceptada"

Esperaria que por lo menos avance al estatus = 2 "en proceso", pero nada

Lo malo del tuyo es que el 5 corresponde a "Rechazada" y codigo =5005 "no se encontro informacion", de ahi lo veo mas grave, como que mejor intenta otro juego de valores
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!


Volver a “Otros”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados