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
HttpClientpermitidas y conversión del PDF a Base64. - Un registro de negocio donde guardar
requestIdy 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.