FINORA Merchant · How-to guide
Seguridad: autorizar una app en la lista de integradores
This content is not available in your language yet.
Objetivo
Sección titulada «Objetivo»Que tu app quede autorizada por el comercio para cobrar, anular o consultar el estado, y entender por qué una copia de tu app firmada con otra llave no puede cobrar.
Cómo te reconoce FINORA Pago
Sección titulada «Cómo te reconoce FINORA Pago»- Android dice quién llama. FINORA Pago lee el paquete de la app que lo invocó. Ningún campo de la solicitud sirve para hacerse pasar por otra app.
- Tu firma, en cada llamada. El certificado con que está firmada tu app debe coincidir con una huella SHA-256 autorizada por el comercio.
- Cerrado por defecto. Sin lista, vacía o mal formada: ninguna app está autorizada.
- Permisos por app. Acciones (
COBRAR,REVERSAR,ESTADO), tope por cobro y sucursales permitidas. - Doble verificación. El servidor vuelve a comprobar paquete y huella al crear el cobro y al anularlo, y registra qué app creó cada venta.
- Pantalla protegida. La pantalla de cobro ignora toques a través de ventanas superpuestas.
- Sin datos de tarjeta. Tu app solo recibe últimos 4 dígitos y marca.
-
Saca la huella del certificado que firma lo que se instala (no la del APK):
Ventana de terminal apksigner verify --print-certs app-release.apk | grep SHA-256# o: keytool -list -v -keystore mi-llave.jks -alias mi-alias | grep SHA256# o: ./gradlew :app:signingReportCon Play App Signing, la que vale es la de Google: Play Console › Integridad de la app › Certificado de la llave de firma de apps. La app de ejemplo de FINORA muestra su propia huella en la cabecera.
-
Entrega al comercio tu
applicationId, la huella (o las dos, si vas a rotar la llave), las acciones que necesitas, las sucursales y un tope razonable por cobro. -
El comercio edita la lista en la consola de FINORA: Parámetros de aplicación de FINORA Pago para Android, parámetro «Apps integradoras autorizadas (SDK)» (grupo Integración), para todo el comercio o para un terminal.
[{"paquete": "com.ejemplo.reparto","huellas": ["<64 caracteres hexadecimales, con o sin dos puntos>"],"acciones": ["COBRAR", "REVERSAR", "ESTADO"],"montoMaximoCentavos": 5000000,"sucursales": ["CENTRO", "ESTE"]}] -
El terminal la recibe en su siguiente actualización de parámetros, o al pulsar «Revisar de nuevo» en FINORA Pago.
Las reglas que más fallan
Sección titulada «Las reglas que más fallan»| Error | Resultado |
|---|---|
| Un espacio en la huella o en el paquete | Entrada inválida: no se recorta nada |
huella como texto suelto en vez de huellas como lista | Entrada inválida |
Raíz {"integradores": [...]} en vez de una lista | Ninguna app autorizada |
acciones vacía, o "*" mezclado con otras | Entrada inválida |
sucursales: [] | Entrada inválida (para todas, omite el campo) |
| Más de 8000 caracteres | Ninguna app autorizada |
Una entrada inválida se descarta sola: las demás siguen valiendo.
Baja y rotación
Sección titulada «Baja y rotación»- Dar de baja una app es quitar su entrada: el servidor deja de aceptarla al instante y el terminal en su siguiente actualización de parámetros.
- Rotar la llave: entrega las dos huellas antes de publicar la versión nueva y retira la vieja cuando todos los equipos estén actualizados.
- La anulación del operador desde la pantalla de FINORA Pago y los reversos automáticos no exigen tu firma: el comercio manda sobre su terminal y el cliente siempre queda protegido.
Verificación
Sección titulada «Verificación»FinoraPago.estado(context).autorizadovaletrue(requiere la acciónESTADO).- Un cobro de demostración aprueba.
- Instala una compilación de tu app firmada con otra llave:
estado()respondeautorizado = falsey el cobro devuelveNO_AUTORIZADOsin crear nada. - Pide un monto por encima del tope:
NO_AUTORIZADOconMONTO_FUERA_DE_LIMITE.
Siguiente: Lección 6 · Estados, EN_DUDA y anulaciones