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:
- Verifica
TpvConfig.showPlazoxpara asegurarte de que la función está activa. - Llama a
makePaymentpasando el parámetrofinancialConditions. - Valida el
Transaction.financialInfoen la respuesta para confirmar las condiciones.