Página 13 de 18

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

Publicado: Sab Dic 29, 2018 8:25 pm
por iturrios3063
Muchas gracias por su apoyo.

Desarrolle un cliente en Python que estoy utilizando en múltiples proyectos ya esta bien probado, espero les sirva lo pueden consumir desde Python o desde otro lenguaje. O bien utilizar el código para implementarlo en otros lenguajes.

https://github.com/luisiturrios/python-cfdiclient

Saludos.

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

Publicado: Mar Ene 01, 2019 7:03 pm
por jc_charlymx
magnífico tu aporte iturrios3063, gracias por compartirlo

saludos

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

Publicado: Vie Ene 11, 2019 2:31 pm
por Agustin
Buenas tardes a todos, disculpen si al mandar la solicitud de descarga masiva de x ml ya por ultimo nos da un estado de solicitud: "solicitud aceptada" hasta cuanto tiempo hay que esperar para que se comience esa descarga.

gracias.

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

Publicado: Vie Ene 11, 2019 5:27 pm
por crono81
Sientate y toma una taza de café, no se si sea por estar recien implementado el webservice o si así va a ser siempre :roll: , pero tarda, así sean 20, 100, 1000 cfdi, tarda al menos 3 dias, aunque tengo dias sin hacer una petición

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

Publicado: Lun Ene 14, 2019 12:32 pm
por Agustin
Saludos a que buena onda, pues si lo tomamos con concencia, si tarda y es que anuncia que se puede descargar esto por web server pero no sabemos que puede pasar en el inter, pero si consulto con algun asesor del sat parece que estoy en le desierto de la nada, por que no te dicen mas a detalle.

Por lo mientras espere, ya que

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

Publicado: Vie Ene 18, 2019 8:55 am
por estebanchambas
iturrios3063 escribió:Muchas gracias por su apoyo.

Desarrolle un cliente en Python que estoy utilizando en múltiples proyectos ya esta bien probado, espero les sirva lo pueden consumir desde Python o desde otro lenguaje. O bien utilizar el código para implementarlo en otros lenguajes.

https://github.com/luisiturrios/python-cfdiclient

Saludos.



Margnifico aporte. una Pregunta, el final cuando descargas y te devuelve un Base64, imagino que es un ZIP descompuesto en Base64 no?
y si es asi, como lo conviertes a ZIP?

Saludos

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

Publicado: Sab Ene 19, 2019 11:44 am
por estebanchambas
Ya vi como convertir la salida codificada de Base64 en Python:

code = "salidabase64del webserviceaqui"
decoded_string = base64.b64decode(code)
with open("cfdis.zip", "wb") as cfdis_file2:
cfdis_file2.write(decoded_string);


Me he dado cuenta que con dos veces que hagas una misma consulta sobre un mismo periodo ya no podras realizar esa consulta nunca mas.
sale Se han agotado las solicitudes de por vida, pero ¿Que pasa si por error no anotaste el numero de ID y token o si ya expiró y deseas realizar esa nueva consulta?.


por otra parte muchas veces sale al correr el webservice de verificacion, hay veces que si te devuelve en el acto "La GUIA O ID de paquetes"
pero muchas veces sale paquetes': []

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

Publicado: Mié Ene 23, 2019 4:03 pm
por crono81
estebanchambas escribió:Me he dado cuenta que con dos veces que hagas una misma consulta sobre un mismo periodo ya no podras realizar esa consulta nunca mas.
sale Se han agotado las solicitudes de por vida, pero ¿Que pasa si por error no anotaste el numero de ID y token o si ya expiró y deseas realizar esa nueva consulta?.

Yo hice prueba sólo modificando la consulta por segundos de diferencia (incluso deberia funcionar con un segundo de diferencia)

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

Publicado: Mié Ene 23, 2019 5:09 pm
por mo.rodrigo
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), si alguien le sirve mi codigo adelante

Anexo mi codigo:

Código: Seleccionar todo

<?php
/*Obtengo el tiempo y le sumo las 5 horas que menciona dado*/
$time = new DateTime("America/Mexico_City");
$time->add(new DateInterval('PT5H'));
$actual = $time->format('Y-m-d\TH:i:s');
$time2 = new DateTime($actual);
/* del tiempo obtenido le sumo 5 minutos*/
$time2->add(new DateInterval('PT5M'));
$stamp = $time2->format('Y-m-d\TH:i:s');
/*Le agregamos los milisegundos y la z*/
$actual.='.000Z';
$stamp.='.000Z';
/*mensaje a canonizar*/
$entrada='<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>'.$stamp.'</u:Expires></u:Timestamp>';
$dom = new DOMDocument();
$dom->loadXML($entrada);
$canonicalized = $dom->C14N();
$digest = base64_encode(pack("H*", sha1($canonicalized)));
/*cadena a sellar*/
$cadena = '<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><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>';
/*guardado en archivo para sellar con open ssl*/
$RutaCadena = '/var/www/sitios/webdev/web/storage/prueba/CMA/cadena.txt';
$fp = fopen($RutaCadena, 'w+');
fwrite($fp, $cadena);
fclose($fp);
/*sellando con la key en formato pem*/
$sello = shell_exec('openssl dgst -sha1 -binary -sign /var/www/sitios/webdev/web/storage/prueba/CMA/Claveprivada_FIEL_CMA031224TX5_20171006_083942.key.pem'." $RutaCadena | openssl enc -base64 -A ");
/*obteniendo el certificado para anexar al sobre*/
$archivo='/var/www/sitios/webdev/web/storage/prueba/CMA/CMA031224TX5_00001000000407730196.cer';
$gestor = fopen($archivo, "r");
$contenido = fread($gestor, filesize($archivo));
$certificado=base64_encode($contenido);
/*sobre a enviar*/
$otro='<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>'.$stamp.'</u:Expires>
         </u:Timestamp>
         <o:BinarySecurityToken u:Id="uuid-7de252ad-a383-458d-a467-8aadb076df4f-1" 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-7de252ad-a383-458d-a467-8aadb076df4f-1"/>
               </o:SecurityTokenReference>
            </KeyInfo>
         </Signature>
      </o:Security>
   </s:Header>
   <s:Body>
      <Autentica xmlns="http://DescargaMasivaTerceros.gob.mx"/>
   </s:Body>
</s:Envelope>';
/*agregando los headers que pone dado*/
$header = array('Content-type: text/xml;charset="utf-8"',
                        'SOAPAction: "http://DescargaMasivaTerceros.gob.mx/IAutenticacion/Autentica"');
/*inicializando 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, $otro);
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: Mié Ene 23, 2019 6:06 pm
por Dado
En horario de verano debes restar 5 horas

Ahorita que estamos en el horario normal, debes restar SEIS horas, y eso puede ser el motivo del error de seguridad que estas teniendo

Esto ademas significa que tienes que estar checando si estas en horario normal o en horario de verano, en mensajes pasados publique codigo en Delphi para solventar esto