Skip to main content

Captura de documentos

Esta guía está diseñada para ayudarlo a implementar el SDK Flutter de forma rápida y fácil. Se proporcionan conceptos básicos, ejemplos de implementación de SDK y también cómo interactuar con las API REST de los motores

A través de esta guía, se puede:

  • Implementar la apertura de la cámara y la captura de imágenes;
  • Manipular los datos de devolución;
  • Utilizar la devolución del SDK con las API del motor.

Antes de comenzar, asegúrese de haber seguido las instrucciones paso a paso para instalar e importar el SDK en esta guía.

RECURSOS DISPONIBLES

El SDK Flutter ofrece un componente para la captura de documentos que contiene un frame de captura que ayuda al usuario a colocar el documento de manera correcta para la foto. Luego de posicionar correctamente, el usuario debe hacer clic en un botón para capturar la foto del documento.

La captura de los siguientes tipos de documentos es posible:

  • CPF: Captura del documento CPF;
  • LICENCIA DE CONDUCIR: Captura de la Licencia de conducir abierta;
  • Lado delantero de la Licencia de Conducir: Captura del lado delantero de la Licencia de conducir;
  • Lado reverso de la Licencia de conducir: Captura del lado reverso de la Licencia de conducir;
  • Lado delantero del RG: Captura del lado delantero del RG;
  • Lado reverso del RG: Captura del lado reverso del RG;
  • Otros: Captura documento genérico. Para este tipo de captura, debe informar el título del documento que se mostrará en la captura al usuario utilizando la propiedad optional.LABEL_DOCUMENT_TYPE_OTHERS.
Captura Manual
PERSONALIZACIÓN DE LOS FRAMES DE CAPTURA

Puedes configurar el layout del frame de captura. Para obtener más información sobre lo que se puede personalizar, vea las Páginas/Folios de Referencias de este SDK.

IMPLEMENTACIÓN

