# Acceso a Comprar

## Introducción

“Acceso a Comprar” define cómo los usuarios ingresan al flujo de compra del mercado secundaropio.  
Mientras que *Acceso a Vender* siempre comienza en **Mis Tickets**, dentro de tu plataforma, el acceso a comprar se origina en recorridos de usuario a nivel evento, también dentro de tu plataforma, tales como:

- Página del evento  
- Página de venta primaria agotada o Sold Out
- Listas de categorías  
- Experiencias con mapa integrado  

El modelo de integración determina:

- Cómo los compradores ven el inventario de reventa  
- Dónde y cómo aparecen los CTAs  
- Si la UI es contextual y basada en reglas  
- Qué tan nativa es la integración dentro de la plataforma  
- Si se muestra disponibilidad, precios piso y señales de marketplace  

menta soporta dos modelos de integración para habilitar el flujo de compra de reventa.

---

# Acceso a Comprar — Tabla comparativa

{% table highlight-first=true highlight-row=2 %}
| Modelo | Descripción | Cuándo tiene sentido | Beneficios | Limitaciones |
|--------|-------------|----------------------|------------|--------------|
| **Capa de Acceso Inteligente (SAL) — Modo Compra** *(Recomendado)* | La plataforma llama a SAL con contexto del evento y SAL devuelve todos los componentes UI necesarios | Cuando se busca una experiencia nativa y contextual | Componentes dinámicos; UI basada en reglas; disponibilidad en tiempo real | Requiere renderizado de componentes y llamada SAL por contexto |
| **URL Estática / Redirección a menta** | Un link dirige al usuario a la página de reventa en menta | Cuando la prioridad es tiempo de salida | Implementación mínima | No hay UI dinámica ni integración contextual |
{% /table %}

{% conditionaltabs id="tabs-1765463808480" %}
{% tab label="Capa de Acceso Inteligente" %}
# Capa de Acceso Inteligente *(Recomendado)*

## Descripción general

La **Capa de Acceso Inteligente (Smart Access Layer — SAL)** en modo compra genera **todos los componentes de UI necesarios** para operar la compra de reventa.

La plataforma realiza la siguiente llamada:

```
GET /v1/wrapper/accesslayer?type=buy&eventId={eventId}&showId={showId}
```

SAL evalúa:

- Configuración de reventa por categoría  
- Reglas de visibilidad  
- Precios piso, disponibilidad y distribución  
- Señales del marketplace  
- Comportamientos UI basados en reglas  

Y devuelve una estructura completa de componentes preconfigurados, como:

- Banner de compra  
- Modal de compra  
- Botón de comprar  
- Lista de categorías (con disponibilidad y CTAs)  
- Mapa del venue integrado  

Todos los componentes vienen listos para renderizar y reflejan en tiempo real las reglas configuradas en el dashboard.

---

## Ejemplo de respuesta SAL (simplificado)

## Cómo interpretar la respuesta

La respuesta incluye una colección de componentes UI que la plataforma debe renderizar:

{% columns gap="2rem" align="start" %}

