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

Todo lo que no cabe en los demas foros........
iturrios3063
Mensajes: 1
Registrado: Sab Dic 29, 2018 9:19 pm

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

Mensajepor iturrios3063 » Sab Dic 29, 2018 9:25 pm

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.

jc_charlymx
Mensajes: 40
Registrado: Vie Feb 04, 2011 10:10 pm

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

Mensajepor jc_charlymx » Mar Ene 01, 2019 8:03 pm

magnífico tu aporte iturrios3063, gracias por compartirlo

saludos

Agustin
Mensajes: 46
Registrado: Mar Abr 04, 2017 1:15 pm

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

Mensajepor Agustin » Vie Ene 11, 2019 3:31 pm

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.

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

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

Mensajepor crono81 » Vie Ene 11, 2019 6:27 pm

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

Agustin
Mensajes: 46
Registrado: Mar Abr 04, 2017 1:15 pm

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

Mensajepor Agustin » Lun Ene 14, 2019 1:32 pm

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

estebanchambas
Mensajes: 51
Registrado: Mié Ago 08, 2018 2:30 pm

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

Mensajepor estebanchambas » Vie Ene 18, 2019 9:55 am

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

estebanchambas
Mensajes: 51
Registrado: Mié Ago 08, 2018 2:30 pm

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

Mensajepor estebanchambas » Sab Ene 19, 2019 12:44 pm

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': []

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

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

Mensajepor crono81 » Mié Ene 23, 2019 5:03 pm

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)

mo.rodrigo
Mensajes: 5
Registrado: Vie Jun 22, 2012 9:55 am

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

Mensajepor mo.rodrigo » Mié Ene 23, 2019 6:09 pm

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();

Avatar de Usuario
Dado
Mensajes: 15824
Registrado: Mar Jul 06, 2010 8:56 pm

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

Mensajepor Dado » Mié Ene 23, 2019 7:06 pm

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
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 5 invitados