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.
| Requisito | Descripción |
|---|---|
| Feature TIP habilitado | Menta 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 funcionando | El objeto OperationFlow ya debe estar armando correctamente capture, installments y demás campos de un pago sin propina. |
Paso a paso
- Se debe crear el objeto
Breakdowncon description = TIP y amount = al monto de la propina en formato ISO, es decir, si el monto es 10.50 se debe enviar 1050. - Se debe asegurar de que la lista de
Breakdownsea enviada en el objetoAmount
ℹ️
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