Imagen

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


CARTA PORTE V3.1

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


.

Web Service para Validar del SAT

Cualquier cambio que haga el SAT referente a la F.E. sera comentada aqui
naringas
Mensajes: 22
Registrado: Mié Ago 10, 2011 9:58 am

Web Service para Validar del SAT

Mensaje por naringas »

Les comparto que enterrado en los recónditos rincones del sito del SAT encontré el Web Service que proveen para validación de CFDs de servidor a servidor (así le dicen ellos).

Este documento lo explica todo ftp://ftp2.sat.gob.mx/asistencia_ftp/pu ... idador.pdf

El web service (como indica el PDF) esta en https://tramitesdigitales.sat.gob.mx/Si ... DsExt.asmx

Implemente una validación con este esquema en PHP, y es bastante sencillo usando PHP 5 y sus librerias SOAP y DOM XML (si hubiera interés les comparto más, sin embargo lo que implemente es parte de una solución mas grande con Drupal 7)

Adjunto el XSD que viene incluido en el PDF pero ya limpio, indentado, y corregido (cambié & por & y quite algunos caracteres extra).

También les pongo un ejemplo de un XML que pasa validación con este XSD. Este es el XML que deben enviar dentro del SOAP

Código: Seleccionar todo

<?xml version="1.0" encoding="UTF-8"?>
<ColleccionFoliosCfd xmlns="http://www.sat.gob.mx/Asf/Sicofi/ValidacionFoliosCFD/1.0.0">
  <Folio>
    <Id>1</Id>
    <Rfc>AAA121212AAA</Rfc>
    <Serie>FA</Serie>
    <NumeroFolio>9</NumeroFolio>
    <NumeroAprobacion>12345</NumeroAprobacion>
    <AnioAprobacion>2010</AnioAprobacion>
    <CertificadoNumeroSerie>0000011111111</CertificadoNumeroSerie>
    <CertificadoFechaEmision>2011-12-12T14:20:15</CertificadoFechaEmision>
  </Folio>
</ColleccionFoliosCfd>
Como se daran cuenta los datos (RFC, numero de folio, etc...) son inventados.

Esto es un ejemplo de lo que contesta (no corresponde a la petición ya que esta respuesta tiene más de un <Id>)

Código: Seleccionar todo

<cfd:RespuestaFoliosCfd xmlns:cfd="http://www.sat.gob.mx/Asf/Sicofi/RespuestaFoliosCFD/1.0.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <cfd:ResultadoValidacion id="firmar">
        <cfd:Id>1</cfd:Id>
        <cfd:ResultadoValidacion>VV</cfd:ResultadoValidacion>
    </cfd:ResultadoValidacion>
    <cfd:ResultadoValidacion id="firmar">
        <cfd:Id>2</cfd:Id>
        <cfd:ResultadoValidacion>VV</cfd:ResultadoValidacion>
    </cfd:ResultadoValidacion>
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        <SignedInfo>
            <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
            <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
            <Reference URI="#firmar">
                <Transforms>
                    <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                </Transforms>
                <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
                <DigestValue>...=</DigestValue>
            </Reference>
        </SignedInfo>
        <SignatureValue>...</SignatureValue>
        <KeyInfo>
            <X509Data>
                <X509Certificate>...</X509Certificate>
            </X509Data>
        </KeyInfo>
    </Signature>
</cfd:RespuestaFoliosCfd>
Aquí quite algunos campos muy largos de la Firma que incluye la respuesta (que no esta documentada en el PDF)
Adjuntos
SOAPrequest.xsd.txt
XSD de la petición SOAP que se envia al SAT.
(4.51 KiB) Descargado 1694 veces
Avatar de Usuario
Dado
Mensajes: 15981
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Web Service para validar del SAT

Mensaje por Dado »

Vaya! por fin lo publicaron.

Ya se sabia de este servicio desde hace un tiempo, el *pequeño* inconveniente es que NO HABIA LA DIRECCION donde consumir el servicio, pero veo que ya esta publicado, pues este año si que tenemos muchos "regalos" je je je

GRACIAS POR LA INFORMACION.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
naringas
Mensajes: 22
Registrado: Mié Ago 10, 2011 9:58 am

