# Instalar el snippet

> El snippet es la forma más corta de capturar evidencia: dos tags en tu checkout y una llamada por evento. Se comunica con el canal navegador por ti.

Página: https://doc.rapidchargeback.com/es/canais/capture/instalar-o-snippet/

El snippet es la forma más corta de capturar evidencia: dos tags en tu checkout y una llamada por evento. Se comunica con el [canal navegador](https://doc.rapidchargeback.com/es/canais/capture/enviar-evento-navegador/) por ti.

Si tu checkout se renderiza en el servidor, o si prefieres no cargar un script de terceros, salta esta página y llama al endpoint directamente.

## Dónde obtener el token

En el panel, en **Configuración › Integraciones**, en la tarjeta del SDK de captura. Actívalo y el panel muestra el snippet listo, ya con el token del merchant seleccionado. La tarjeta aparece para quien tiene el producto de disputa activo.

El token es **publicable**: queda en el HTML de tu tienda y no necesita protección. Con él solo se pueden enviar eventos, nunca leer datos. Un evento que no corresponde a un pedido tuyo se descarta.

## Instalación

```html
<script src="https://api.rapidchargeback.com/sdk/v1/rapid.js"></script>
<script>rapid('init',{token:'tu_token_publicable'})</script>
```

Dos cosas importan en el orden de arriba:

1. el `init` tiene que venir después de la carga del script, por eso el tag no lleva `async` ni `defer`
2. el `init` ya empieza a identificar el dispositivo, así que llámalo lo antes posible en la página, no solo en el momento del pago

El script pesa unos 5 KB, no tiene dependencias y no bloquea la página.

## Llamadas

```js
// Compra finalizada. También captura los datos del dispositivo.
rapid('checkout', { order_ref: 'TXN-2026-001' })

// El cliente aceptó los términos.
rapid('terms', { order_ref: 'TXN-2026-001' })

// El cliente accedió al producto.
rapid('track', 'access_log', { order_ref: 'TXN-2026-001' })

// El cliente usó el producto o servicio.
rapid('track', 'usage_log', { order_ref: 'TXN-2026-001' })
```

| Llamada | Evento generado | Payload que arma el snippet |
|---|---|---|
| `rapid('checkout', …)` | `checkout` | identificación del dispositivo |
| `rapid('terms', …)` | `terms_acceptance` | la URL de la página |
| `rapid('track', 'access_log', …)` | `access_log` | la URL de la página |
| `rapid('track', 'usage_log', …)` | `usage_log` | la URL de la página |

El `order_ref` es obligatorio en todas. Es el identificador del pedido en tu sistema, el mismo que envías en `external_id` al crear la transacción. Ver [Tipos y payload](https://doc.rapidchargeback.com/es/canais/capture/payload/).

Una llamada sin `order_ref` se ignora: no genera evento ni error visible.

## Fire and forget

El snippet nunca rompe el checkout, y eso tiene un costo que vale la pena conocer:

- toda llamada es silenciosa. No lanza excepciones, no devuelve promesas y no lee la respuesta
- los errores de validación (tipo equivocado, `order_ref` demasiado largo) no aparecen en la consola
- las fallas de red no se reintentan en el navegador

Para **probar** la integración, llama al [endpoint del navegador](https://doc.rapidchargeback.com/es/canais/capture/enviar-evento-navegador/) directamente con curl, donde ves el estado y el mensaje. Una vez validado, el snippet hace lo mismo en producción.

El envío usa `navigator.sendBeacon` cuando está disponible, con `fetch` en modo `keepalive` como alternativa. Los dos sobreviven a la navegación a la página siguiente, así que el evento de checkout no se pierde en la redirección del pago.

## Identificación del dispositivo

En el `checkout`, el snippet identifica el dispositivo antes de enviar el evento. Intenta con Fingerprint, con un tope de 2 segundos, y recurre a una identificación propia si no lo logra (identificador en `localStorage` más un hash de atributos del navegador).

El resultado va en el campo `fp` del payload:

| `fp` | Significa |
|---|---|
| `pro` | identificación de Fingerprint, validada del lado del servidor |
| `fallback` | identificación propia del snippet |

La diferencia es práctica: solo la identificación validada completa el dispositivo y la IP de la transacción y genera el registro de verificación. Ver [El evento `checkout`](https://doc.rapidchargeback.com/es/canais/capture/payload/#el-evento-checkout).

Si tu sitio tiene una CSP restrictiva, Fingerprint se carga desde `https://fpjscdn.net`. Si se bloquea, la captura sigue funcionando en modo `fallback`.

## Cómo saber si está funcionando

La misma tarjeta del panel muestra si la cuenta ya recibió eventos y cuándo fue el último. Después de instalar, haz una compra de prueba y revísalo ahí.

## Próximos pasos

- [Tipos y payload](https://doc.rapidchargeback.com/es/canais/capture/payload/)
- [Enviar evento desde el navegador](https://doc.rapidchargeback.com/es/canais/capture/enviar-evento-navegador/)
- [Enviar evento desde el servidor](https://doc.rapidchargeback.com/es/canais/capture/enviar-evento-servidor/)