{% column width="1" valign="center" %}
```
{
    "status": 200,
    "data": [
        {
            "type": "banner",
            "class": "buyBanner",
            "buyBanner": {
                "title": "Buy Tickets Now",
                "description": "Best seats available",
                "image": "https://cdn.example.com/sal/banner.png",
                "visible": true,
                "colors": {
                    "background": "#0A1F44",
                    "text": "#FFFFFF"
                },
                "callToAction": {
                    "text": "View options",
                    "url": "http://event.mentatickets.com",
                    "enabled": true
                }
            }
        },
        {
            "type": "modal",
            "class": "buyModal",
            "buyModal": {
                "title": "Complete Your Purchase",
                "description": "Secure checkout in seconds",
                "image": "https://cdn.example.com/sal/modal.png",
                "visible": true,
                "callToAction": {
                    "text": "Continue",
                    "url": "http://event.mentatickets.com",
                    "enabled": true
                }
            }
        },
        {
            "type": "button",
            "class": "buyButton",
            "buyButton": {
                "visible": true,
                "callToAction": {
                    "text": "Buy Tickets",
                    "url": "http://event.mentatickets.com",
                    "enabled": true,
                    "colors": {
                        "background": "#F25C54",
                        "text": "#FFFFFF"
                    }
                },
                "colors": {
                    "background": "#F25C54",
                    "text": "#FFFFFF"
                }
            }
        },
        {
            "type": "list",
            "class": "categoriesList",
            "categoriesList": {
                "categories": [
                    {
                        "ticketOptionId": "17635820544251",
                        "quantityForSale": 0,
                        "floorPrice": 0,
                        "visible": true,
                        "callToAction": {
                            "text": "Check availability",
                            "url": "http://event.mentatickets.com",
                            "enabled": true,
                            "colors": {
                                "background": "#FFFFFF",
                                "text": "#0A1F44"
                            }
                        },
                        "colors": {
                            "background": "#FFFFFF",
                            "text": "#0A1F44"
                        }
                    },
                    {
                        "ticketOptionId": "17635820544252",
                        "quantityForSale": 0,
                        "floorPrice": 0,
                        "visible": true,
                        "callToAction": {
                            "text": "Check availability",
                            "url": "http://event.mentatickets.com",
                            "enabled": true,
                            "colors": {
                                "background": "#FFFFFF",
                                "text": "#0A1F44"
                            }
                        },
                        "colors": {
                            "background": "#FFFFFF",
                            "text": "#0A1F44"
                        }
                    }
                ]
            }
        },
        {
            "type": "map",
            "class": "integratedMap",
            "integratedMap": {
                "map": {
                    "config": {
                        "allowOrphanTicketSelection": true
                    },
                    "totalCount": 0,
                    "bestListing": null,
                    "results": []
                }
            }
        }
    ]
}
```
{% /column %}

{% column width="0.75" valign="top" sticky=true %}


{% codeannotation highlight-lines="4:22" %}
**Banner**

Indica disponibilidad, mensajes destacados o estados del marketplace.

{% /codeannotation %}

{% codeannotation highlight-lines="11" %}
**Visibilidad**
Disponible en todos los componentes: define si debes mostrarlo o no.
{% /codeannotation %}


{% codeannotation highlight-lines="23:37" %}
**Modal**

Ventana emergente para completar la compra con información destacada.
{% /codeannotation %}

{% codeannotation highlight-lines="38:57" %}
**Botón "Comprar reventa"**

Visible solo si existe inventario disponible.
{% /codeannotation %}

{% codeannotation highlight-lines="58:103" %}
**Lista de categorías**

Incluye:

- Título  
- Disponibilidad  
- Precio piso  
- CTA específico por categoría  
{% /codeannotation %}

{% codeannotation highlight-lines="103:119" %}
**Mapa Integrado**

Se habilita únicamente si:

- El evento tiene seating  
- El partner decide mostrarlo  
- Hay inventario distribuido por zonas  
{% /codeannotation %}

**Reglas de visibilidad**

Si una categoría está deshabilitada o restringida en el dashboard,  
**no aparecerá en la respuesta SAL**.

La plataforma **no debe replicar lógica de negocio**, solo renderizar lo que SAL provee.

{% /column %}
{% /columns %}


---

## Cuándo tiene sentido este modelo

- Se busca una experiencia nativa integrada dentro de la plataforma  
- Se necesita visibilidad en tiempo real de disponibilidad por categoría  
- La UI debe adaptarse automáticamente a reglas del dashboard  
- El partner no quiere mantener lógica de elegibilidad o pricing  
- Se desea unificar la experiencia primaria + secundaria  

---

## Beneficios

### 1. UI completamente dinámica y basada en reglas
SAL controla qué se muestra y en qué condiciones.

### 2. Un solo endpoint para todos los componentes
Banner, botones, categorías y mapa en una sola llamada.

### 3. Adaptación automática
Los cambios en el dashboard se reflejan inmediatamente sin desarrollo adicional.

### 4. Experiencia nativa y coherente
El usuario no percibe un salto entre sistemas.

### 5. Sin duplicación de lógica
Toda la inteligencia está centralizada en menta.

---

## Limitaciones