Re: Web Service para Validar del SAT

Mensaje por naringas »

Me parece que el servicio arroja resultados incorrectos en algunos casos.

La validación a través de este web service me da como resultado VI que según el PDF significa que el certificado es invalido. Sin embargo la validación por medio de la aplicación JAVA, por medio de la página (https://tramitesdigitales.sat.gob.mx/Si ... taria.aspx), usando validaCFD e incluso con mi propia validación local (descargando los archivos del SAT a mi computadora) dicen que el certificado es vigente a la fecha de emisión del CFD.

Me parece que el web service da el resultado incorrecto cuando el RFC emisor ha tenido más de un certificado y uno de ellos (o tal vez solo el primero) ya no está activo.

¿Alguien puede confirmar esto?
¿Cómo se le podría avisar al SAT sobre esto?
msanchez
Mensajes: 1
Registrado: Mar Mar 20, 2012 1:02 pm

Re: Web Service para Validar del SAT

Mensaje por msanchez »

Hola a todos y antes que todo muchas gracias por el post, me ha sido de mucha ayuda, de hecho entre este post y otro que encontré en la Web pude llegar al siguiente código de PHP (Soy muy novato en los conceptos del uso de Webservices, por favor ténganme paciencia) para validar el XML que sugieren como aceptable ante el webservice aquí en el post original pero el resultado que estoy obteniendo es una cadena como de sello digital o algo encriptado, es obvio que estoy haciendo algo mal, cualquier ayuda es de mucha ayuda :)

Pasar el XML como variable directa al webservice

Código: Seleccionar todo

<?php
	//Cadena lista para pasarla como variable directamente , contiene diagonales invertidas para escapar las comillas dobles
	$cadena_xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?><ColleccionFoliosCfd xmlns=\"http://www.sat.gob.mx/Asf/Sicofi/ValidacionFoliosCFD/1.0.0\"><Folio><Id>1</Id><Rfc>AAA121212AAA</Rfc><Serie>FA</Serie><NumeroFolio>9</NumeroFolio><NumeroAprobacion>12345</NumeroAprobacion><AnioAprobacion>2010</AnioAprobacion><CertificadoNumeroSerie>0000011111111</CertificadoNumeroSerie><CertificadoFechaEmision>2011-12-12T14:20:15</CertificadoFechaEmision></Folio></ColleccionFoliosCfd>";
	
		$client = new SoapClient("https://tramitesdigitales.sat.gob.mx/Sicofi.wsExtValidacionCFD/WsValidacionCFDsExt.asmx?WSDL");
		$result = $client->ValidarXmlCFD(array('xml' => $cadena_xml));
		// Note that $array contains the result of the traversed object structure
		$array = $result->ValidarXmlCFDResult;
		
		//ValidarXmlCFD
		print_r ($array);
		echo "<br />";
		echo "<br />";
		var_dump($result);
?>

Pasar el XML a traves de POST como contenido de un campo en formulario al webservice

Código: Seleccionar todo

<?php
if(!empty($_POST) && isset($_POST))
	{
	$cadena_xml = (string) $_POST['cadena_xml'];

	//Cadena limpia lista para copiar y pegar en el campo del formulario
      /*	$cadena_xml="<?xml version="1.0" encoding="UTF-8"?><ColleccionFoliosCfd xmlns="http://www.sat.gob.mx/Asf/Sicofi/ValidacionFoliosCFD/1.0.0"><Folio><Id>1</Id><Rfc>AAA121212AAA</Rfc><Serie>FA</Serie><NumeroFolio>9</NumeroFolio><NumeroAprobacion>12345</NumeroAprobacion><AnioAprobacion>2010</AnioAprobacion><CertificadoNumeroSerie>0000011111111</CertificadoNumeroSerie><CertificadoFechaEmision>2011-12-12T14:20:15</CertificadoFechaEmision></Folio></ColleccionFoliosCfd>";
	*/
		$client = new SoapClient("https://tramitesdigitales.sat.gob.mx/Sicofi.wsExtValidacionCFD/WsValidacionCFDsExt.asmx?WSDL");
		$result = $client->ValidarXmlCFD(array('xml' => $cadena_xml));
		// Note that $array contains the result of the traversed object structure
		$array = $result->ValidarXmlCFDResult;
		
		//ValidarXmlCFD
		print_r ($array);
		echo "<br />";
		echo "<br />";
		var_dump($result);
	}
else
	{
		?>
		<form id="validar_xmls" action="index.php" method="post">
			Pegar el contenido del XML a enviar por SOAP<br>
			<textarea name="cadena_xml" cols="75" rows="6" id="cadena_xml"></textarea>
			<input id="submit" name="submit" type="submit" value="submit" />
		</form>
		<?php
	}
?>

En el codigo de arriba se presentan 2 escenarios y ambos escenarios funcionan desde el punto de vista que el webservice regresa algo como lo que sigue, por favor tomen en cuenta que la primera salida o resultado es el del print_r y la siguiente el de Var_dump:

Código: Seleccionar todo

1IIJvdurN00ckBTgdyYq2BmLHIhSAo=bIM7ZC0mbBfPwzHhGU24e8cyyVhmI+gS4rUBiFrsaoRkEe6X25kPVH9Zv65Q4Ncb0lvp3A2XPyIL6egOTp3u7r6lf4kV3ZNHn5prKpo+6XIJS4jkkicSWo5hDN5QgSS/4XsOYn1riQwlbHk4cScQHtw+v89sVIEcG6rGI+nMVh0=MIIDBDCCAm2gAwIBAgIJAJhhI7VVwVfPMA0GCSqGSIb3DQEBBQUAMGAxCzAJBgNVBAYTAk1YMQ0wCwYDVQQIEwRELkYuMQ8wDQYDVQQHEwZNZXhpY28xDTALBgNVBAoTBFNIQ1AxDDAKBgNVBAsTA1NBVDEUMBIGA1UEAxQLc2ljb2ZpX3Byb2QwHhcNMTAwNzE5MjEzNDI1WhcNMTEwNzE5MjEzNDI1WjBgMQswCQYDVQQGEwJNWDENMAsGA1UECBMERC5GLjEPMA0GA1UEBxMGTWV4aWNvMQ0wCwYDVQQKEwRTSENQMQwwCgYDVQQLEwNTQVQxFDASBgNVBAMUC3NpY29maV9wcm9kMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBJXEOy1yWJ7sGBZO1ZOmmNhv0Qds9CyHUDMCUZinfGkyezL1J8l4k336Z9OHv2Kxr+o1yWhm0YU0fSYaz9nLLv4YRJdXOyc18svMKFXTE4DwfWKNUWHaXYfLrmwU3lChJqImB3O9nDDlXlKpGTP6wYONYQUaVub/t2mabG/aCFQIDAQABo4HFMIHCMB0GA1UdDgQWBBRVXRbdz2rCiW6VJMaVF5HPA7DENzCBkgYDVR0jBIGKMIGHgBRVXRbdz2rCiW6VJMaVF5HPA7DEN6FkpGIwYDELMAkGA1UEBhMCTVgxDTALBgNVBAgTBEQuRi4xDzANBgNVBAcTBk1leGljbzENMAsGA1UEChMEU0hDUDEMMAoGA1UECxMDU0FUMRQwEgYDVQQDFAtzaWNvZmlfcHJvZIIJAJhhI7VVwVfPMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAjGqMpZozqyQigWKudUSCKdQ5znBPBMUjXitW+4S4q6Yqqj07YqMwUIjBlPcK3FW+hkKwygSmXMqqLe5Q7NmY/pcUylnVgP+V2IGwzxOPSDJWoKzYUycUYW217LNF7GV/46H7pXhEVx6aoIlvwaNi6N6bFmCaiR4XpQxYutve1UA=

