Giter Site home page Giter Site logo

afip-sdk-java's Introduction

afip-sdk

SDK para web services de AFIP.

Autenticación y autorización

Configuración en AFIP

  1. Generar una clave privada (por ejemplo con OpenSSL).
  2. Generar una solicitud de certificado (CSR) con esa clave privada.
  3. Usar el CSR con las herramientas de la AFIP para generar el certificado.
  4. En Java, guardar el certificado en un key store.

Autenticación

Para autenticarse, hay que enviar una solicitud CMS (Cryptographic Message Syntax), encriptada con la clave privada. Para ello:

  1. Abrir el key store.
  2. Obtener la clave privada.
  3. Armar el ticket de autenticación.
  4. Encriptar el ticket con la clave privada.
  5. Codificar el resultado usando Base64.
  6. Usar el WSAA para obtener un token.
    • Para invocar, a su vez, se tiene que reconocer el certificado de la AFIP. Ese certificado se debe almacenar en otro key store, o agregarlo al key store por defecto de la JVM.

El token sirve como máximo durante 24 horas.

Autorización.

Para factura electrónica, se tiene que autorizar al certificado en cada servicio particular. Todos los web services esperan un elemento XML con la información de autorización: token, sign, y el CUIT sobre el que se va a operar.

<<<<<<< HEAD

Ejemplos

=======

Uso del SDK

Autenticación

La autenticación se realiza con la clase AutenticacionEndpoint. La clase debe encriptar el ticket de solicitud, para lo que usa una implementación de EncriptadorCMS. EncriptadorCMS, a su vez, necesita que exista el archivo keystore (generado con los pasos mencionados anteriormente). AutenticacionEndpoint tiene dos extensiones de conveniencia, que ya incluyen las URLs del WSAA para homologación y producción:

  • afip.sdk.homologacion.Autenticacion
  • afip.sdk.produccion.Autenticacion

Si el archivo de keystore es keystore.pfx, entonces:

java.io.File keystore = new java.io.File("/ruta/al/archivo/keystore.pfx");
EncriptadorCMS encriptador = new EncriptadorCMS(
    new java.io.FileInputStream(keystore),
    "claveDelKeystore".toCharArray(),
    "1" // Este es el identificador del signer en el keystore
);
Autenticacion autenticacion = new afip.sdk.homologacion.Autenticacion(encriptador);
Credenciales credenciales = autenticacion.autenticar(Servicios.FACTURACION_ELECTRONICA);

Luego, el sign y el token se usan en cada web service.

058a6ad07a7557c28468774dfab3bf4e0a22545e

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.