Integracin de Afip SDK con Firebase

RunLLM
RunLLM

No existe documentación oficial ni ejemplos directos de integración de Afip SDK con Firebase. Sin embargo, Afip SDK expone una API REST que puede ser consumida desde cualquier backend, incluyendo uno basado en Cloud Functions de Firebase, siempre que puedas realizar peticiones HTTP y manejar los tokens de autorización necesarios según la documentación de la API de Afip SDK. Según API | Afip SDK, solo necesitas realizar peticiones HTTP POST a los endpoints de la API, lo cual es compatible con Firebase Functions.

¿Te gustaría ver un ejemplo de cómo hacer una llamada desde una Cloud Function de Firebase a la API de Afip SDK?

Sources:

S4dturtl3
S4dturtl3

Si

@user

RunLLM
RunLLM

Aquí tienes un ejemplo básico de cómo llamar a la API de Afip SDK desde una Cloud Function de Firebase usando Node.js. Solo necesitas instalar axios y configurar tu función para hacer el POST al endpoint de autenticación y luego al de facturación:

const functions = require('firebase-functions');
const axios = require('axios');

exports.crearFacturaAfip = functions.https.onRequest(async (req, res) => {
  try {
    // 1. Obtener Token Authorization (TA)
    const authResponse = await axios.post('https://app.afipsdk.com/api/v1/afip/auth', {
      environment: 'dev',
      tax_id: '20409378472', // CUIT de pruebas
      wsid: 'wsfe'
    }, {
      headers: { 'Content-Type': 'application/json' }
    });

    const { token, sign } = authResponse.data;

    // 2. Crear factura electrónica
    const facturaResponse = await axios.post('https://app.afipsdk.com/api/v1/afip/requests', {
      environment: 'dev',
      method: 'FECAESolicitar',
      wsid: 'wsfe',
      params: {
        Auth: { Token: token, Sign: sign, Cuit: '20409378472' },
        FeCAEReq: {
          FeCabReq: { CantReg: 1, PtoVta: 1, CbteTipo: 6 },
          FeDetReq: {
            FECAEDetRequest: {
              Concepto: 1,
              DocTipo: 99,
              DocNro: 0,
              CbteDesde: 1,
              CbteHasta: 1,
              CbteFch: 20231220,
              ImpTotal: 121,
              ImpTotConc: 0,
              ImpNeto: 100,
              ImpOpEx: 0,
              ImpIVA: 21,
              ImpTrib: 0,
              MonId: 'PES',
              MonCotiz: 1,
              CondicionIVAReceptorId: 5,
              Iva: [{ Id: 5, BaseImp: 100, Importe: 21 }]
            }
          }
        }
      }
    }, {
      headers: { 'Content-Type': 'application/json' }
    });

    res.json(facturaResponse.data);
  } catch (error) {
    res.status(500).send(error.toString());
  }
});