Getnet DocsGetnet Docs

Crear un pago a plazos

El Get Smart SDK admite pagos fraccionados. Esta función permite a los titulares de tarjetas dividir el importe de la transacción en cuotas directamente en el Punto de Venta (TPV).

Prerrequisitos

Antes de intentar un pago a plazos, debes verificar que el terminal esté configurado para admitir esta función.

Comprobación de disponibilidad

Puedes comprobar si la función de pago fraccionado está habilitada en la configuración actual inspeccionando el objeto TpvInfo obtenido durante la inicialización.

suspend fun checkInstallmentSupport() {
    val result = initializationRepository.getTpvInfoRepositoryResult()

    if (result is RepositoryResult.Success) {
        val config = result.data.config

        // Check the 'showPlazox' flag
        if (config.showPlazox) {
            println("✅ Installments (Plazox) are enabled on this device.")
        } else {
            println("❌ Installments are disabled.")
        }
    }
}

Realización del pago

Para iniciar un pago a plazos, se utiliza la función estándar makePayment pero proporcionando el parámetro opcional financialConditions.

Función: makePayment
Parámetro: financialConditions (Tipo: FinancialConditions?).

Implementación

suspend fun payWithInstallments(amount: BigDecimal) {
    // 1. Define the amount
    val money = Money(amount, Currency.getInstance("EUR"))

    // 2. Define Financial Conditions
    // Pass the specific conditions required (or an empty object depending on specific bank logic)
    // Note: The specific structure of FinancialConditions depends on the library version
    val conditions = FinancialConditions(/* ... configuration parameters ... */)

    // 3. Call makePayment with the conditions
    val result = paymentRepository.makePayment(
        amount = money,
        financialConditions = conditions // Trigger the financial flow
    )

    handlePaymentResult(result)
}

Si la tarjeta admite plazos y la función está habilitada (showPlazox), el Get Smart SDK Payment Service puede solicitar automáticamente al usuario que elija las cuotas en la pantalla del dispositivo, incluso sin parámetros estrictos, dependiendo de la configuración del host.

Gestión del resultado

Si el pago se acepta y se procesa como una transacción a plazos, el objeto Transaction resultante contendrá un bloque financialInfo con los detalles del pago aplazado.

El objeto FinancialInfo

La data class Transaction incluye un campo opcional financialInfo. Si este campo no es nulo, la transacción implicó condiciones de pago aplazado.

Ejemplo de gestión:

fun handlePaymentResult(result: RepositoryResult<PaymentResult>) {
    if (result is RepositoryResult.Success && result.data is PaymentResult.Accepted) {
        val transaction = (result.data as PaymentResult.Accepted).data

        // Check for Financial Info
        val finance = transaction.financialInfo

        if (finance != null) {
            println("💰 Deferred Payment Confirmed")
            // Access specific financial details if available in the FinancialInfo model
            // (Refer to the Javadoc in the ZIP for specific fields of FinancialInfo)
        } else {
            println("✅ Standard Payment (One-off)")
        }
    }
}

Resumen

Para implementar pagos a plazos:

  1. Verifica TpvConfig.showPlazox para asegurarte de que la función está activa.
  2. Llama a makePayment pasando el parámetro financialConditions.
  3. Valida el Transaction.financialInfo en la respuesta para confirmar las condiciones.