# Tokenización con channel managers

## Antes de empezar[​](#antes-de-empezar "Enlace directo al Antes de empezar")

Este documento describe el proceso de tokenización de tarjetas de pago, donde la información de la tarjeta se recibe, se tokeniza y se devuelven los tokens para el procesamiento seguro de pagos. La integración consiste en realizar una solicitud al endpoint de MONEI, especificando el channel manager para recuperar esta información.

La tokenización de tarjetas de pago es un proceso seguro en el que la información de la tarjeta se sustituye por tokens para mejorar la seguridad durante las transacciones de pago. Este documento detalla el proceso de tokenización, los channel managers compatibles y proporciona directrices de integración.

## Descripción general del proceso de tokenización[​](#descripción-general-del-proceso-de-tokenización "Enlace directo al Descripción general del proceso de tokenización")

El proceso de tokenización de tarjetas de pago en nuestro lado implica los siguientes pasos clave:

1. **Solicitar información del channel manager:** Realiza una solicitud a nuestro endpoint, especificando el channel manager deseado para recuperar la información de las tarjetas.
2. **Recibir información de la tarjeta:** Como empresa compatible con PCI, el sistema recibe la información de la tarjeta de forma segura.
3. **Tokenización:** La información de la tarjeta recibida se tokeniza y se genera una respuesta con los tokens.
4. **Devolver tokens:** Los tokens generados se devuelven a la entidad solicitante para el procesamiento seguro de pagos.

## Integración[​](#integración "Enlace directo al Integración")

info

