-
Notifications
You must be signed in to change notification settings - Fork 5
quickstart
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:
Hay 3 subproyectos:
ar.com.system.afipar.com.system.afip.androidar.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).
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.