Saltar a contenido

Firma de recepción: enviar un PDF a una tablet

Usa este flujo cuando el huésped debe leer y dibujar su firma sobre el PDF. Business Central envía el documento, la tablet recoge la tinta y BC recupera el PDF final. Para firmar con un certificado, sigue Firmar desde AL.

Requisitos

  • API pública HTTPS accesible desde BC cloud y bearer del entorno.
  • PWA accesible desde la tablet y una tablet registrada/activada.
  • Una extensión AL con solicitudes HttpClient permitidas y conversión del PDF a Base64.
  • Un registro de negocio donde guardar requestId y estado.

Las fuentes AL de business-central/ implementan la firma PAdES por alias. La integración de la cola manuscrita con tus documentos de negocio debe desarrollarse en la extensión que los genera.

1. Preparar la tablet una vez

Registra la tablet si no existe con POST /v1/devices y emite un código con POST /v1/devices/{deviceId}/activation-code. Abre la PWA e introduce el identificador y el código numérico de seis dígitos.

Estos pasos son administrativos: no registres ni reactives la tablet para cada PDF. Emitir otro código invalida el token anterior. Consulta Alta inicial.

2. Crear una solicitud

Envía JSON a POST /v1/signature-requests con Authorization: Bearer <token>:

{
  "externalRef": "CHECKIN-1001",
  "deviceId": "tablet-recepcion-1",
  "documentName": "registro-viajero.pdf",
  "pdfBase64": "<PDF_REAL_EN_BASE64>",
  "guestName": "Ana Pérez",
  "reservationRef": "RES-1001"
}

El marcador Base64 debe sustituirse por un PDF real. El límite inicial es 5 MB de bytes decodificados. La respuesta 201 contiene requestId, status: "pending" y createdAt; guarda el identificador antes de continuar.

3. Esperar la firma

La PWA consulta active y después next, muestra el PDF y envía el documento con la tinta incrustada. BC consulta:

GET /v1/signature-requests/{requestId}
Authorization: Bearer <token>
Estado Acción BC
pending, displayed, signing Mantener la solicitud abierta
signed Descargar resultado
cancelled, expired Cerrar el flujo; crear otra solicitud si procede
error Registrar datos de error y revisar la incidencia

No hay callback a BC. Usa una acción de actualización o una Job Queue; evita mantener una sesión AL bloqueada mientras el huésped firma. El detalle está en Integrar firma manuscrita.

4. Recuperar y archivar el PDF

Cuando el estado sea signed, llama con el bearer a GET /v1/signature-requests/{requestId}/result. La respuesta es binaria application/pdf, no JSON ni Base64. Copia el stream al almacenamiento/adjunto del documento de negocio.

Archiva el resultado dentro del plazo de retención. signed conserva el estado histórico aunque el archivo deje de estar disponible.

Si algo falla

Conserva la referencia de negocio, el identificador de solicitud y X-Trace-Id de la respuesta. Ante pérdida de la respuesta a creación, no envíes automáticamente otra solicitud: esta ruta no tiene idempotencia por clave y podría duplicarla.

Continúa con Errores y recuperación, Estados o Ejemplos REST.