# Pagos

Habilita el procesamiento de pagos con Stripe.

### Sintaxis

```
$ vela enable payments
```

### Opciones

- `--provider <provider>` - Proveedor de pagos, por defecto `stripe`

El módulo de pagos crea las tablas de base de datos y el código necesarios para el procesamiento de pagos, los eventos de webhook, los recibos, los barridos y más.

### Tablas de la base de datos

El módulo de pagos crea las siguientes tablas de base de datos:

```
stripe_products
stripe_prices
```

### Webhooks

Los webhooks de Stripe se generan en `src/routes/webhooks/stripe`, con el evento de intención de pago completada incluido por defecto.

### Clientes

> [Depende de: auth](/es/enable/auth)

Si la autenticación está habilitada con el comando `vela enable auth`, se crea un cliente de Stripe para cada usuario en el registro y los métodos de pago del usuario se pueden guardar y gestionar en la página de configuración de facturación del usuario. El cliente lo vincula el [workflow](/es/workflows) `link-stripe-customer`, iniciado por la acción de registro con el id del usuario como clave de idempotencia, así que registrarse nunca espera a Stripe y un reintento nunca crea un segundo cliente. La página de facturación muestra un estado de preparación durante el instante que tarda.

### Tablas de la base de datos

Estas tablas adicionales se crean si la autenticación está habilitada:

```
stripe_customers
stripe_payment_methods
transactions
```

### Webhooks

Además del evento de intención de pago completada, el evento de método de pago adjuntado se incluye por defecto para el usuario autenticado.

### Workflows

El trabajo de Stripe que no pertenece al camino de la petición se ejecuta como [workflows](/es/workflows) en `src/lib/workflows`:

- `stripe-event` - La ruta del webhook verifica la firma de cada evento y encola una ejecución por id de evento. La ejecución llama al manejador de `src/routes/webhooks/stripe/handlers/dispatch.ts`; un manejador que lanza un error se reintenta con espera creciente, y un reenvío del mismo evento cae en la ejecución que ya existe.
- `sync-stripe-products` y `sync-stripe-prices` - Recurrentes cada diez minutos en `sync-stripe-catalog.ts`, añadiendo los productos y precios nuevos en Stripe y actualizando el resto.
- `sync-stripe-customers` - Recurrente cada diez minutos cuando la autenticación está habilitada, vinculando a cualquier usuario que no haya pasado por el registro.

Todas las ejecuciones, con sus pasos y cualquier error, aparecen en **Workflows**, en el panel de PocketBase.