Página 15 de 18

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Publicado: Vie Feb 01, 2019 12:05 pm
por Axterix
Hola soy nuevo en todo esto del CFDI. Hice la siguiente petición a la solicitud de Descarga:

Código: Seleccionar todo

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:des="http://DescargaMasivaTerceros.sat.gob.mx" xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
   <s:Header />
   <s:Body>
      <des:SolicitaDescarga>
         <des:solicitud FechaFinal="2018-10-20T00:00:00" FechaInicial="2018-10-10T00:00:00" RfcEmisor="AUAC4601138F9" RfcReceptor="AUAC4601138F9" RfcSolicitante="AUAC4601138F9" TipoSolicitud="CFDI">
            <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>GWJhbnAIBv0dny/4CY++AC4LPnY=</DigestValue>
                  </Reference>
               </SignedInfo>
               <SignatureValue>WrH2ljudYMB/f88LHIgv5q5qNI2CrYPs5Xx4SVuSj67/iVR4AKBoN5sQSXaqmvbMds1jrx+NqmS2z9IYWmMXzLkz4rhOrZco+5wdRAlZfsnCPgmgml44i5K1sMs+yx5eldHOUMXIpofRYUidA7e1o9BcOVVlUwjD4f7gibqD5GSsV0e1mtL3O6oM7lEiRFDsc0eq3Ul5fHWxcxtzf93W2KUsIILT5iymLiebzqAZJcq4LpEXV9PIPNcmCTdbC1/QSrOb4Or7PkOa34Adavs33yGnmSLud9EHUrc0ZwyydklkMZmcGwAva2a5kzE0bvvyWODHHM8pxPX0ztsMVhfQHA==</SignatureValue>
               <KeyInfo>
                  <X509Data>
                     <X509IssuerSerial>
                        <X509IssuerName>OID.1.2.840.113549.1.9.2=Responsable: ACDMA, OID.2.5.4.45=SAT970701NN3, L=Coyoacán, ST=Distrito Federal, C=MX, OID.2.5.4.17=06300, STREET="Av. Hidalgo 77, Col. Guerrero", EMAILADDRESS=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>286524172099382162235533054548081509963388106800</X509SerialNumber>
                     </X509IssuerSerial>
                     <X509Certificate>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</X509Certificate>
                  </X509Data>
               </KeyInfo>
            </Signature>
         </des:solicitud>
      </des:SolicitaDescarga>
   </s:Body>
</s:Envelope>
Y me arroja el siguiente mensaje en mi respuesta:

Código: Seleccionar todo

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <SolicitaDescargaResponse xmlns="http://DescargaMasivaTerceros.sat.gob.mx">
         <SolicitaDescargaResult CodEstatus="305" Mensaje="Certificado Inválido" />
      </SolicitaDescargaResponse>
   </s:Body>
</s:Envelope>
¿Qué estoy haciendo mal que la solicitud de descarga me manda este mensaje? Actualmente lo estoy trabajando en Java e hice las encriptaciones pertinentes de SHA1 a Base64 de signature y digest value, espero puedan ayudarme. Saludos :mrgreen: .

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Publicado: Vie Feb 01, 2019 12:19 pm
por Dado
Checa este mensaje, acerca de usar la e.Fiel y no el CSD

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Publicado: Vie Feb 01, 2019 12:30 pm
por Axterix
Hola dado muchas gracias, efectivamente eso estoy usando el .cer y el .key para firmar el xml, pero aún así me arroja ese mensaje. Saludos.

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Publicado: Vie Feb 01, 2019 1:05 pm
por Dado
Si, estas usando el Cer y el Key, pero cual de los dos ?

El de la e.Firma (FIEL) ? o la del CSD?

---- 10 minutos mas tarde.......

OK, ya revise tu certificado, efectivamente es una FIEL, PERO ES DE PRUEBA, en este asunto no hay pruebas, debes usar uno REAL

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Publicado: Vie Feb 01, 2019 3:57 pm
por Saul_RS
mo.rodrigo escribió:Buenas Tardes.
Estoy realizando el consumo del "WebService" en php, pero no me deja me sale error "An error occurred when verifying security for the message.", intente copiar todo al pie de la letra., inclusive obtener el valor canonizado que ponen de ejemplo con las fechas que ponen de ejemplo ( se hace de la misma manera que para cancelar un cfdi)
Excelente aporte, hice solo unas pocas modificaciones pero la parte de consumir el servicio no me devuelve ningún valor. Si alguien pudiera apoyarme en el uso de CURL se los agradecería, aquí mi código

Código: Seleccionar todo

<?php

/* Obtener fecha con el formato requerido y sumar 5 Horas para coincidir con el horario GMT */
$hora_actual = new DateTime("America/Mexico_City");
$hora_actual->add(new DateInterval('PT5H'));
$actual = $hora_actual->format('Y-m-d\TH:i:s');

/* De la fecha obtenida sumar 5 minutos */
$hora_actual2 = new DateTime($actual);
$hora_actual2->add(new DateInterval('PT5M'));
$expira = $hora_actual2->format('Y-m-d\TH:i:s');

/* Se agregan los milisegundos y la Z para cumplir con el formato */
$actual.= '.000Z';
$expira.= '.000Z';