- Requiere renderizar los componentes devueltos por SAL  
- Necesita una llamada por cada contexto de compra  
- No permite comportamientos personalizados fuera del modelo SAL  

{% /tab %}
{% tab label="URL Estática" %}
# URL Estática

## Descripción general

La plataforma coloca un botón o enlace como:

**"Comprar entradas de reventa"**

Que redirige al usuario a un dominio de menta.  
No se generan componentes dinámicos ni visibilidad contextual en la UI primaria.

---

## Generación de URLs

Existen dos formas de generar las URLs estáticas para el flujo de compra:

### 1. Vía API (Recomendado)

La forma recomendada es utilizar el endpoint de API de menta para generar URLs dinámicas con todas las opciones de configuración disponibles.

{% apiembed endpoint="get-marketplace-buyingflow-url-entrypoint" show="description,parameters,requestBody,responses" /%}

#### Parámetros principales

- **externalReferenceEventId**: Identificador del evento
- **showId**: Identificador de la función (requerido)
- **ticketOptionId**: Identificador de la categoría de acceso (opcional)
- **returnTo**: URL para redirigir usuarios después de la compra (requerido)
- **lang**: Código de idioma para la interfaz (opcional)
- **loginTrust[user]**: Email o teléfono del usuario autenticado cuando se usa Login Trust (opcional)

#### Ejemplo de uso

```bash
GET /v1/marketplace/buyingflow/url/entrypoint?externalReferenceEventId=123&showId=456&returnTo=https://example.com
Authorization: Bearer {your_api_key}
```

La respuesta incluye la URL completa lista para usar:

```json
{
  "status": 200,
  "data": "https://events.mentatech.io/es/123/456?ticketSellerId=1010",
  "errors": null
}
```

### 2. URL manual

Alternativamente, puedes construir la URL manualmente siguiendo el formato estándar de menta, aunque esta opción ofrece menos flexibilidad y no incluye todas las opciones de configuración disponibles vía API.

---

## Autenticación y registro

### Login Trust

Puedes agregar el parámetro `loginTrust[user]` a cualquier URL generada para habilitar autenticación transparente. Esto permite que usuarios ya autenticados en tu plataforma accedan al marketplace sin necesidad de iniciar sesión nuevamente.

Para más detalles sobre la implementación de Login Trust, consulta la [guía de autenticación](/es/guides/auth).

{% callout type="info" %}
**Tip:** La URL generada puede incluir Login Trust agregando el parámetro `loginTrust[user]` con el email o teléfono del usuario autenticado. Esto funciona tanto con URLs generadas vía API como con URLs manuales.
{% /callout %}

### Forzar registro sin Login Force

Si no implementas Login Force pero necesitas que los usuarios estén registrados antes de poder comprar, puedes configurar tu endpoint de sincronización de tickets para que devuelva un código HTTP **404** cuando un usuario no autenticado intente acceder.

#### Implementación

En tu endpoint de sincronización de tickets (el que menta consulta para validar la propiedad de tickets), cuando detectes que el usuario no está autenticado o no tiene una cuenta:

**Devuelve el código HTTP 404**

Esto hará que menta redirija al usuario a tu página de registro o login antes de permitirle continuar con la compra.

---

## Cuándo tiene sentido

- Cuando el objetivo es habilitar reventa rápidamente  
- Cuando no es posible integrar SAL por ahora  
- Cuando no se requiere mostrar disponibilidad o precios piso en la página del evento  
- Cuando SAL se planea incorporar más adelante  

---

## Beneficios

- Implementación extremadamente sencilla  
- Solo requiere agregar un enlace  
- Permite habilitar reventa en muy poco tiempo  
- Flexibilidad para agregar autenticación y parámetros vía API

---

## Limitaciones

### 1. Sin componentes dinámicos
No se muestran disponibilidad, categorías, mapas ni precios piso.

### 2. Sin lógica de visibilidad
Si la reventa está deshabilitada, la UI primaria no lo reflejará.

### 3. Sin soporte para capacidades avanzadas
Las funciones futuras requieren SAL.

{% /tab %}
{% /conditionaltabs %}