Gestión de recibos de transacciones
El Get Mini Android SDK proporciona todos los datos de transacción necesarios y cadenas de formato (literales) para generar recibos legales. Si bien el SDK no incluye un servicio directo de entrega por correo electrónico/SMS, ofrece una funcionalidad de consulta para recuperar duplicados de recibos siempre que permanezcan disponibles en el host de autorización.
Requisitos
Para gestionar recibos, asegúrate de:
- El SDK está inicializado y el comercio ha iniciado sesión.
- Tienes los Datos del Terminal (
RedCLSTerminalData) del proceso de inicio de sesión. - Para recibos históricos, necesitas el Identificador de Transacción original (
identifierRTS).
Paso 1: Acceder a los datos del recibo en tiempo real
Cuando una transacción (Venta, Devolución o Preautorización) se completa exitosamente, el objeto RedCLSTransactionData resultante contiene una lista de literales. Estas son cadenas preformateadas proporcionadas por el host que tu aplicación debe usar para construir el recibo.
// En tu manejador de resultados de transacción
val txData = response.transactionData
if (txData != null) {
// Recopilar literales para el recibo
val receiptLines: List<String> = txData.literals
// Iterar y mostrar/imprimir
receiptLines.forEach { line ->
println("Línea de Recibo: $line")
}
}Para transacciones que involucran Conversión de Moneda (DCC), los literales adicionales se encuentran en txData.dccSelectionData.literals.
Paso 2: Recuperar boleta histórica (duplicado)
Si necesitas generar un recibo después de que la transacción haya concluido (por ejemplo, desde una pantalla de historial de transacciones), usa el RedCLSQueryManager para obtener los datos.
Los recibos históricos se pueden recuperar siempre que el recibo aún esté disponible en el host de autorización. El SDK no garantiza la retención indefinida de datos de recibo en el lado del host.
import redcls.itpvpc.managers.RedCLSQueryManager
import redcls.itpvpc.data.RedCLSQueryTicketCloudData
val queryData = RedCLSQueryTicketCloudData(terminalData, "IDENTIFICADOR_RTS_ORIGINAL")
Thread {
val response = RedCLSQueryManager.queryTicket(context, queryData)
if (response.status == 0) {
val historicalTx = response.transactionData
val historicalLiterals = historicalTx.literals
// Genera tu duplicado de recibo usando estos literales
}
}.start()Paso 3: Manejar la entrega digital (SMS/Email)
Dado que el SDK es agnóstico al método de entrega, tu aplicación es responsable de enviar los datos del recibo al cliente.
Flujo de trabajo recomendado:
- Generar Texto Plano: Construye una representación de texto plano del recibo uniendo los
literalscon saltos de línea. - Integrar Distribución: Envía este texto (o una versión formateada en HTML/PDF) usando los proveedores de servicios de correo electrónico o SMS de tu backend.
- Consentimiento del Cliente: Captura el correo electrónico o número de teléfono en tu interfaz de usuario antes de activar la entrega desde tu infraestructura.
Mejores prácticas
- Impresión Térmica: Los literales están diseñados para imprimirse en impresoras térmicas estándar de POS.
- Autenticación PIN: Si
txData.pinAuthenticatedLiteralestá presente, debes mostrarlo y típicamente omitir el cuadro de firma en el recibo. - Persistencia: Almacena el
identifierRTSen tu base de datos local para que siempre puedas consultar el histórico de recibos para un duplicado sin almacenar todas las líneas del recibo localmente.
Próximos pasos
- Crear una venta: Revisa el flujo de venta que genera los literales iniciales.
- Devolver un pago: Aprende cómo revertir transacciones.
- Crear un pago con plazos: Aprende sobre cuotas.
- Gestionar la conectividad Bluetooth: Asegúrate de que tu impresora y PIN pad estén conectados.