Saltar al contenido

Acceso de clientes a facturas ​

Factulit puede alojar un portal de solo lectura con las facturas de un pedido. Tu servidor autentica al cliente local y llama a Factulit; el navegador solo recibe una URL aleatoria que caduca a los 30 minutos. Nunca expongas una API key en JavaScript, HTML, una redirección o un iframe.

Flujo recomendado ​

  1. En el historial de pedidos, envía hasta 50 identificadores externos a POST /api/v1/order/invoice-availability desde el servidor. Muestra “Ver facturas” solo para los elementos available.
  2. Al pulsar, pasa por un controlador local protegido. Comprueba de nuevo que el cliente autenticado posee el pedido usando la autorización nativa del CMS.
  3. El controlador llama a POST /api/v1/order/invoice-access con presentation: link y redirige a viewer_url.
  4. Si la URL ha caducado, repite el paso 3. No la guardes como un campo permanente del pedido.
php
// Ejemplo server-side después de que el CMS autorice el acceso a $order.
$response = $http->post('/api/v1/order/invoice-access', [
    'headers' => ['X-API-KEY' => getenv('FACTULIT_API_KEY')],
    'json' => ['order_id' => (string) $order->externalId(), 'presentation' => 'link'],
]);

if ($response->getStatusCode() === 200) {
    $data = json_decode($response->getBody(), true)['data'];
    if ($data['state'] === 'available') {
        redirect($data['viewer_url']);
    }
}

Un pedido desconocido devuelve 404; la función desactivada, 403; una entrada inválida o un origen de iframe no registrado, 422. Respeta 429, 503 y Retry-After. Un pedido conocido sin facturas entregables devuelve 200 con state: not_available.

Integraciones con iframe ​

Usa presentation: embed y envía el origen HTTPS exacto de la página que contendrá el iframe. Debe pertenecer previamente a la conexión o a su inventario multitienda; no se admiten comodines ni orígenes arbitrarios.

html
<!-- viewerUrl procede de tu backend; nunca se genera en el navegador. -->
<iframe src="<?= htmlspecialchars($viewerUrl) ?>" title="Facturas" loading="lazy"></iframe>

El portal de enlace normal no puede cargarse en un frame. Los tokens son capacidades opacas: no registres la URL completa, no la envíes a analítica y no la compartas entre clientes. En pedidos de invitado solo se puede usar un flujo nativo con order key o sesión que ya demuestre la propiedad; en caso contrario se conserva el enlace enviado por email.

El titular puede desactivar esta función en Conexión → Acceso de clientes a facturas dentro de Factulit. Al desactivarla se invalidan inmediatamente las capacidades vigentes.

Documentacion publica de la API de Factulit.