Skip to content

Introducción

La librería FEAr provee una interfaz sencilla para interactuar con los webservices de ARCA para autorización de comprobantes y consulta del padrón de inscritos, tanto en sistemas basados en Visual Foxpro 9 como otros lenguajes capaces de invocar clases ActiveX.

Instancia FEAr

  • Antes de usar la libreria debe colocar el siguiente código al inicio de su programa principal:
DO FEAr
public static fearProxy FEAr = new fearProxy();

Esto cargará la librería en memoria y creará una instancia de la clase fearProxy con el nombre FEAr, qué luego podra ser usada en cualquier parte de su programa.

Respuesta de los métodos de FEAr

Todos los métodos de la clase devuelven un objeto del tipo fearRespuesta. Este objeto le permitirá:

  • Determinar si la operación fué exitosa o no
  • En caso de error, conocer la descripción del error ocurrido
  • En caso de éxito, acceder a los datos devueltos por el método invocado

Desbloqueo e inicialización

Antes de invocar los métodos de la clase es necesario desbloquearla e inicializarla con el certificado qué se va a utilizar. Para esto invocamos primero al método Desbloquear:

1
2
3
4
5
6
7
8
LOCAL oResp
FEAr.passKey = "..."
oResp = FEAr.Desbloquear("Ruta al archivo LIC")
IF NOT oResp.result
    THROW oResp.errorMsg
ENDIF
?"Licencia #:",oResp.data.numero
?"Cliente   :",oResp.data.cliente
1
2
3
4
5
6
FEAr.passKey = "...";
fearRespuesta resp = FEAr.Desbloquear("Ruta al archivo LIC");
if (!resp.result) throw new Exception(resp.errorMsg);
fearLicencia data = (fearLicencia)data;
Console.WriteLine("Licencia #: " + data.numero);
Console.WriteLine("Cliente   : " + data.cliente);

Importante

Tanto el archivo de licencia como el passkey le seran enviados por email al confirmarse su compra.

Modo pruebas

Si desea probar la libreria antes de adquirirla, puede desbloquearla en modo demo. En esta modalidad podrá utilizar todos los métodos de la librería pero solo usando certificados de HOMOLOGACIÓN:

1
2
3
4
5
6
7
8
LOCAL oResp
FEAr.passKey = ""
oResp = FEAr.Desbloquear()
IF NOT oResp.result
    THROW oResp.errorMsg
ENDIF
?"Licencia #:",oResp.data.numero
?"Cliente   :",oResp.data.cliente
1
2
3
4
5
6
FEAr.passKey = "";
fearRespuesta resp = FEAr.Desbloquear();
if (!resp.result) throw new Exception(resp.errorMsg);
fearLicencia data = (fearLicencia)data;
Console.WriteLine("Licencia #: " + data.numero);
Console.WriteLine("Cliente   : " + data.cliente);

Inicialización

Una vez desbloqueada la librería, podemos proceder a inicializarla con el certificado de seguridad a utilizar para las operaciones:

1
2
3
4
5
6
7
LOCAL oResp
oResp = FEAr.Inicializar("ruta archivo CRT","ruta archivo KEY")
IF NOT oResp.result
    THROW oResp.errorMsg
ENDIF
?"CUIT emisor:",FEAr.cuit
?"Modo operacion:",FEAr.modoOp   && H=Homologación, P=Producción
1
2
3
4
fearRespuesta resp = FEAr.Inicializar("ruta archivo CRT","ruta archivo KEY");
if (!resp.result) throw new Exception(resp.errorMsg);
Console.WriteLine("CUIT emisor: " + FEAr.cuit);
Console.WriteLine("Modo operacion: " + FEAr.modoOp);

Sí sólo hay un archivo CRT o KEY presentes en la ruta actual dónde se ejecuta el sistema, entonces es posible inicializar la clase sin indicar los archivos explícitamente:

1
2
3
4
5
6
oResp = FEAr.Inicializar()
IF NOT oResp.result
    THROW oResp.errorMsg
ENDIF
?"Archivo CRT:", FEAr.archivoCRT
?"Archivo KEY:", FEAr.archivoKEY
1
2
3
4
fearRespuesta resp = FEAr.Inicializar();
if (!resp.result) throw new Exception(resp.errorMsg);
Console.WriteLine("Archivo CRT: " + FEAr.archivoCRT);
Console.WriteLine("Archivo KEY: " + FEAr.archivoKEY);

De la misma forma la librería intenta ubicar el archivo OPENSSL.EXE dentro de la ruta actual, pero es posible indicar manualmente su ubicación utilizando la propiedad openSSL:

FEAr.openSSL = "ubicación de OPENSSL.EXE"
FEAr.openSSL = "ubicación de OPENSSL.EXE";

Tokens de acceso

La clase FEAr maneja internamente la obtención de los tokens de acceso necesarios para acceder a los distintos Web Services de ARCA, por lo qué no es necesario hacer un login previo antes de invocar los distintos métodos disponibles.

Para más información, vea la propiedad rutaTokens de la clase fearProxy.

Archivo FEAR.JSON

Es posible configurar las distintas propiedades de la libreria a traves de un archivo de configuracion en formato JSON, para asi poder cambiar valores sin necesidad de modificar el fuente de su programa.

Una forma de generar el archivo es crear un documento de texto con el nombre FEAR.JSON en la carpeta principal de su sistema, con el siguiente contenido:

{
   "openSSL": "ruta al archivo openssl.exe",
   "minutosValidezToken": 60,
   "rutaTokens": "ruta a la carpeta de tokens",
   "rutaTemporales": "ruta a la carpeta de temporales",
   "validarNroCbte": true,
   "trace": false,
   "reintentarPeticiones": true,
   "maximoNroReintentos": 3,
   "segundosEntreReintentos": 5
}

Para ver una descripción detallada del valor de cada propiedadd, vea fearConfiguracion. La otra forma de crear el archivo FEAR.JSON es invocando el método guardarConfiguracion de la clase fearProxy:

1
2
3
FEAr.rutaTemporales = "..."
FEAr.rutaTokens = "..."
FEAr.guardarConfiguracion()
1
2
3
FEAr.rutaTemporales = "...";
FEAr.rutaTokens = "...";
FEAr.guardarConfiguracion();
Vea tambien

Archivos temporales

La libreria crea varios archivos temporales durante su operación normal. La mayoria se elimina automaticamente (a menos qué la propiedad trace este en true), pero hay tres archivos qué se mantienen permanentemente:

archivo descripción
fear_<cuit>_last.ssl.bat Contenido del ultimo archivo BAT utilizado para ejecutar un comando OpenSSL para el cuit indicado en .
fear_<cuit>_last.ssl.txt Resultado de la última ejecucion delarchivo BAT utilizado para ejecutar un comando OpenSSL para el cuit indicado en .
fear_<cuit>_last.req.txt Detalle de la última petición enviada a ARCA para el cuit indicado en .

Estos archivos son útiles para depurar cualquier problema qué pudiese presentarse con la ejecución de la libreria.

Vea tambien

Que sigue?