Getnet DocsGetnet Docs

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ámetroTipoRequeridoDescripción
valorCompraIntSíMonto en céntimos (ej., 1050 para 10.50€)
monedaIntSíCódigo de moneda ISO 4217 (ej., 978 para EUR)
nFacturaStringNoIdentificador 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
    )
}

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).

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