Integración de servicios mediante DLL
Las librerías DLL desarolladas por Solución Factible®, son elementos ActiveXControl COM, puede ser usados por cualquier lenguaje que soporte importación de DLL's, como por ejemplo: Vsual Basic 6(VB6) , Microsoft Visual C++ (MSVC), Clarion, Visual Fox Pro, lenguajes .NET como C# VB .NET, ASP etc...
Instalación
Dependiendo de el lenguaje de programación que se este manejando, es la manera en la que una DLL será importada al proyecto para ser utilizada, algunas veces la DLL tiene que ser registrada en el sistema operativo, también se puede hacer uso de el archivo .dll directamente, mandandolo llamar en su ruta etc.
De las maneras mas comunes de instalación de DLL's es ejecutar el comando: regsvr32 para registrar la DLL en el sistema:
C:\Users\SF\> regsvr32 SF_ActiveXCtrlCFDI_1.2.2.dll
Solución Factible® también provee un instalador, extrae y ejecuta el comando para registrar la dll en el sistema, en caso de que usted necesite el archivo .dll solo debe dirigirse a "C:\SFDLL\" y aquí lo encontrará. Pasos:
- 1.- Instalar la dll ejecutando "SF DLL Installer.exe"
- 2.- Esperar el mensaje de confirmación de si registro, clickear "OK" y continuar.
Implementación en Visual Studio 2010
Despues de haber ejecutado el instalador de la dll o haberla registrado
manualmente con el comando
- 1.- Ir a menu proyecto/project seleccionar "Agregar referencia"
- 2.- Seleccionar pestaña COM y buscar la librería dll con prefijo: "SF" y el nombre, como por ejemplo: "Timbrar", por ejemplo para agregar la dll de timbrado buscaríamos: SFTimbrar.
- 3.- Seleccionar y hacer click en OK
La referencia ahora es parte de su proyecto, y podra verse en el explorador de su solución en el apartado de Referencias ó References, con un nombre como: SF_ConectorWS_TypeLib (el nombre varia de acuerdo a la DLL que se haya importado) este nombre es el que vamos a usar para instanciar el objeto y usar los métodos.
//Instanciando usando Framework 3.5 SF_ConectorWS_TypeLib.TimbrarClass timbrado35 = new SF_ConectorWS_TypeLib.TimbrarClass(); //Instanciando usando Framework 4.0 SF_ConectorWS_TypeLib.Timbrar timbrado40 = new SF_ConectorWS_TypeLib.Timbrar(); //Timbrado: string responseXML = timbrado.timbrarCFDI("testing@solucionfactible.com", "timbrado.SF.16672", @"C:\F2011-06-09.xml", 0); //Fin del programa
'Ejemplo Visual Basic 2008 Dim timbrado As New SF_ConectorWS_TypeLib.Timbrar Dim xmlResponse As String xmlResponse = timbrado.cancelar( "testing@solucionfactible.com", "timbrado.SF.16672", "C:\iap031014rj2.cer", "C:\iap031014rj2_17s.key", "12345678a", "26D51262-F8A6-40C4-9181-D9965BD37F25", 0) 'Fin del programa
program TimbrarSF; {$APPTYPE CONSOLE} uses SysUtils, SF_ConectorWS_TypeLib_TLB, ActiveX; var timbrar: TTimbrar; //clase que registramos y nombre que le dimos al importar la DLL usuario, password, cfdiPath, wsResponse: WideString; produccion: Integer; begin CoInitialize(nil); timbrar := TTimbrar.Create(nil); usuario := 'testing@solucionfactible.com'; password := 'timbrado.SF.16672'; cfdiPath := 'C:\test.xml'; produccion := 0; Writeln('Enviando a timbrar ' + cfdiPath); wsResponse := timbrar.timbrarCFDI(usuario, password, cfdiPath, produccion); Writeln('Response: '); Writeln(wsResponse); Readln(usuario); {Esperar un enter} end.
'TIMBRAR TEST Dim timbrado 'El string "SF.timbrar" es el ProgID (o nombre de la clase como se registró) 'de la dll de timbrado, cada DLL tiene uno diferente que se puede consultar en su API Set timbrado = CreateObject("SF.timbrar") Text1.Text = timbrado.timbrarCFDI("testing@solucionfactible.com", "timbrado.SF.16672", "C:/F_A00001099.xml", 0) 'Fin del programa
OLEObject axTimbrado; axTimbrado = CREATE OLEObject #El string "SF.timbrar" es el ProgID (o nombre de la clase como se registró) #de la dll de timbrado, cada DLL tiene uno diferente que se puede consultar en su API integer result result = axTimbrado.ConnectToNewObject("SF.timbrar"); IF result = 0 THEN MessageBox("SUCCESS Conexion con DLL", result, & Exclamation!, OK!, 2) string respuesta respuesta = axTimbrado.timbrarCFDI("testing@solucionfactible.com", "timbrado.SF.16672", "C:\SFDLL\xml.xml", 0) MessageBox("RESPUESTA DLL", respuesta, & Exclamation!, OK!, 2) ELSE MessageBox("FALLO Conexion con DLL", result, & Exclamation!, OK!, 2) END IF