Saltar al contenido principal

Marketplace y licencias

El Marketplace del portal ofrece a tu comercio lo que FINORA publica: aplicativos (AuroraPOS, FINORA Caja, FINORA Pago, Agente ECR), SDK, actualizaciones, licencias y documentación. Cada artefacto lleva plataforma, arquitectura, SHA-256, sello de certificación y el motivo por el que lo ves.

Derecho de descarga​

Una versión te aparece si está activa y certificada y además una de estas cosas es cierta:

  1. es pública;
  2. hay una política de distribución dirigida a tu comercio;
  3. hay una política dirigida a un modelo de terminal que posees (por ejemplo, un APK solo para un modelo concreto de terminal);
  4. tienes una licencia vigente para ese producto.

El motivo viene en cada tarjeta (motivo: PUBLICO, POLITICA_COMERCIO, POLITICA_MODELO, LICENCIA). Si algo no te aparece, no es un error de la página: pídelo al operador.

Descargar por API (portal)​

Desde tu propio software, con el token del usuario del portal (OAuth2), puedes automatizar la bajada:

# 1) Ver lo publicado
curl -s https://pos.finoracore.com/api/v1/portal/marketplace -H "Authorization: Bearer $TOKEN_PORTAL"
# 2) Pedir un enlace firmado (5 minutos) para una versión
curl -s -X POST https://pos.finoracore.com/api/v1/portal/marketplace/versiones/101/descarga -H "Authorization: Bearer $TOKEN_PORTAL"
# → 201 {"url":"https://pos.finoracore.com/api/v1/portal/descargas/<token>","expiraEn":"…","expiraEnSegundos":300,"nombreArchivo":"aurorapos-1.10.2.apk","tamanoBytes":48234112,"checksumSha256":"3f7a…"}
# 3) Bajar el binario (sin cabeceras: la firma es la autenticación) y verificar la huella
curl -sL -o aurorapos.apk "<url>"
sha256sum aurorapos.apk

El enlace es base64url(carga).base64url(HMAC-SHA256) con versión, comercio, usuario, vencimiento y nonce. Antes de entregar, el Merchant vuelve a comprobar tu derecho y registra la descarga (origen = PORTAL_WEB). Errores: 403 ENLACE_INVALIDO, 410 ENLACE_VENCIDO (pide otro), 403 SIN_DERECHO_DE_DESCARGA, 503 ARTEFACTO_NO_DISPONIBLE.

consejo

Compara siempre el SHA-256 del archivo con el de la ficha antes de instalarlo en un terminal. La ficha lo trae copiable; la descarga lo repite en la cabecera X-Checksum-SHA256.

Licencias​

Una licencia es un artefacto de primera clase: FIN-<APP>-<32 caracteres> firmado con HMAC sobre a quién, de qué y hasta cuándo. Editar la vigencia sin reemitir invalida la firma. Estados: EMITIDA → ACTIVA (primera validación) · REVOCADA · VENCIDA. Las tuyas están en Licencias.

Cómo la valida un terminal​

La app (AuroraPOS, o la tuya si distribuyes software licenciado por FINORA) pregunta al Merchant con el token del dispositivo. El comercio es el del token; el dispositivo se resuelve por su serial.

curl -s "https://pos.finoracore.com/api/v1/pos/licencias/validar?app=AURORAPOS" -H "Authorization: Bearer $DEVICE_TOKEN"
{ "app": "AURORAPOS", "estado": "VALIDA", "valida": true, "validaHasta": "2026-12-31", "maxDispositivos": 2, "estadoLicencia": "ACTIVA" }

Siempre responde 200 con el veredicto (una licencia vencida es una respuesta, no un error); 401 solo si el token no vale; 400 si falta app.

estado ∈ VALIDA · SIN_LICENCIA · REVOCADA · VENCIDA · NO_VIGENTE_AUN · FIRMA_INVALIDA · DISPOSITIVO_NO_AUTORIZADO · TOPE_DISPOSITIVOS. El orden de evaluación es ese: si todas las licencias del par están revocadas se responde REVOCADA, no SIN_LICENCIA (para el comercio no es lo mismo «nunca tuvo» que «se la quitaron»).

Node.js
const v = await fetch("https://pos.finoracore.com/api/v1/pos/licencias/validar?app=AURORAPOS", { headers: { Authorization: `Bearer ${deviceToken}` } }).then((r) => r.json());
if (!v.valida) bloquearPantalla(v.estado); // VENCIDA, REVOCADA, TOPE_DISPOSITIVOS…
Java
var res = client.send(HttpRequest.newBuilder(URI.create("https://pos.finoracore.com/api/v1/pos/licencias/validar?app=AURORAPOS"))
.header("Authorization", "Bearer " + deviceToken).GET().build(), HttpResponse.BodyHandlers.ofString());
boolean valida = new ObjectMapper().readTree(res.body()).get("valida").asBoolean();
C#
var v = await http.GetFromJsonAsync<JsonElement>("https://pos.finoracore.com/api/v1/pos/licencias/validar?app=AURORAPOS");
bool valida = v.GetProperty("valida").GetBoolean();

Lo que ve el comercio​

  • Marketplace: destacado, rieles por tipo, ficha con novedades, requisitos, SHA-256 e historial de versiones; «Nuevo» cuando la versión supera la última que tu comercio bajó.
  • Mis descargas: quién bajó qué, cuándo y desde dónde.
  • Licencias: vigencia, tope de terminales y serial cuando la licencia está atada a un equipo.