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


.

Saber que PAC timbro un CFDi (XML)

La factura esta basada en XML, independiente del lenguaje de programacion todos debemos saber acerca de esta tecnologia
[[ FORO CERRADO DEBIDO A QUE YA LA INFORMACION YA NO ES VIGENTE ]]
Cerrado
isantosp
Mensajes: 8
Registrado: Mié Dic 18, 2013 5:30 pm

Saber que PAC timbro un CFDi (XML)

Mensaje por isantosp »

Que tal..

Si tengo un XML de un CFDi para validar, como puedo saber que PAC timbro dicho CFDi???

Tengo un codigo para validar la estructura del XML, el sello del CFDi asi como el sello del Timbre Fiscal Digital, pero necesito además de ese mismo XML saber que PAC fue el que lo timbro..

NOTA: Yo no genero ese XML, puede ser cualquier XML correctamente timbrado.
Estoy desarrollando en PHP

Espero alguien me pueda ayudar con esto..

Gracias de Antemano.. ;)
vivanchox
Mensajes: 7
Registrado: Jue Ago 29, 2013 1:19 pm

Re: Saber que PAC timbro un CFDi (XML)

Mensaje por vivanchox »

Hola:

Puedes extraer el valor del certificado del SATy compararlo con una lista de todos los PACs que existen...

Saludos
isantosp
Mensajes: 8
Registrado: Mié Dic 18, 2013 5:30 pm

Re: Saber que PAC timbro un CFDi (XML)

Mensaje por isantosp »

Hola vivanchox, gracias por responder..

Donde puedo encontrar esa lista?? y en esa lista esta el numero del certificado o como encuentro ahí a que PAC pertenece el .cer??

Porque también no mencione que el certificado en si del PAC, el archivo .cer, lo descargo directamente del ftp del SAT pero no encuentro por ningún lado, en mismo cer con OpenSSL, a que PAC pertenece..

Te agradecería si tuvieras algún ejemplo de como hacerlo.. o_O
isantosp
Mensajes: 8
Registrado: Mié Dic 18, 2013 5:30 pm

Re: Saber que PAC timbro un CFDi (XML) [SOLUCION]

Mensaje por isantosp »

Pues finalmente he podido saber que PAC timbro un CFDi y les comparto la info esperando le sirva a alguien mas:

Primero hay que tener la lista del SAT de los PAC's, que se puede encontrar aqui http://www.sat.gob.mx/sitio_internet/as ... 19264.html
Teniendo esta lista en alguna BD podemos simplemente extraer el noCertificadoSAT del nodo TimbreFiscalDigital del XML en cuestion y buscando ese CSD en nuestra BD.

Pero si esto no es suficiente y/o queremos ir mas alla podemos acceder al CSD en los servidores del SAT de la siguiente manera:
Si tenemos por ejemplo el CSD en una variable de PHP $noCert generamos la URL del archivo .cer segmentando el mismo $noCert como sigue:

Código: Seleccionar todo

$dir1 = substr($noCert,0,6);
$dir2 = substr($noCert,6,6);
$dir3 = substr($noCert,12,2);
$dir4 = substr($noCert,14,2);
$dir5 = substr($noCert,16,2);
$url = "ftp://ftp2.sat.gob.mx/certificados/FEA/$dir1/$dir2/$dir3/$dir4/$dir5/$noCert.cer";
Ya que tenemos la URL podemos leer el archivo y leer la info del certificado con openssl_x509_parse:

Código: Seleccionar todo

$der = file_get_contents($url);
$pem = base64_encode($der);
$cert = "-----BEGIN CERTIFICATE-----\n".chunk_split($pem,64)."-----END CERTIFICATE-----\n";

$arrInfo = openssl_x509_parse($cert);
Por ultimo, en el array generado, si entramos a subject/OU encontramos una cadena de 20 caracteres que nos dice tanto el RFC del PAC como el Número de Autorización del SAT, con la estructura PAC{RFC(12 caracteres)}{NoAUT(5 caracteres)}
Sabiendo esto podemos obtener estos valores como sigue:

Código: Seleccionar todo

$pac= $arrInfo['subject']['OU'];
$rfcPAC = substr($pac, 3, 12);
$noAut = substr($pac, -5);
Y ya podremos buscar en nuestra BD por Número de Certificado, RFC o Número de Autorización.


Espero esta info le sirva a alguien más ;)

Saludos..
meximaster
Mensajes: 148
Registrado: Mié Dic 11, 2013 1:57 pm

Re: Saber que PAC timbro un CFDi (XML) [SOLUCION]

Mensaje por meximaster »

Wow isantosp, muchas gracias por la información, en serio que ayudo!
Si necesitas ayuda en algo no dudes en preguntar..

Creo que el webservice del SAT para validar facturas también puede devolver información importante, comparto el código para PHP:

Código: Seleccionar todo

	public static function validacion_sat($rfc_emisor, $rfc_receptor, $importe_total, $uuid) {
		$output = '';
		try {
			ini_set('default_socket_timeout', 20);
			$url = 'https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl';
			$client = new SoapClient($url, array(
				'soap_version'=>SOAP_1_1,
				'encoding'=>'UTF-8',
				'connection_timeout'=>4
			));
			$uuid = strtoupper($uuid);
			$cadena = "re={$rfc_emisor}&rr={$rfc_receptor}&tt={$importe_total}&id={$uuid}";
			$parameters = array(
				'expresionImpresa' => $cadena
			);
			$result = $client->Consulta($parameters);
			html_append_doublespace($output, 'Resultado: '.$result->ConsultaResult->CodigoEstatus);
			html_append_doublespace($output, 'Estado: '.$result->ConsultaResult->Estado);
		} catch (Exception $e) {
			$output = false;
		}
		return $output;
	}

Si quieren ver como funciona en producción pueden entrar a erp1.taokaizen.mx con usuario demo y password demo
Cerrado