Realizar un cobro con porpina

Realizar un cobro con propina

Requisitos

Antes de sumar propina a una transacción, la app ya debe tener resuelto el flujo estándar de cobro con tarjeta presente. Sumar propina no cambia ese flujo, solo cambia cómo se construye el objeto de monto.

RequisitoDescripción
Feature TIP habilitadoMenta debe habilitar el feature de propina para el cliente antes de que puedan probarlo. Sin esto, el cobro se rechaza aunque el código esté bien.
Flujo de tarjeta presente funcionandoEl objeto OperationFlow ya debe estar armando correctamente capture, installments y demás campos de un pago sin propina.

Paso a paso

  1. Se debe crear el objeto Breakdown con description = TIP y amount = al monto de la propina en formato ISO, es decir, si el monto es 10.50 se debe enviar 1050.
  2. Se debe asegurar de que la lista de Breakdown sea enviada en el objeto Amount
ℹ️

El SDK actualiza los features activos en cada inicialización que se realice. Se recomienda hacer una inicialización después de activar el feature TIP por primera vez. El campo total del objeto Amount representa la suma del monto de consumo más la propina.

Ejemplo de implementación

Se arma el Amount con los dos breakdowns y se lo asigna al OperationFlow antes de disparar el pago, igual que en cualquier otro cobro con tarjeta presente:

 
        operationFlow.amount = Amount()
 
        // Crear breakdown para el monto base (siempre presente)
        val breakdownAmount = Breakdown()
        breakdownAmount.description = OPERATION
        breakdownAmount.amount = StringUtils.notFormatAmount(baseAmount)
        Log.i(TAG, "AMOUNT: ${breakdownAmount.amount}")
 
        // Crear lista de breakdowns
        val breakdownList = mutableListOf<Breakdown>()
        breakdownList.add(breakdownAmount)
 
        // Agregar breakdown de propina solo si es mayor a 0
        val tipAmountValue = tipAmount.toIntOrNull() ?: 0
        if (tipAmountValue > 0) {
            val breakdownTipAmount = Breakdown()
            breakdownTipAmount.description = TIP
            breakdownTipAmount.amount = StringUtils.notFormatAmount(tipAmount)
            breakdownList.add(breakdownTipAmount)
            Log.i(TAG, "TIP: ${breakdownTipAmount.amount}")
        } else {
            Log.i(TAG, "No tip amount")
        }
 
        operationFlow.capture = Capture()
        operationFlow.capture!!.card = Card()
        operationFlow.apply {
            // Asignar la lista de breakdown al objeto Amount
            amount?.let {
                it.total = StringUtils.notFormatAmount(totalAmount)
                it.currency = currency
                it.breakdown = breakdownList
            }
        }

Códigos de respuesta

Los mismos de Realizar un cobro con tarjeta presente