FINORA Merchant · Tutorial
Integra el SDK de FINORA Pago en una app Android en 10 minutos
This content is not available in your language yet.
Objetivo
Sección titulada «Objetivo»Que tu app Android cobre un pedido con FINORA Pago instalado en el mismo teléfono, sin tocar datos de tarjeta, y que lo compruebes con un cobro de demostración.
Qué necesitas
Sección titulada «Qué necesitas»- Android Studio y un proyecto Kotlin con
minSdk23 o superior. - Un teléfono Android con FINORA Pago 0.16.0 o superior, variante de demostración, enrolado en un comercio de pruebas (lo entrega FINORA bajo acuerdo).
- Tu app autorizada en la lista de integradores del comercio. Si todavía no lo está, haz primero el paso 1 de la lección 5 y vuelve.
-
Agrega el repositorio Maven de FINORA en
settings.gradle.kts. Su URL está en la guía «Inicio rápido» del SDK de cobro Android, en el portal de desarrolladores de FINORA:dependencyResolutionManagement {repositories {google()mavenCentral()maven("<URL_DEL_REPOSITORIO_MAVEN>") // la publica el portal de desarrolladores de FINORA}} -
Agrega la dependencia en
app/build.gradle.ktsy sincroniza Gradle:dependencies {implementation("com.dcgeeks.finora:pago-sdk:1.0.0-beta.3")}El SDK declara por ti las
<queries>de Android 11 y trae sus reglas de R8. Solo depende deandroidx.activity. -
Registra el contrato de cobro en tu
Activity(o en Compose conrememberLauncherForActivityResult). Para la prueba apunta a la variante de demostración, que no mueve dinero:private val cobrar = registerForActivityResult(FinoraPago.Cobrar(Contrato.PAQUETE_DEMO)) { r ->when {r.aprobada -> entregarPedido(r.referenciaExterna, r.autorizacion, r.ultimos4, r.marca)r.estado.requiereConsulta -> marcarParaConsultar(r) // EN_DUDA: nunca cobres otra vezelse -> mostrar(r.mensaje)}} -
Lanza el cobro desde el botón «Cobrar» del pedido:
fun alPulsarCobrar(p: Pedido) = cobrar.launch(SolicitudCobro.Builder().montoCentavos(p.montoCentavos) // 12_500 = 125,00.moneda("VES").referenciaExterna(p.referencia) // PED-1001: tu clave de idempotencia.sucursalCodigo(p.tienda) // obligatoria: la tienda de origen.build() // valida igual que FINORA Pago) -
Comprueba el estado antes de mostrar el botón (opcional, recomendado). Hazlo fuera del hilo principal:
val e = FinoraPago.estado(context)when {!e.instalado -> pedirInstalarFinoraPago()!e.autorizado -> mostrar("Pide al comercio que autorice esta app")!e.listo -> mostrar(e.motivo)else -> habilitarCobro()} -
Prepara el lector al abrir el pedido para que el cliente no espere la conexión Bluetooth (detalle en la lección 8):
lifecycleScope.launch { withContext(Dispatchers.IO) { FinoraPago.prepararLector(context) } }
Ejemplo completo
Sección titulada «Ejemplo completo»La app Reparto de ejemplo de FINORA hace exactamente esto con varios pedidos de distintas tiendas: botones «Cobrar», «Cobrar con Tarjeta FINORA», «Anular» y «Preparar lector», y en la cabecera la huella de su propio certificado para darla de alta. Fíjate en tres decisiones suyas:
- El botón «Cobrar» se deshabilita con el pedido aprobado o en duda.
- Tras un
RECHAZADAgenera una referencia nueva (PED-1001-2). - La anulación usa una clave propia y estable (
PED-1001-ANU).
Verificación
Sección titulada «Verificación»FinoraPago.estado(context)devuelveinstalado = true,autorizado = trueylisto = true.- Cobra
PED-1001por 125,00: FINORA Pago abre su pantalla encima de tu app, aprueba y vuelve conAPROBADA,simulado = true, últimos 4, marca,referenciaFinoraysucursalCodigo. - Repite el mismo
PED-1001: recibes la mismaAPROBADAsin que se vuelva a leer la tarjeta. - Repite
PED-1001con otro monto:CONFLICTOconCONFLICTO_IDEMPOTENCIA.
Si los cuatro resultados coinciden, tu integración básica está lista.