Debes añadir tu [clave de API de MONEI](https://docs.monei.com/es/es/apis/rest/.md) en la cabecera de tu solicitud para autenticarla.

Puedes activar el **modo de prueba y usaremos las URLs de preproducción de Siteminder y Channex**; puedes activarlo en tu panel.

### [Siteminder](https://www.siteminder.com/)[​](#siteminder "Enlace directo al siteminder")

Siteminder es un sistema de gestión de canales ampliamente utilizado. Admitimos la tokenización de tarjetas de pago a través del siguiente endpoint de API:

**Endpoint:** `https://api.monei.com/v1/partner/tokens`

**Método:** `POST`

#### Solicitud:[​](#solicitud "Enlace directo al Solicitud:")

```
{

  "accountId": "<monei_account_id>",

  "hotelCode": "<hotel_code>",

  "sessionId": "<uuid4>",

  "channelManagerType": "SITEMINDER",

  "siteminderName": "<siteminder_name>",

  "username": "<username>",

  "password": "<password>",

  "echoToken": "<uuid4>"

}
```

* **accountId** `string` - Identificador único que representa el **ID de cuenta de MONEI al que se transferirá el pago**. Es un UUID (Identificador Único Universal).
* **hotelCode** `string` - Código que identifica de forma única al hotel. **Lo proporciona Siteminder**
* **sessionId** `string` - Un identificador único universal (UUID) que representa la sesión.
* **channelManagerType** `string` - Indica el **nombre del channel manager**. Es un String con dos valores posibles: `SITEMINDER` o `CHANNEX`. En este caso usaremos `SITEMINDER`.
* **siteminderName** `string` - El nombre de tu cuenta en Siteminder.
* **username** `string` - El nombre de usuario utilizado para la autenticación. **Lo proporciona Siteminder**.
* **password** `string` - La contraseña asociada al nombre de usuario proporcionado, para fines de autenticación. **La proporciona Siteminder**.
* **echoToken** `string` - Identificador único global para la solicitud; **el valor se devolverá como EchoToken en la respuesta**.

nota

Al actuar como [**proxy para Siteminder**](https://siteminder.atlassian.net/wiki/spaces/PMSXCHANGEV2/pages/1875838050/PMS+Tokenization+in+SiteMinder), se devuelve la misma respuesta que si se interactuara directamente con ellos, con la adición del campo `<MoneiResponse>` que contiene la **información del token de pago**.

#### Respuesta:[​](#respuesta "Enlace directo al Respuesta:")

```
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">

    <SOAP-ENV:Header />

    <SOAP-ENV:Body>

        <OTA_ResRetrieveRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0"

            TimeStamp="2024-01-17T11:38:03+00:00" EchoToken="uuid4">

            <Success />

            <ReservationsList>

                <HotelReservation CreateDateTime="2024-01-16T16:47:07+00:00" ResStatus="Book">

                        <!--

                        All the siteminder response

                        <POS>

                        <RoomStays>

                        <ResGuests>

                        ... -->

                        <MoneiResponse>

                            <payment_token>298b7c3bc2951ca0513e0e07d495b33ddf29d7ae</payment_token>

                            <expiration>1843430400</expiration>

                            <type>credit</type>

                            <last4>4414</last4>

                            <brand>MC</brand>

                            <cardHolderName>Joan Sanfeliu</cardHolderName>

                        </MoneiResponse>

                    </ResGlobalInfo>

                </HotelReservation>

            </ReservationsList>

        </OTA_ResRetrieveRS>

    </SOAP-ENV:Body>

</SOAP-ENV:Envelope>
```

* `<MoneiResponse>`: Es un elemento contenedor que **encapsula la información de la respuesta de MONEI**.
* `<payment_token>`: **Token creado por MONEI con la información de la tarjeta de la reserva**. Este token se utiliza normalmente en [transacciones posteriores](https://docs.monei.com/es/es/apis/rest/payments-create/.md) en lugar de los datos reales de la tarjeta por razones de seguridad.
* `<expiration>`: Indica la **fecha de vencimiento** del token de pago.
* `<type>`: Especifica el tipo de método de pago, en este caso "credit". Indica que la información tokenizada corresponde a una tarjeta de crédito.
* `<last4>`: Representa los **últimos cuatro dígitos** del número de tarjeta.
* `<brand>`: Denota la **marca o red de la tarjeta** asociada a la tarjeta. En este ejemplo, "MC" probablemente significa MasterCard.
* `<cardHolderName>`: Proporciona el nombre del titular de la tarjeta asociado a la tarjeta; este campo contiene el **nombre de la persona a quien pertenece la tarjeta**.

Estos elementos proporcionan conjuntamente detalles sobre un método de pago tokenizado, permitiendo transacciones seguras y con privacidad mejorada sin exponer información sensible de la tarjeta.

### [Channex](https://channex.io/)[​](#channex "Enlace directo al channex")

Channex es otro sistema de gestión de canales que se integra perfectamente con el proceso de tokenización. **Exponemos el mismo endpoint, pero cambiando el parámetro channelManagerType a `CHANNEX`**:

**Endpoint:** `https://api.monei.com/v1/partner/tokens`

**Método:** `POST`

#### Solicitud:[​](#solicitud-1 "Enlace directo al Solicitud:")

```
{

  "accountId": "<monei_account_id>",

  "sessionId": "<uuid4>",

  "channelManagerType": "CHANNEX",

  "channexId": "<your_channex_api_key>",

  "propertyId": "<property_id>"

}
```

* **accountId** `string` - Identificador único que representa el **ID de cuenta de MONEI al que se transferirá el pago**. Es un UUID (Identificador Único Universal).
* **sessionId** `string` - Un identificador único universal (UUID) que representa la sesión.
* **channelManagerType** `string` - Indica el **nombre del channel manager**. Es un String con dos valores posibles: `SITEMINDER` o `CHANNEX`. En este caso usaremos `CHANNEX`.
* **channexId** `string` - [Clave de API de Channex](https://docs.channex.io/application-documentation/api-key-access).
* **propertyId** `string` - **Opcional**. El ID de la propiedad por la que deseas filtrar; si no se proporciona, devolverá todas las entradas del [Booking Revision Feed](https://docs.channex.io/api-v.1-documentation/bookings-collection#booking-revisions-feed).

#### Respuesta:[​](#respuesta-1 "Enlace directo al Respuesta:")

```
[

  {

    "paymentToken": "b27b97a729ab9cefa8765eccf25d636b13f887cc",

    "expireAt": 2678401,

    "paymentMethod": {

      "method": "card",

      "card": {

        "country": "US",

        "last4": "8164",

        "bank": "Wex Bank",

        "bin": "53463306",

        "cardholderName": "Joan Sanfeliu",

        "expiration": 1767225600,

        "type": "credit",

        "brand": "mastercard"

      }

    },

    "attributes": {

      "id": "cbc57822-912c-4663-a9e5-3930b7539958",

      "meta": {

        "ruid": "Ykc2RlIyh9YUA66gHNu0pFCmOkmrTcr9qWngFe1gY4xjUlSmD+RVGXDjWrLMNL75u7DwI7i7eM9Vu047Nzj/TuNw+WkXmHOFc="

      },

      "status": "new",

      "currency": "GBP",

      "amount": "615.00",

      All the rest of the channex response without card number exposed ...

    }

  }

]
```

* `payment_token`: **Token creado por MONEI con la información de la tarjeta de la reserva**. Este token se utiliza normalmente en [transacciones posteriores](https://docs.monei.com/es/es/apis/rest/payments-create/.md) en lugar de los datos reales de la tarjeta por razones de seguridad.
* `expireAt`: Indica la **fecha de vencimiento** del token de pago.
* `paymentMethod`: Indica **más información** sobre el método de pago que el usuario utilizó en su reserva.
