Función VirtualXML_TimbraRetenciones
VirtualXML
Esta funciòn timbra un XML de retenciones y puede usarse en sustitucion de la pagina web de timbrado de retenciones de VirtualPAC (http://servicios.virtual-pac.mx).

Antes de usar esta funcion, es necesario haber creado el XML de retenciones previamente, con su repectivo complemento (cuando aplique), como un archivo de texto, para facilitar esta tarea puede utilizar las plantillas que tenemos disponbiles en INFORMACION DE RETENCIONES.

El timbrado de retenciones consume un timbre por cada retencion timbrada, igual que con los CFDIs normales.

Namespace: VirtualXML®
Aplicación: CFDI 3.3
Sintaxis

public static int VirtualXML_TimbraRetenciones(
string szUsuario,
int Modo,
string szCer,
string szKey,
string szPwd,
string szXmlReten,
string szResultado,
string szLog,
string szReservado )

Parametros


szUsuario
Tipo: System  String
Nombre del usuario VirtualPAC
Modo
Tipo: System  Int32
 Valor numerico que indica si el XML se timbra en modo demo (0) o en produccion (1)
szCer
Tipo: System  String
Nombre del archivo .CER del CSD.
sZKey
Tipo: System  String
Nombre del archivo .KEY del CSD.
szPwd
Tipo: System  String
Password del archivo .KEY del CSD.
szPwd
Tipo: System  String
Password del archivo .KEY del CSD.
szXmlReten
Tipo: System  String
Nombre del archivo XML que se va a timbrar
szResultado
Tipo: System  String
Nombre del archivo de salida del proceso de timbrado
szLog
Tipo: System  String
Nombre y ruta de un archivo de bitácora donde se guardará la información del timbrado de la retencion (necesario en caso de falla de la recuperación).
szReservado
Tipo: System  String
Reservado para usos futuros.

Valor retornado:

Tipo: Int32

Retorna un 0 (cero) si la operación se realizó con éxito y el documento se pudo timbrar correctamente, cualquier otro valor, indica falla en el proceso de timbrado y deberá consultar el archivo  .LOG para mas información sobre el motivo del error.
Ejemplo:

private void TimbraRetencion()
{
// Solicitamos el timbrado
    int nResultado = VirtualXML_TimbraRetenciones("usuario",1,"Archivo.CER","Archivo.KEY","Password","XmlaTimbrar.xml", "XmlDeSalida.xml","C:\CSD\Bitacora.log");
if nResultado = 0
// Se ha obtenido exitosamente el comprobante
MsgBox("Se ha generado correctamente el timbrado de retencion");
else
// Hubo error
MsgBox("Se ha producido un error en el timbrado de retencion, revise el archivo Bitacora.log);
endif
}
}