object(stdClass)#2 (1) { ["ValidarXmlCFDResult"]=> string(2139) "1IIJvdurN00ckBTgdyYq2BmLHIhSAo=bIM7ZC0mbBfPwzHhGU24e8cyyVhmI+gS4rUBiFrsaoRkEe6X25kPVH9Zv65Q4Ncb0lvp3A2XPyIL6egOTp3u7r6lf4kV3ZNHn5prKpo+6XIJS4jkkicSWo5hDN5QgSS/4XsOYn1riQwlbHk4cScQHtw+v89sVIEcG6rGI+nMVh0=MIIDBDCCAm2gAwIBAgIJAJhhI7VVwVfPMA0GCSqGSIb3DQEBBQUAMGAxCzAJBgNVBAYTAk1YMQ0wCwYDVQQIEwRELkYuMQ8wDQYDVQQHEwZNZXhpY28xDTALBgNVBAoTBFNIQ1AxDDAKBgNVBAsTA1NBVDEUMBIGA1UEAxQLc2ljb2ZpX3Byb2QwHhcNMTAwNzE5MjEzNDI1WhcNMTEwNzE5MjEzNDI1WjBgMQswCQYDVQQGEwJNWDENMAsGA1UECBMERC5GLjEPMA0GA1UEBxMGTWV4aWNvMQ0wCwYDVQQKEwRTSENQMQwwCgYDVQQLEwNTQVQxFDASBgNVBAMUC3NpY29maV9wcm9kMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBJXEOy1yWJ7sGBZO1ZOmmNhv0Qds9CyHUDMCUZinfGkyezL1J8l4k336Z9OHv2Kxr+o1yWhm0YU0fSYaz9nLLv4YRJdXOyc18svMKFXTE4DwfWKNUWHaXYfLrmwU3lChJqImB3O9nDDlXlKpGTP6wYONYQUaVub/t2mabG/aCFQIDAQABo4HFMIHCMB0GA1UdDgQWBBRVXRbdz2rCiW6VJMaVF5HPA7DENzCBkgYDVR0jBIGKMIGHgBRVXRbdz2rCiW6VJMaVF5HPA7DEN6FkpGIwYDELMAkGA1UEBhMCTVgxDTALBgNVBAgTBEQuRi4xDzANBgNVBAcTBk1leGljbzENMAsGA1UEChMEU0hDUDEMMAoGA1UECxMDU0FUMRQwEgYDVQQDFAtzaWNvZmlfcHJvZIIJAJhhI7VVwVfPMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAjGqMpZozqyQigWKudUSCKdQ5znBPBMUjXitW+4S4q6Yqqj07YqMwUIjBlPcK3FW+hkKwygSmXMqqLe5Q7NmY/pcUylnVgP+V2IGwzxOPSDJWoKzYUycUYW217LNF7GV/46H7pXhEVx6aoIlvwaNi6N6bFmCaiR4XpQxYutve1UA=" } 

Nuevamente por su ayuda muchas gracias
carlossantillan
Mensajes: 4
Registrado: Jue Sep 23, 2010 9:42 pm

Re: Web Service para Validar del SAT

Mensaje por carlossantillan »

Efectivamente a nosotros nos da el error (VI) que comentas con las facturas (recibo telefónico) de TELMEX. Telmex tiene 4 certificados en las LCO (00001000000100946609|C, 00001000000100549940|C,00001000000103362413|A, 00001000000200363689|A). El certificado con el que se firmo el CFD que estamos probando es el 00001000000103362413 y esta como "Activo" tanto en el CSD.txt como en LCO (que se supone es lo mismo).

Estamos pensando que el error es por lo que comentas o por que hay una inconsistencia en el certificado ya que metiéndome al detalle del CSD, dice que la fecha de Emisión es el 2011-04-19T21:54:40 y en las LCO dice que es 2011-04-20T03:54:40. Ya probamos validando con las 2 fechas y sigue enviando el "VI". Sería muy útil que el validador realmente "validara".

Estamos revisando un validador (gratuito) que dá un análisis detallado para cualquier CFD / CFDI en http://www.fiscoclic.mx/validadorcfdi/valida.html y esta por liberarse la validación integrándolo a éste Web Service
david.pacheco
Mensajes: 10
Registrado: Lun Nov 28, 2011 10:08 am

Re: Web Service para Validar del SAT

Mensaje por david.pacheco »

