Skip to content

quickstart

Lautaro Brasseur edited this page Oct 20, 2018 · 2 revisions

Inicio rápido

Si usted está aquí es porque no quiso tomarse el tiempo de leer cómo están diseñados los componentes. Tiene toda la razón del mundo, para qué perder tiempo con una biblioteca y encima de AFIP!

Hay 2 formas de probar rápido cómo funciona la cosa:

Ejecutar las pruebas unitarias

Hay 3 subproyectos:

  • ar.com.system.afip
  • ar.com.system.afip.android
  • ar.com.system.afip.jre

En las pruebas unitarias del proyecto ar.com.system.afip se encuentra una interfaz Constants

package ar.com.system.afip.util;

public interface Constants {
    String COMPANY = "<colocar el nombre de la empresa>";
    String UNIT = "<colocar el nombre de la unidad>";
    String CUIT = "<colocar el CUIT>";
    String ADDRESS = "<colocar la direccion>";
    String LOCATION = "<colocar ciudad y provincia>";
    String PRIVATE_KEY = "<colocar la clave privada>";
    String PUBLIC_KEY = "<colocar la clave publica>";
    String CERTIFICATE = "<colocar el certificado>";
    String CN = "<colocar el CN>";
}

donde se deben especificar los distintos parámetros para poder ejecutar los tests unitarios.

El requerimiento de firma de certificado (CSR - certificate signing request) se puede generar usando, por ejemplo, OpenSSL - AFIP provee hay una explicación de como hacerlo, pero una de las ventajas de usar esta biblioteca es que la generación puede hacerse desde código Java (y por lo tanto incluirse dentro de la misma aplicación). Por ejemplo, se podría escribir una clase como la siquiente (en las pruebas unitarias del proyecto ar.com.system.afip.jre):

import ar.com.system.afip.wsaa.business.api.Service;
import ar.com.system.afip.wsaa.business.api.WsaaManager;
import ar.com.system.afip.wsaa.data.api.CompanyInfo;
import ar.com.system.afip.wsaa.data.api.TaxCategory;
import ar.com.system.afip.wsaa.data.api.WsaaDao;
import org.junit.Test;

import java.util.Date;

import static ar.com.system.afip.utils.Utils.initWsaa;
import static ar.com.system.afip.wsaa.WsaaComponents.wsaaDao;
import static ar.com.system.afip.wsaa.WsaaComponents.wsaaManager;

public class EjemploCsrAfip {
    @Test
    public void generarCsr() {
        initWsaa();

        WsaaDao wsaaDao = wsaaDao();

        wsaaDao.saveCompanyInfo(new CompanyInfo(0, // El ID, usar 0 porque es el valor que se usa en las pruebas unitarias
                "Austral Construcciones", // Nombre de la empresa
                true, // Activa?
                "rutas", // La unidad (area?)
                "30708372729", // el CUIT
                null, // La clave publica, valor nulo por ahora
                null, // La clave privada, valor nulo por ahora
                null, // El certificado, valor nulo por ahora
                "", // Ingresos brutos, opcional, no se usa
                new Date(), // Fecha de inicio de actividades, opcional, no se usa
                TaxCategory.MONOTRIBUTO, // Condicion frente al IVA, opcional, no se usa
                null, // Direción, opcional, no se usa
                null, // Ciudad, opcional, no se usa
                "austral" // alias - usado en el campo "Nombre simbólico del DN" en AFIP
        ));

        WsaaManager wsaaManager = wsaaManager(Service.WSFE); // podría ser Service.WSMTXCA, para el caso es lo mismo

        // Generación de clave pública y privada
        wsaaManager.initializeKeys();

        CompanyInfo companyInfo = wsaaDao.loadActiveCompanyInfo();

        System.out.println("Clave pública:");
        System.out.println(companyInfo.getPublicKey());
        System.out.println("Clave privada:");
        System.out.println(companyInfo.getPrivateKey());

        // Generación del CSR
        String csr = wsaaManager.buildCertificateRequest();
        System.out.println("CSR:");
        System.out.println(csr);
    }
}

Al ejecutarse, los resultados se mostrarán por consola. Vale notar que las claves son generadas cada vez, de modo que deberán guardarse las mismas a fin de usarlas posteriormente (de hecho la clave pública no es necesaria, la información se extrae de la clave privada).

Una vez que se tiene el CSR, se debe crear un certificado en AFIP (normalmente esto se hace en el ambiente de homologación primero, es decir, el ambiente de pruebas - podría salir muy caro probar en el ambiente de producción).

Para una información detallada sobre cómo funcionan los servicios de AFIP, conviene ir a la documentación. Pero para simplificar, basta con ingresar al sitio de AFIP con clave fiscal e instalar la aplicación WSASS - Autogestión Certificados Homologación. Es bastante intuitiva a pesar de todo. Cabe recordar que hay que asociar todos los servicios a usar (WSFE, MTXCA, etc.) al certificado en cuestión.

Una vez generado el certificado, el mismo se puede colocar en la clase Constants junto con el resto de los datos y ejecutar las pruebas unitarias. Vale notar que las mismas deben ejecutarse desde el proyecto correspondiente a la plataforma a utilizar (ar.com.system.afip.android o ar.com.system.afip.jre).

Ejecutar la aplicación demo para Android

La aplicación de ejemplo se encuentra en el siguiente proyecto:

https://github.com/NibiruOS/afip-android-demo

Los pasos a seguir para la generación del certificado son los mismos que los explicados en el paso anterior, salvo que los datos deberán ser cargados en la pantalla de configuración en lugar de hacerlo en una clase de pruebas unitarias.

Clone this wiki locally