/* Se arma el nodo Timestamp sustituyendo los valores */
$time = '<u:Timestamp xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" u:Id="_0"><u:Created>' . $actual . '</u:Created><u:Expires>' . $expira . '</u:Expires></u:Timestamp>';

/* Aplicar el HASH y codificar en Base64 el nodo Timestamp */
$dom = new DOMDocument();
$dom->loadXML($time);
$canonicalized = $dom->C14N();
$digest = base64_encode(pack("H*", sha1($canonicalized)));

/* Firma con la Llave privada y codificar en Base64 el Digest del nodo Timestamp */
$path_key = 'D:/key_pruebas.pem';
$cadenafirmada = "";
$fp = fopen($path_key, "r");
$priv_key = fread($fp, filesize($path_key));
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);
openssl_sign($digest, $cadenafirmada, $pkeyid, OPENSSL_ALGO_SHA1);
$sello = base64_encode($cadenafirmada);
openssl_free_key($pkeyid);

/* Leer Certificado */
$path_cert = 'D:/cert_pruebas.pem';
$fp = fopen($path_cert, "r");
$public_key = fread($fp, filesize($path_cert));
fclose($fp);
$certificado = substr($public_key, 27, -27);

/* Genrerar UUID */
$uuid = "uuid-".genUuid()."-1";

/* Armar el REQUEST */
$autenticacion = '<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"><s:Header><o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><u:Timestamp u:Id="_0"><u:Created>' . $actual . '</u:Created><u:Expires>' . $expira . '</u:Expires></u:Timestamp><o:BinarySecurityToken u:Id="' . $uuid . '" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">' . $certificado . '</o:BinarySecurityToken><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>' . $digest . '</DigestValue></Reference></SignedInfo><SignatureValue>' . $sello . '</SignatureValue><KeyInfo><o:SecurityTokenReference><o:Reference ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#' . $uuid . '"/></o:SecurityTokenReference></KeyInfo></Signature></o:Security></s:Header><s:Body><Autentica xmlns="http://DescargaMasivaTerceros.gob.mx"/></s:Body></s:Envelope>';

function genUuid() {
    return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff));
}

/* Agregar Headers */
$header = array('Content-type: text/xml;charset="utf-8"', 'SOAPAction: "http://DescargaMasivaTerceros.gob.mx/IAutenticacion/Autentica"');

/* Inicializar curl */
$soap_do = curl_init();
curl_setopt($soap_do, CURLOPT_URL, 'https://cfdidescargamasivasolicitud.clouda.sat.gob.mx/Autenticacion/Autenticacion.svc');
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true);
curl_setopt($soap_do, CURLOPT_POSTFIELDS, $autenticacion);
curl_setopt($soap_do, CURLOPT_HTTPHEADER, $header);
curl_setopt($soap_do, CURLOPT_FRESH_CONNECT, true);
$respuesta = curl_exec($soap_do);
curl_close($soap_do);
var_dump($respuesta);
die();

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Publicado: Mar Feb 05, 2019 7:58 am
por Axterix
Gracias de nuevo por la ayuda Dado, de hecho me da otro error al utilizar .cer y .key de mi fiel real.

Código: Seleccionar todo

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <SolicitaDescargaResponse xmlns="http://DescargaMasivaTerceros.sat.gob.mx">
         <SolicitaDescargaResult CodEstatus="301" Mensaje="XML Mal Formado" />
      </SolicitaDescargaResponse>
   </s:Body>
</s:Envelope>
Tengo otra duda. Este error me da a pesar de que en la parte del RFC ya tengo el de mi fiel, en los 3 campos: Solicitante, Emisor y Receptor. ¿Por qué me ocurre esto? :ugeek:

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Publicado: Mar Feb 05, 2019 9:01 am
por Dado
A mi me marco una vez ese error y fue porque habia puesto la fecha final menor a la fecha inicial, pero supongo que debe haber otros motivos que causen el mismo error

Mmmmh, leyendo nuevamente tu mensaje veo que pusiste el mismo RFC en los tres campos, yo creo que eso es motivo de error tambien, es como si estuvieras pidiendo que te envien las facturas que te haces a ti mismo, debes poner datos lo mas real posible

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Publicado: Mar Feb 05, 2019 11:41 am
por Axterix
En efecto Dado, uno de los campos estaba duplicado. Ahora tengo otra duda. Ya llegue a la tercera parte de la verificación, pero no me da idspaquetes. ¿Es normal?,¿es por el servicio de que no tengo nada a descargar? o ¿qué causa sería?

Código: Seleccionar todo

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <VerificaSolicitudDescargaResponse xmlns="http://DescargaMasivaTerceros.sat.gob.mx">
         <VerificaSolicitudDescargaResult CodEstatus="5000" EstadoSolicitud="5" CodigoEstadoSolicitud="5005" NumeroCFDIs="0" Mensaje="Solicitud Aceptada" />
      </VerificaSolicitudDescargaResponse>
   </s:Body>
</s:Envelope>
Saludos :evil: .

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Publicado: Mar Feb 05, 2019 11:50 am
por Dado
Ahora tienes que esperar, puede ser desde medio dia hasta 72 horas o mas

Checa la "segunda parte" aqui

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Publicado: Mar Feb 05, 2019 11:56 am
por Axterix
¿Cómo me entero si ya están listos los paquetes? ¿Tengo que volver a verificar la solicitud con la idsolicitud utilizada? Saludos :twisted: .