Función VirtualXML_ValidaCFDITimbrado VirtualXML
Esta función valida 3 aspectos importantes de un CFDI:
  1. Valida el sello digital del documento usando el certificado del emisor que viene dentro del documento CFDI
  2. Opcionalmente valida el sello del timbre fiscal digital del documento emitido por el PAC, si se cuenta con el archivo .CER del PAC que certificó el documento.
  3. Realiza una verificación en el SAT de la existencia del CFDI en los registros del mismo.
Internamente esta función genera las cadenas originales, y aplica los algortimos de encriptamiento correspondientes, determinando de esta manera que los sellos digitales del documento sean los correctos.  Esta validación evita que un XML alterado pueda ser tomado como válido ya que las cadenas originales son generadas a partir de la información contenida en el XML original y el PAC al momento de emitir el timbre fiscal digital realiza las mismas validaciones.

La función valida adicionalmente el sello del timbre fiscal digital si se proporciona el archivo .CER del PAC que certificó el documento, el archivo CER del PAC se puede descargar desde el sitio web del SAT ubicado en:

https://portalsat.plataforma.sat.gob.mx/RecuperacionDeCertificados/

Se puede descarar ya sea por RFC o por número de certificado, obtener estos valores es muy sencillo ya que ambos se encuentran dentro del XML en el nodo <cfdi:TimbreFiscalDigital>, los atributos son NoCertificadoSAT y RfcProvCertif respectivamente.

Adicionalmente esta función realiza una conexión al servicio de verificación de documentos del SAT para revisar si el documento se encuentra en los registros del SAT.

Esta función solo valida que el documento se encuentre en el los registros del SAT, si desea mas información sobre el estado de un comprobante utilice la función VirtualXML_ConsultaEstadoCFDI().


Namespace:
 VirtualXML®
Aplicación: CFDI ver. 3.3
Sintaxis

public static void VirtualXML_ValidaCFDITimbrado(
String Xml,
String OutLog,
String csdPAC,
int CheckSAT)

Parametros


Xml
 Tipo: System  String
Nombre del archivo XML que se desea validar, puede incluir la ruta del archivo dentro del disco.
OutLog
Tipo: System  String
Nombre del archivo de donde se guardará el resultado del proceso de validación.
csdPAC
Tipo: System  String
Parametro opcional para indicar el nombre del archivo .CER del PAC que certificó el documento. Si se omite solo se realiza la validación del sello del CFDI, no del timbre fiscal digital. No se debe confundir este parámetro con el archivo .CER del emisor, no es el .CER del emisor, es el del Proveedor Autorizado de Certificación..
CheckSAT
Tipo: System  Ing
Parámetro opcional que sirve para indicar a la función que realice la verificación de existencia del documento en los registros del SAT. Sus posibles valores
  • 0 = No valida la existencia del documento en el SAT,
  • 1 = Valida la existencia en el SAT del documento

Valor retornado:

Tipo: Int32

Retorna un valor númerico cuyos posibles valores son:

  • >= 0: CFDI Válido
  • < 0: CFDI Inválido o con error en la ejecución. Revise el archivo de bitácora para mas información sobre el problema.
 
Ejemplo

private void ValidaCFDI(String szXML)
{

// Definimos variable para el resultado de la validacion
    int nResultadoValida ;

// Validamos el sello del XML, no el sello del timbre ni verificamos en el SAT la existencia del documento:

 nResultadoValida = VirtualXML_ValidaCFDITimbrado( "factura001.xml", "Valida_Factura001.log","",0 );

// Validamos el sello del XML, el sello del timbre con el archivo .CER del PAC, pero no verificamos en el SAT la existencia del documento:
 nResultadoValida = VirtualXML_ValidaCFDITimbrado( "factura002.xml", "Valida_Factura002.log","c:\certificados\100002345686.CER",0 );

// Validamos el sello del XML, el sello del timbre con el archivo .CER del PAC y verificamos en el SAT la existencia del documento:
 nResultadoValida = VirtualXML_ValidaCFDITimbrado( "factura002.xml", "Valida_Factura002.log","c:\certificados\100002345686.CER",1 );

}
Veáse También:


                                   VirtualXML_ConsultaEstadoCFDI