> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onflay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Developers

> Integra pagos, checkout y webhooks de Onflay desde tu proyecto.

Onflay permite integrar checkout hospedado, pagos en USD y webhooks firmados usando SDKs oficiales y la CLI. Puedes arrancar un proyecto completo sin abrir el dashboard.

Con la integración para developers puedes:

* definir tu catálogo de productos o servicios desde un archivo TypeScript versionado;
* crear sesiones de checkout desde tu backend con una línea de código;
* usar API keys separadas para sandbox y producción;
* recibir webhooks firmados para activar acceso o sincronizar tu sistema;
* probar localmente con el túnel de webhooks de la CLI.

<Info>
  Onflay opera en USD. La comisión Onflay estándar es 5% + US\$0.20 por venta exitosa; el procesador de pago se descuenta según su costo real.
</Info>

## Dos formas de arrancar

### Opción A — CLI-first (recomendada)

Define todo tu catálogo en un archivo TypeScript, aplícalo al entorno y genera los IDs listos para usar. No necesitas el dashboard para configurar productos o precios.

```bash theme={"dark"}
pnpm add -D onflay
export ONFLAY_API_KEY=sk_test_...

npx onflay catalog plan pricing.onflay.ts   # previsualiza cambios
npx onflay catalog apply pricing.onflay.ts  # sincroniza con el entorno
npx onflay catalog codegen pricing.onflay.ts --out src/onflay-catalog.ts
```

Ve a la [guía de la CLI](/developers/cli) para ver el formato completo del archivo de catálogo y todos los comandos disponibles.

### Opción B — SDK directo

Instala el SDK de Node y crea sesiones de checkout desde tu backend apuntando a IDs ya existentes:

```bash theme={"dark"}
pnpm add @onflay/node @onflay/webhooks
```

```ts theme={"dark"}
import { Onflay } from '@onflay/node';

const onflay = new Onflay(process.env.ONFLAY_API_KEY!);

const session = await onflay.checkoutSessions.create({
  listingId: 'lst_...',
  variantId: 'var_...', // opcional
  customerEmail: 'comprador@ejemplo.com',
  successUrl: 'https://tu-app.com/gracias',
  cancelUrl: 'https://tu-app.com/precios',
});

// Redirige al comprador
redirect(session.url);
```

***

## Flujo típico

<Steps>
  <Step title="Obtén una API key de sandbox">
    Usa `sk_test_...` para todo lo que sea backend en pruebas.
  </Step>

  <Step title="Define tu catálogo">
    Crea `pricing.onflay.ts` y aplícalo con la CLI, o usa IDs del dashboard directamente.
  </Step>

  <Step title="Crea una sesión de checkout">
    Tu backend genera la sesión con `listingId`/`variantId` (o `lineItems` si ya trabajas con `priceId`) y redirige al comprador a `session.url`.
  </Step>

  <Step title="Escucha webhooks">
    Confirma pagos con eventos firmados. No dependas solo de la URL de éxito.
  </Step>

  <Step title="Pasa a producción">
    Cambia a `sk_live_...`, aplica el catálogo sobre producción y configura webhooks live.
  </Step>
</Steps>

***

## Paquetes disponibles

| Paquete            | Uso                                                   |
| ------------------ | ----------------------------------------------------- |
| `@onflay/node`     | SDK de servidor — sesiones de checkout, API           |
| `@onflay/webhooks` | Verificación de firma de webhooks                     |
| `@onflay/react`    | Componentes de frontend (checkout embebido)           |
| `onflay`           | CLI — catálogo declarativo, webhooks locales, eventos |

<Note>
  También puedes usar `lineItems` con `priceId` si ya operas con un catálogo de Products/Prices. Para integraciones nuevas, recomendamos `listingId`/`variantId` porque simplifica el checkout y se alinea con el flujo actual de catálogo/codegen.
</Note>
