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:
Si
@user
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());
}
});
Este ejemplo sigue el flujo documentado en API | Afip SDK y Factura electrónica | Afip SDK.
Sources: