8. Para desarrolladores: usar FirmaDoc desde otro plugin

Otro plugin puede mandar a firmar, consultar el estado y recuperar el documento firmado sin conocer el interior de FirmaDoc. Todo pasa por FirmaDocApi, que es lo único que se mantiene estable entre versiones: los modelos, las tablas y los controladores pueden cambiar.

use FacturaScripts\Plugins\FirmaDoc\Lib\FirmaDocApi;

Declare la dependencia en su facturascripts.ini:

require = FirmaDoc

Mandar a firmar

$firma = FirmaDocApi::enviar([
    'ficheros'  => ['/ruta/contrato.docx'],       // PDF o Word; obligatorio
    'firmantes' => [                               // obligatorio
        ['nombre' => 'Ana Pérez', 'email' => 'ana@ejemplo.com', 'telefono' => '600111222'],
    ],
    'titulo'        => 'Contrato de obra 2026/014',
    'modo'          => 'paralelo',                 // unico | paralelo | secuencial
    'codcliente'    => '42',
    'origen_plugin' => 'MiPlugin',                 // para reencontrarla después
    'origen_modelo' => 'ContratoObra',
    'origen_id'     => 14,
]);

Indique siempre el origen: es lo que le permite después encontrar sus firmas con porOrigen() sin guardarse el identificador por su cuenta.

Enterarse de que han firmado

Desde el init() de su plugin, porque la firma ocurre en la petición del firmante:

FirmaDocApi::alFirmar(function (array $firma) {
    if ($firma['origen_plugin'] !== 'MiPlugin') {
        return;
    }
    // $firma['origen_id'] es su registro
});

El resto

FirmaDocApi::estado($id);            // estado, firmantes, enlaces y fechas
FirmaDocApi::pdfFirmado($id);        // el firmado con su certificado
FirmaDocApi::pdfOriginal($id);       // tal como se envió
FirmaDocApi::documentoIntacto($id);  // si sigue siendo el que se firmó
FirmaDocApi::cancelar($id);
FirmaDocApi::reenviar($id);
FirmaDocApi::eliminar($id);
FirmaDocApi::disponible();           // si se puede enviar, y si no, por qué
FirmaDocApi::wordAPdf($ruta, $error);

Tres cosas que conviene saber de antemano:

  • Una firma completada no se puede borrar. eliminar() se niega, y con razón: es

la prueba de que alguien firmó, y no puede desaparecer porque se borre el registro que la originó.

  • Los firmantes sin correo o repetidos se descartan solos.
  • Con {{firma.aqui}} no se usa LibreOffice aunque esté instalado.

La documentación completa, con todos los parámetros, está en el fichero API.md que viene dentro del plugin.

Cookies
Usamos cookies necesarias para el funcionamiento del sitio y cookies opcionales para recordar tus preferencias y mejorar tu experiencia. Puedes aceptarlas todas, rechazarlas o configurar tus preferencias

Soporte