# Crear un pago aplazado

El aplazamiento del pago permite a los clientes dividir su compra en múltiples pagos. A diferencia de las ventas estándar, este flujo es interactivo: si el **host de autorización** determina que el aplazamiento está disponible, el Get Mini Android SDK pedirá a tu aplicación que proporcione la selección del usuario a través de una devolución de llamada.

## Requisitos

Para admitir el aplazamiento del pago, tu aplicación debe:
1.  **Implementar la Devolución de Llamada**: Tu implementación de `RedCLSPinPadInterface` debe sobrescribir el método `seleccionDeferPayment`.
2.  **Habilitar el Soporte del Comercio**: Tu cuenta de comercio y terminal deben estar configuradas por Get Mini para permitir operaciones de aplazamiento.

---

## Paso 1: Implementar la devolución de llamada de selección

Durante una operación de tarjeta estándar (`operativaConTarjeta`), si el **host de autorización** identifica que el aplazamiento está disponible, activará la devolución de llamada `seleccionDeferPayment`. Debes presentar las opciones al usuario y devolver el código del aplazamiento.

```kotlin
import redcls.itpvpc.interfaces.RedCLSPinPadInterface
import redcls.itpvpc.data.RedCLSDeferPaymentData

override fun seleccionDeferPayment(deferPayment: RedCLSDeferPaymentData): String {
    // 1. 'deferPayment' contiene las opciones de aplazamiento disponibles proporcionadas por el host.
    // 2. Presenta estas opciones (ej., 3 meses, 6 meses) a tu usuario.

    val userSelectedCode = showInstallmentSelectionUI(deferPayment)

    // 3. Devuelve el código de la opción seleccionada como String.
    // Devuelve "0" si el usuario desea pagar en su totalidad sin aplazamiento.
    return userSelectedCode ?: "0"
}
```

<Callout type="note">

Si tu aplicación no desea admitir esta funcionalidad, simplemente sobrescribe el método para devolver `\"0\"`.

</Callout>

---

## Paso 2: Ejecutar el flujo de pago

No hay un método separado para el aplazamiento del pago. Inicia una venta estándar y el Get Mini Android SDK gestiona el aplazamiento automáticamente si es aplicable.

```kotlin
import redcls.itpvpc.data.RedCLSOperativeWithCardData

val saleData = RedCLSOperativeWithCardData("300.00")

Thread {
    // Esta llamada activará 'seleccionDeferPayment' internamente si el aplazamiento está disponible
    val response = pinpadManager.operativaConTarjeta(saleData)

    if (response.status == 0) {
        Log.d("GetMini", "Transacción diferida exitosa")
        val tx = response.transactionData
        if (tx.result == "Autorizada") {
            Log.i("GetMini", "Venta con aplazamiento aprobada. Autorización: ${tx.autorizationNumber}")
        }
    } else {
        Log.e("GetMini", "Error del SDK: ${response.status} - ${response.msgKO}")
    }
}.start()
```

---

## Paso 3: Manejar los resultados de la transacción

Después de la aprobación exitosa del aplazamiento, procesa el resultado y asegúrate de manejar los datos del recibo. El SDK proporciona **literales** específicos que tu aplicación debe imprimir o mostrar para proporcionar al cliente el desglose del aplazamiento.

```kotlin
if (tx.result == "Autorizada") {
    Log.i("GetMini", "Venta con aplazamiento aprobada. Autorización: ${tx.autorizationNumber}")

    // La respuesta incluye literales de recibo específicos relacionados con el aplazamiento.
    // Tu aplicación debe imprimir o mostrar todos los literales devueltos (tx.literals)
    // para reflejar adecuadamente los detalles del aplazamiento en el recibo.
}
```

---

## Mejores prácticas

- **Interfaz de Usuario Clara**: Cuando se llama a `seleccionDeferPayment`, asegúrate de que tu interfaz de usuario muestre claramente el tipo de aplazamiento y cualquier tasa de interés asociada proporcionada en el `RedCLSDeferPaymentData`.
- **Impresión de Recibos**: Los campos del Get Mini Android SDK utilizados para la impresión (Anexo I del manual) incluirán literales específicos para el aplazamiento del pago. Asegúrate de que tu lógica de recibo muestre todos los `Literals` devueltos en la respuesta.
- **Pruebas**: No todas las tarjetas admiten aplazamiento de pagos. Usa tarjetas de prueba específicas proporcionadas por Get Mini para verificar este flujo en el entorno de Integración.

## Próximos pasos

* [Crear una venta](/es/get-mini/android-sdk/guides/process-single-step-payments): Aprende más sobre la operación de venta principal.
* [Crear un pago preautorizado](/es/get-mini/android-sdk/guides/process-preauthorized-payment): Reserva y captura fondos.
* [Seguridad y enlace de dispositivos](/es/get-mini/android-sdk/core-concepts/security-device-binding): Protege tu integración de pagos.