# Crear un pago con plazos

Los pagos a plazos permiten a los clientes dividir las compras en múltiples pagos. Para la solución mPOS de Get Mini, las opciones de plazos se gestionan típicamente de forma directa en el dispositivo PIN pad, basándose en la configuración del comercio.

## Requisitos
Antes de procesar pagos a plazos, asegúrese de que el SDK esté completamente inicializado con el entorno y licencia correctos utilizando `CommonUtils`. Debe tener datos de configuración de comercio válidos de una respuesta de inicio de sesión exitosa (`DatosLoginResponseDTO`) y un dispositivo PIN pad conectado e inicializado con una `PinpadConfig` activa. Críticamente, su cuenta de comercio debe estar configurada específicamente por el adquirente para soportar transacciones a plazos; de lo contrario, la opción no aparecerá en el dispositivo.

## Paso 1: Ejecutar el pago

Para procesar una transacción a plazos, inicie un pago estándar utilizando `PagoDTO`. Si el terminal y la tarjeta admiten plazos, el PIN pad solicitará al cliente que seleccione los términos de los plazos (número de pagos) durante el flujo de la transacción.

### Cómo se definen los plazos
No pasas un parámetro de plazos desde tu código iOS. Cuando la tarjeta y el terminal admiten plazos, el PIN pad gestiona la selección y devuelve a tu aplicación el importe total autorizado.

El objeto `PagoDTO` requiere los siguientes parámetros clave:

| Parámetro | Tipo | Requerido | Descripción |
| :---- | :---- | :---- | :---- |
| `valorCompra` | Int | Sí | Monto en céntimos (ej., `1050` para 10.50€) |
| `moneda` | Int | Sí | Código de moneda ISO 4217 (ej., `978` para EUR) |
| `nFactura` | String | No | Identificador de Factura/Pedido |

```
// Importar vía Bridging Header: RedsysPinpadManager.h
func startInstallmentPayment(device: EAAccessory, config: PinpadConfig, amount: Int, orderId: String) {
    let pinpadManager = RedsysPinpadManager(bluetoothTech: true)

    // 1. Preparar DTO de Comercio (de la respuesta de Login)
    let merchant = MerchanDTO()
    merchant.fuc = "999008881"
    merchant.terminal = "001"
    merchant.password = "merchant_pass"
    // ... establecer otros campos según sea necesario

    // 2. Preparar DTO de Pago
    let paymentDTO = PagoDTO(
        valor: Float(amount),      // Nota: El SDK usualmente toma float * 100 en init o int dependiendo del método
        mMoneda: 978,              // EUR
        nFactura: orderId,
        email: "",
        tlfCliente: "",
        datosPropietarios: ""
    )

    // 3. Iniciar Operación de Pago
    // El PinPad maneja la interacción de selección de plazos
    pinpadManager.pay(
        withPinpadBluetooth: device,
        merchan: merchant,
        config: config,
        andPagoDTO: paymentDTO,
        withDelegate: self
    )
}
```

<Callout type="note">

La firma exacta del método para el pago es `payWithPinpadBluetooth:merchan:config:andPagoDTO:withDelegate:`. Asegúrese de usar el método correcto para su tipo de conexión (Bluetooth vs Wi-Fi).

</Callout>

## Paso 2: Manejar el resultado

El resultado se entrega a través del callback `onPaymentFinished` del `RedsysBTPinpadPaymentDelegate`. El objeto de resultado (`PagoResponseDTO` o similar) contendrá los detalles de la autorización.

```
func onPaymentFinished(_ result: Any!, orError error: Error!) {
    if let result = result, error == nil {
        // Analizar resultado (convertir al DTO de Respuesta apropiado)
        print("Pago/Plazos Exitoso")
        // Verificar campos de respuesta para información de plazos si está disponible
    } else {
        print("Transacción Fallida: \(error?.localizedDescription ?? "Error Desconocido")")
    }
}
```

## Próximos pasos

- [Devolver un pago](/es/get-mini/ios-sdk/guides/refund-payment-ios) - Manejar devoluciones
- [Ciclo de vida de la transacción](/es/get-mini/ios-sdk/core-concepts/ios-lifecycle) - Revisar estados internos del SDK