# Parámetros de Intent

Esta página de referencia enumera todos los parámetros de entrada ("extras" del Intent) que puedes utilizar al comunicarte con la app Tap on Phone.

Debes pasar estos parámetros utilizando el método `putExtra()` al construir tus objetos `Intent`. Los parámetros obligatorios varían en función de la acción que estés realizando (como inicializar el POS, procesar un pago o transmitir una solicitud).

## Parámetros de autenticación y sesión

Estos parámetros gestionan la identidad del usuario, la vinculación del terminal y la autorización de Single Sign-On (SSO). Son obligatorios para casi todas las operaciones, incluidas las inicializaciones, las transacciones y las atestaciones en segundo plano.

| Nombre del Parámetro | Tipo de Dato | Obligatorio | Descripción |
| :--- | :--- | :--- | :--- |
| `userId` | Int | Sí | El identificador técnico de tu sistema para el usuario/comercio actual. |
| `userToken` | String | Sí | El token de autenticación seguro para el usuario. El backend de Tap on Phone envía este token a tu endpoint de SSO para autorizar la operación. |
| `merchantId` | Int | Sí | El ID único de Tap to Pay que representa a la empresa del comercio. Recibirás este identificador durante el proceso de incorporación del comercio. |
| `operationMetadata` | String | Condicional | Una cadena JSON serializada necesaria para la autorización de SSO. **Debe contener tu `ClientID`** (p. ej., `{"ClientID":"your-client-id"}`). Obligatorio para la inicialización, reembolsos y cancelaciones. |

## Parámetros de transacción

Debes pasar estos parámetros a la `POSActivity` al iniciar operaciones financieras.

| Nombre del Parámetro | Tipo de Dato | Obligatorio | Descripción |
| :--- | :--- | :--- | :--- |
| `transactionType` | String | Sí | Define la operación. Valores admitidos: `PURCHASE`, `REFUND`, `CANCEL`, `PREAUTH`, `WITHDRAW`. |
| `amount` | Long | Sí | El importe total de la transacción en **céntimos** (por ejemplo, pase `1200` para \$12.00). *Nota: Para las compras, esto debe incluir cualquier propina.* |
| `tip` | Long | No | El importe de la propina en **céntimos**. Esto es estrictamente un metadato. La app **no** añade este valor al `amount` automáticamente. |
| `originalTransaction` | String | Condicional | El ID de transacción de Tap on Phone del pago original. **Obligatorio solo** cuando el `transactionType` es `REFUND` o `CANCEL`. |
| `paymentMode` | String | No | Especifica el método de pago. Por defecto es `Card`. Valores admitidos: `Card`, `Link` (si es compatible con la configuración de tu comercio). |
| `externalTransactionReference` | String | No | El ID de referencia de tu sistema interno para este pedido. Si se proporciona, la app adjunta esta cadena al recibo de la transacción. |
| `acquirerMetadata` | String | No | Una cadena serializada adjunta a los datos de la transacción y reenviada al adquirente del pago. Puedes utilizar esto para informes avanzados o lógica de prevención de fraude acordada con tu gateway. |

## Parámetros de interfaz de usuario y comportamiento

Puedes utilizar estos parámetros para modificar cómo se comporta y aparece la pantalla de pago de Tap on Phone para el usuario.

| Nombre del Parámetro | Tipo de Dato | Obligatorio | Descripción |
| :--- | :--- | :--- | :--- |
| `locale` | String | No | Fuerza un idioma específico para la pantalla de pago. Formatéalo como `LANGUAGE`, `LANGUAGE_COUNTRY` o `LANGUAGE-COUNTRY` (p. ej., `en_US`, `fr_FR`). Por defecto es inglés si el idioma solicitado no es compatible. |
| `transitionAuto` | Boolean | No | Si es `true`, la app Tap on Phone realiza la transición automáticamente y devuelve el control a tu app inmediatamente después de que finalice la transacción. Si se omite o es `false`, conserva su comportamiento de cierre manual predeterminado. |

## Parámetros de Broadcast

Utiliza estos parámetros al enviar Broadcasts asíncronos de Android (p. ej., para comprobar el estado, forzar la atestación o consultar transacciones pasadas).

| Nombre del Parámetro | Tipo de Dato | Obligatorio | Descripción |
| :--- | :--- | :--- | :--- |
| `TransactionId` | String | Condicional | El UUID de la transacción que deseas comprobar. **Obligatorio solo** al enviar un `TRANSACTION_STATUS_BROADCAST`. |
| `ResponseAction` | String | No | Un nombre de acción personalizado que tú defines. La app Tap on Phone emitirá su broadcast de respuesta utilizando exactamente esta cadena en lugar de su nombre de acción predeterminado. |