Al seguir esta guía paso a paso, tendrá todo el potencial del SDK integrado en su aplicación Flutter.

  1. INICIALIZAR EL SDK

    Para iniciar, cree una instancia del builder generado a través de la interfaz AcessoBioManagerDelegate proporcionando como parámetro el contexto en cuestión y la implementación de la clase UnicoListener.

    La implementación de esta clase es muy simple y se puede hacer con pocas líneas de código. Todo lo que necesita hacer es anular los métodos de callback con las lógicas comerciales de su aplicación:

    class _MyHomePageState extends State<MyHomePage> implements UnicoListener {

    late UnicoCheckBuilder _unicoCheck;

    /// Unico callbacks
    @override
    void onErrorUnico(UnicoError error) {}

    @override
    void onUserClosedCameraManually() {}

    @override
    void onSystemChangedTypeCameraTimeoutFaceInference() {}

    @override
    void onSystemClosedCameraTimeoutSession() {}

    /// Document callbacks
    @override
    void onSuccessDocument(ResultCamera resultCamera) { }

    @override
    void onErrorDocument(UnicoError error) { }

    }

    IMPLEMENTAR LAS FUNCIONES DE CALLBACK

    Tenga en cuenta que, según el ejemplo anterior, el trabajo de implementar la clase UnicoListener es, en gran medida, configurar los métodos de callback. Cada método se llama en una situación específica de devolución de llamada de SDK.

    Simplemente sobrescriba los métodos ejemplificados en el paso anterior con las lógicas comerciales de su aplicación.

    Método onErrorUnico(UnicoError error)

    Se invoca este método cuando ocurre algún error de implementación al usar alguno de los métodos de Unico Check, por ejemplo, al informar un tipo de documento incorrecto para la funcionalidad de captura de documentos.

    Cuando se invoca, el método recibe un parámetro de tipo UnicoError que contiene detalles del error. Más informaciones sobre el tipo UnicoError no en el documento de referencias del SDK.

    Método onUserClosedCameraManually()

    Este método se invoca cada vez que el usuario cierra la cámara manualmente, como por ejemplo, al hacer clic en el botón "Volver".

    Método onSystemClosedCameraTimeoutSession()

    Este método se invoca una vez que se ha alcanzado el tiempo máximo de sesión (sin capturar ninguna imagen).

    TIEMPO MÁXIMO DE LA SESIÓN

    El tiempo máximo de la sesión se puede configurar en el builder a través del método setTimeoutSession. Este método debe recibir el tiempo máximo de sesión en segundos.

    Método onSystemChangedTypeCameraTimeoutFaceInference()

    Este método se invoca una vez que se ha alcanzado el tiempo máximo para la detección del rostro de un usuario (no se detecta nada). En este caso, el modo de la cámara cambia automáticamente al modo manual (sin smart frame).

    Alerta

    Todos los métodos anteriores deben crearse como se indica en su proyecto (Incluso sin ninguna lógica). De lo contrario, el proyecto no se compila con éxito.

  2. REALIZAR APERTURA DE lA CÁMARA

    El último paso es disparar la apertura de la cámara. Este proceso está dividido en algunas etapas:

    Implementar listeners para eventos de la cámara

    El método de apertura de la cámara necesita saber qué hacer cuando logra capturar una imagen o cuando tiene un error en el proceso. Se informa "qué hacer" al método de apertura de la cámara a través de la implementación de listeners que se llaman en situaciones de éxito o error.

    Al implementar los listeners, puede especificar qué sucede en su aplicación en situaciones de error (método onErrorDocument) o éxito (método onSuccessDocument) en la captura de imágenes.

    Método onSuccessDocument
    public void onSuccessDocument(ResultCamera resultCamera) { }

    Al efectuar la captura de imagen con éxito, se invoca este método y devuelve un resultado del tipo ResultCamera que luego se usa en la llamada de las API REST:

    Método onErrorDocument
    public void onErrorDocument(UnicoError error) { }

    Cuando se produce un error en la captura de imagen, se invoca este método y devuelve un objeto de tipo UnicoError.

    IMPLEMENTACIÓN DE LOS LISTENERS

    La implementación de estos métodos (listeners) debe hacerse a través de una instancia de la clase UnicoDocument.

    PERSONALIZAR EL PROCESO DE CAPTURA

    Este es un paso opcional, pero muy recomendado para que el proceso de captura tenga la identidad visual de su empresa.

    Se puede personalizar el frame de captura a través del SDK. Para personalizar el frame, simplemente utilice el método correspondiente a la propiedad que se personalizará y luego aplique el nuevo estilo usando el método setTheme().

    Entienda un poco más sobre el método setTheme(), ejemplos de uso y lo que se puede personalizar en la página de Referencias de este SDK.

  3. Abrir la cámara

    Para abrir la cámara, se utiliza el método openCameraDocument(). Este método está disponible a través del objeto generado con una instancia de la clase UnicoCheck.

    Este método recibe los siguientes parámetros:

    • Archivo JSON con las credenciales, generado en este paso.

    • Tipo de documento que será capturado, ellos son:

      • DocumentCameraTypes.CPF: Frame para captura CPF;
      • DocumentCameraTypes.CNH: Frame para captura de Licencia de conducir;
      • DocumentCameraType.CNH_FRENTE: Frame para captura del lado delantero de la Licencia de conducir;
      • DocumentCameraType.CNH_VERSO: Frame para captura del lado reverso de la Licencia de conducir;
      • DocumentCameraTypes.RG_FRENTE: Frame para captura del lado delantero del Documento de identidad brasileño (RG).
      • DocumentCameraTypes.RG_VERSO: Frame para captura del lado reverso del Documento de identidad brasileño (RG).
      • DocumentCameraTypes.OUTROS("descrição"): Frame solamente con el rectángulo que se utilizará para otros tipos de documentos, con un parámetro para la descripción del documento. (Ej. contrato)
    • Los listeners configurados arriba;

    Ejemplo para captura de Licencia de Conducir:

     _unicoCheck.build().openCameraDocument(
    jsonFileName: androidJsonFileName,
    documentType: DocumentType.CNH,
    listener: this);

    En el caso de éxito, el objeto ResultCamera devuelve 2 atributos: Base64 y Encrypted:

    • El atributo Base64 se puede usar si desea mostrar una vista previa de la imagen en su aplicación;
    • El atributo Encrypted debe enviarse en la llamada de las API REST de Unico Check.
  4. LLAMAR LAS APIS​

    La captura de las imágenes es solo la primera parte del viaje. Después de capturar la imagen, es necesario enviar el Encrypted generado a las API, seleccionando uno de los flujos disponibles detallados en Flujos.

    Atención

    Por motivos de seguridad, el intervalo entre la generación del Encriptado y su envío a través de uno de los flujos disponibles debe ser de un máximo de 10 minutos. Los envíos realizados más allá de este período serán rechazados automáticamente por la API.

¿Dudas?

¿No encontró algo o aún necesita ayuda? Si ya es cliente o asociado, puede contactarnos a través del Centro de Ayuda.