SDK · Manuales
Descargas

XamiLib PHP — Referencia de clases

Namespace: Xami\SDK. El punto de entrada es la clase XamiSDK, que da acceso a los distintos servicios.


XamiSDK

Punto de entrada de la librería.

Constructor

new XamiSDK(array $config)

$config acepta:

Clave Descripción
endpoint URL del servicio local (por defecto http://127.0.0.1:8300).
wrapper_key Credencial de aplicación (wrp_...).
wrapper_secret Secret de la credencial (wsec_...).
timeout Timeout HTTP en segundos (opcional).

Métodos

Método Devuelve Descripción
pades() Pades Servicio de firma de documentos PDF.
blockchain() Blockchain Servicio de firma de transacciones EVM.
credentials() Credentials Consulta de credenciales.
designs() Designs Consulta de diseños de sello.
health() Health Estado del servicio local.

Pades

Firma de documentos PDF (PAdES).

Métodos

sign(string $pdfBytes, array $opts): string

Envía un PDF a firmar. Devuelve el request_id. $opts: credential_key (requerido), design_key, variables, reason, location, signer_name.

result(string $requestId): array

Consulta el estado. Cuando está DONE, incluye el PDF firmado.

wait(string $requestId, int $timeoutSeconds = 60, float $pollSeconds = 1.0): string

Bloquea hasta que la firma esté lista y devuelve el PDF firmado (binario).

signAndWait(string $pdfBytes, array $opts, int $timeoutSeconds = 60): string

Atajo: sign() + wait(). Devuelve el PDF firmado.

Ejemplo

$pdfFirmado = $xami->pades()->signAndWait(
    file_get_contents('documento.pdf'),
    [
        'credential_key' => 'TU_CREDENCIAL',
        'signer_name'    => 'Tu Nombre',
        'reason'         => 'Aprobación',
        'variables'      => ['name' => 'Tu Nombre'],
    ]
);
file_put_contents('documento_firmado.pdf', $pdfFirmado);

Blockchain

Firma de transacciones / mensajes EVM. El chip actúa como wallet y devuelve r/s/v; tú ensamblas la transacción con tu web3.

Métodos

sign(string $txHash, array $opts): string

Envía el hash a firmar. Devuelve el request_id. $opts: credential_key (requerido, credencial EVM), chain_id.

result(string $requestId): array

Consulta el estado.

wait(string $requestId, int $timeoutSeconds = 60, float $pollSeconds = 1.0): array

Bloquea hasta tener la firma. Devuelve ['r' => ..., 's' => ..., 'v' => ...].

signAndWait(string $txHash, array $opts, int $timeoutSeconds = 60): array

Atajo: sign() + wait().

Ejemplo

$firma = $xami->blockchain()->signAndWait('0xHASH_DE_LA_TX', [
    'credential_key' => 'TU_CREDENCIAL_EVM',
    'chain_id'       => 648541,
]);
// $firma['r'], $firma['s'], $firma['v']

Credentials

Consulta de credenciales en la caché local.

Método Devuelve Descripción
all(): array lista Todas las credenciales disponibles.
get(string $key): ?array credencial o null Una credencial por su credential_key.

Designs

Consulta de diseños de sello en la caché local.

Método Devuelve Descripción
all(): array lista Todos los diseños disponibles.
get(string $key): ?array diseño o null Un diseño por su design_key.

Health

Método Devuelve Descripción
self(): array estado Estado del servicio local (pareado, tenant, etc.).

Manejo de errores

Todos los métodos lanzan Xami\SDK\XamiException ante un fallo (credencial inválida, servicio caído, timeout). Envuélvelos en try/catch.

use Xami\SDK\XamiException;

try {
    $pdf = $xami->pades()->signAndWait($bytes, ['credential_key' => '...']);
} catch (XamiException $e) {
    error_log('Error al firmar: ' . $e->getMessage());
}
Descargar este manual (.md)