# Crear un pago

Esta guía te muestra cómo procesar una transacción de pago estándar utilizando la aplicación Get Mini. El pago cobra un importe especificado a una tarjeta en una sola operación. Esta integración depende de un PIN pad conectado por Bluetooth para gestionar la lectura de la tarjeta y la introducción del PIN.

## Requisitos

Antes de empezar, asegúrate de tener:

* La **aplicación Get Mini** instalada en el dispositivo Android
* El **dispositivo PIN pad** emparejado por Bluetooth y conectado dentro de la aplicación Get Mini
* El **ActivityResultLauncher** registrado en tu Activity para recibir los resultados

<Callout type="tip">

Asegúrate de que el PIN pad está encendido y correctamente emparejado antes de iniciar las transacciones.

</Callout>

## Proceso de la transacción de pago

Esta sección te guía en el proceso de creación y ejecución de una transacción de pago con la integración Get Mini App2App. Aprenderás a construir el intent y a gestionar el resultado de la transacción.

### Paso 1: Crear e iniciar el intent de pago

Una transacción de pago implica crear un intent con la acción de Get Mini, añadir los parámetros de la transacción e iniciarlo utilizando tu `ActivityResultLauncher`. La aplicación Get Mini gestiona la interacción con el PIN pad y procesa el pago.

La siguiente tabla enumera los parámetros que debes incluir en tu intent:

| Parámetro | Tipo | Obligatorio | Descripción |
| :---- | :---- | :---- | :---- |
| `amount` | double | Sí | El importe total a cobrar |
| `invoice` | String | No | Número de pedido o identificador opcional para el seguimiento |

El siguiente ejemplo de código muestra cómo crear e iniciar un intent de pago:

```java
// Initialize the Intent with the Get Mini action
Intent intent = new Intent("es.redsys.paysys.mPOSRedsys_PAYMENT_REQUEST");

// Add transaction parameters
intent.putExtra("amount", 25.50);
intent.putExtra("invoice", "ORD-1001"); // Optional identifier

// Launch the Intent
paymentLauncher.launch(intent);
```

### Paso 2: Recibir y gestionar el resultado de la transacción

Una vez que el titular de la tarjeta completa la transacción en el PIN pad, la aplicación Get Mini devuelve el control a tu aplicación a través de la devolución de llamada (callback) `ActivityResult`. Debes comprobar que el código de resultado es `RESULT_OK` y extraer los detalles de la transacción de los extras del intent devuelto.

Un estado `RESULT_OK` indica que la aplicación ha devuelto el control correctamente. A continuación, debes inspeccionar el extra `STATE` para confirmar que la operación se ha realizado correctamente.

El siguiente ejemplo de código muestra cómo gestionar el resultado de la transacción:

```java
private final ActivityResultLauncher<Intent> paymentLauncher = registerForActivityResult(
    new ActivityResultContracts.StartActivityForResult(),
    result -> {
        if (result.getResultCode() == Activity.RESULT_OK) {
            Intent data = result.getData();
            if (data != null) {
                String transactionResult = data.getStringExtra("RESULT");

                if ("AUTORIZADA".equals(transactionResult)) {
                    // Transaction successful - extract response data
                    String authCode = data.getStringExtra("AUTHORIZATION");
                    String orderId = data.getStringExtra("ORDER");
                    // Process successful payment
                } else {
                    // Transaction denied
                    // Handle error appropriately
                }
            }
        } else {
            // Transaction cancelled or failed
            // Handle cancellation
        }
    }
);
```

Para obtener detalles completos sobre todos los campos de respuesta y la gestión de errores, consulta [Gestionar los resultados de la transacción](/es/get-mini/get-mini-app2app/transaction-guides/response-handling/handle-transaction-results).

### Próximos pasos

Ahora que has procesado correctamente una transacción de pago, puedes explorar más funciones de la integración Get Mini App2App:

* [Gestionar los resultados de la transacción](/es/get-mini/get-mini-app2app/transaction-guides/response-handling/handle-transaction-results) - Guía completa sobre el procesamiento de las respuestas de las transacciones
* [Devolver un pago](https://docs.globalgetnet.com/es/products/local-processor-spain/get-mini?doc=getmini-app2app-processing-a-refund) - Aprende a revertir transacciones
* [Referencia de parámetros de solicitud](/es/get-mini/get-mini-app2app/reference/request-parameters) - Especificaciones completas de los parámetros