Hola a todos como les va, buscando en el foro alguna noticia del por que el validador del SAT hasta la fecha no valida los nuevos esquemas me encontre con este tema del Web Service, pero tengo algunas dudas, epsero puedan orientarme. Este Web Service valida la V2.2 de CFDs? por el momento es el unico medio de validarlos? Tienen alguna noticia de cuando el validador de la pagina del SAT validara la nueva version de CFD?
Gracias.
cesarmtassinari
Mensajes: 20
Registrado: Vie Ene 21, 2011 8:29 pm

Re: Web Service para Validar del SAT

Mensaje por cesarmtassinari »

David buen día, no lo he utilizado, pero entiendo que es un Web Service para Verificar Folios, no para Validar la estructura.

Saludos

César Morales
edgarymx
Mensajes: 1
Registrado: Lun Jun 11, 2012 11:22 am

Re: Web Service para Validar del SAT

Mensaje por edgarymx »

Hola tengo una duda hago lo anterior de la forma siguiente y en ninguna caso me envia una informacion completa el servidor del sat no se en que punto estoy mal o si toda la informacion esta incorrecta(lo hago con datos reales) hago la conexion al servidor con el programa soapui y coloco la informacion del proveedor.



<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sat="http://www.sat.gob.mx/">
<soapenv:Header/>
<soapenv:Body>
<sat:ValidarXmlCFD>
<!--Optional:-->
<sat:xml>
<ColleccionFoliosCfd xmlns="http://www.sat.gob.mx/Asf/Sicofi/Valida ... sCFD/1.0.0">
<Folio>
<Id>1</Id>
<Rfc>AAA121212AAA</Rfc>
<Serie>FA</Serie>
<NumeroFolio>9</NumeroFolio>
<NumeroAprobacion>12345</NumeroAprobacion>
<AnioAprobacion>2010</AnioAprobacion>
<CertificadoNumeroSerie>0000011111111</CertificadoNumeroSerie>
<CertificadoFechaEmision>2011-12-12T14:20:15</CertificadoFechaEmision>
</Folio>
</ColleccionFoliosCfd>
</sat:xml>
</sat:ValidarXmlCFD>
</soapenv:Body>
</soapenv:Envelope>

esta es la respuesta que obtengo del servidor, no se si alguien me pueda ayudar muchas gracias.

HTTP/1.1 400 Bad Request
Connection: Keep-Alive
Content-Length: 0
Date: Mon, 11 Jun 2012 17:38:25 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private
naringas
Mensajes: 22
Registrado: Mié Ago 10, 2011 9:58 am

Re: Web Service para Validar del SAT

Mensaje por naringas »

así se ve lo que manda mi programa:

Código: Seleccionar todo

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.sat.gob.mx/">
<SOAP-ENV:Body>
<ns1:ValidarXmlCFD>
<ns1:xml>
<?xml version="1.0" encoding="UTF-8"?>
<ColleccionFoliosCfd xmlns="http://www.sat.gob.mx/Asf/Sicofi/ValidacionFoliosCFD/1.0.0">
  <Folio>
    <Id>1</Id>
    <Rfc>XXX101010AW1</Rfc>
    <Serie>XXX</Serie>
    <NumeroFolio>1111</NumeroFolio>
    <NumeroAprobacion>111111</NumeroAprobacion>
    <AnioAprobacion>2012</AnioAprobacion>
    <CertificadoNumeroSerie>11111111111111111111</CertificadoNumeroSerie>
    <CertificadoFechaEmision>2012-05-30T17:07:39</CertificadoFechaEmision>
  </Folio>
</ColleccionFoliosCfd>
</ns1:xml></ns1:ValidarXmlCFD></SOAP-ENV:Body></SOAP-ENV:Envelope>
la diferencia que cuenta es que el contenido dentro de las etiquetas <sat:xml></sat:xml> (en tu ejemplo, ns1:xml en el mio) los simbolos < y > están escritos como html entities < y >
Avatar de Usuario
Dado
Mensajes: 15981
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Web Service para Validar del SAT

Mensaje por Dado »

Oye Naringas, y no es mas facil si descargas la lista y tu mismo haces la validacion........

Muy mi humilde opinion esta validacion del SAT no sirve para nada, ni siquiera vale la pena el esfuerzo.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
Cerrado