SDK Captura de Documentos Android

Última atualização: 10 de Novembro de 2023

Introdução

Os SDKs de Captura de Documentos permitem a realização de capturas pelo usuário dentro de sua aplicação. Essas capturas passam por validações que identificam o tipo de documento e que avaliam a qualidade da imagem capturada, instruindo o usuário através de feedbacks visuais.

Todas as informações coletadas são dados relacionados apenas ao dispositivo do usuário.

É necessário que o usuário conceda permissão de acesso à câmera do dispositivo para capturar e enviar seu documento.

Android

Requisitos

  • 16.7 MB de espaço em disco
  • Versão do sistema operacional Android: v5.0 (API v21) ou superior.
  • compileSdkVersão: 31
  • targetSdkVersion: 31
  • com.google.android.material:material superior a 1.5.0

Instalação do Package

  • Gradle

Certifique-se que o seu gradle a nível de projeto settings.gradle possua os seguintes repositórios:

buildscript {
    ...    
    dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven {
            url  ARTIFACTS_FEED_URL // valor fornecido pela ClearSale
            name  ARTIFACTS_FEED_NAME // valor fornecido pela ClearSale
            credentials {
                username USERNAME // valor fornecido pela ClearSale
                password  ACCESSTOKEN // valor fornecido pela ClearSale
            }
            authentication {
                basic(BasicAuthentication)
            }
        }
    }
}
    ...
}

No arquivo build.gradle da sua aplicação, habilite a compatibilidade de origem Java 1.8.

android {
    ...
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    ...
}

Existem dois pacotes, um deve ser utilizado para testes e o outro no ambiente produtivo.

  • 'sale.clear.studio:documentoscopy-sdk:2.0.0': deve ser utilizado apenas no ambiente produtivo.
  • 'sale.clear.studio:documentoscopy-sdk:2.0.0-hml': deve ser utilizado apenas no ambiente de desenvolvimento.

Adicione no build.gradle do seu aplicativo a seguinte dependência:

Produção

dependencies {
    implementation 'sale.clear.studio:documentoscopy-sdk:2.0.0'
    ...
}

Desenvolvimento

dependencies {
    implementation 'sale.clear.studio:documentoscopy-sdk:2.0.0-hml'
    ...
}

Permissões no aplicativo

Instruções para configuração do framework no projeto:

  1. Para o uso do sdk é necessário requisitar algumas permissões no arquivo de manifesto, são elas:
  2. <uses-permission android:name="android.permission.INTERNET"/>

Classe CSDocumentoscopySDK

Descrição

CSDocumentoscopySDK é a classe responsável pela inicialização do SDK.


Atributo/Função

Esta classe possui uma função pública que deverá receber três parâmetros necessários para a comunicação com os servidores da ClearSale.


Atributo/Função Descrição
initialize Função que chama o SDK.
context: Context Contexto da aplicação.
csDocumentoscopy: CSDocumentoscopy Data class responsável por receber todos os parâmetros de autenticação do usuário.
csDocumentoscopyListener: CSDocumentoscopySDKListener Listener responsável por retornar os feedbacks do SDK para o usuário que o implementa.

Objeto CSDocumentoscopy

Descrição

CSDocumentoscopy é o objeto responsável pelo recebimento dos dados necessários para a comunicação com os servidores da ClearSale.


Parâmetros Descrição
clientId: String ClientId identifica o client junto a ClearSale, este valor é fornecido pela ClearSale.
clientSecret: String ClientSecret serve como token de autenticação do cliente.
identifierId: String Identifier ID é uma string de até 100 caracteres OBRIGATÓRIA que identifica todo o fluxo do usuário de forma única e é gerada pela entidade. Serve para agilizar consultas e chamados feitos pela entidade (e pode ser utilizada como identificador interno entre produtos aqui da ClearSale).
cpf: String É uma string de 11 caracteres OPCIONAL (no formato CPF) do usuário que irá realizar o fluxo, devendo seguir as regras de validade estipuladas pelo Governo.

Classe CSDocumentoscopySDKResult

Parâmetro

Esta classe possui os seguintes parâmetros.


Parâmetro Descrição
sessionId: String ID único da sessão, utilizado para a recuperação da imagem).
documentType: CSDocumentoscopySDKDocumentType Resultado do tipo do documento sendo RG ou CNH.

CSDocumentoscopySDKListener

Funções

Esta interface possui as seguintes funções.


Função Descrição
didOpen() Este evento é acionado sempre que o SDK é iniciado.
didTapClose() Este evento é acionado sempre que o usuário sai de forma intencional do SDK.
didFinishCapture(result: CSDocumentoscopySDKResult) Ao concluir todo o fluxo e enviar as imagens com sucesso para o servidor, o SDK se encerra automaticamente após 2 segundos, acionando este evento.
didReceiveError(error: CSDocumentoscopySDKError) Ao ocorrerem erros mapeados, este evento será chamado logo após o fechamento automático do SDK.

Enum CSDocumentoscopySDKError

Eventos de Erro

Este data class pode retornar os seguintes erros

Erro Descrição
ContextSwitchFailure Contexto SDK modificado.
NoInternetConnection Ocorreu um erro com a conexão de Internet do usuário.
AuthFailure Ocorreu um erro com a autenticação do usuário.
PredictionFailure Ocorreu um erro ao tentar recuperar a imagem na memória.
InvalidCpfFailure Ocorreu um erro ao validar o formato do CPF.
InvalidIdentifierId Ocorreu um erro ao validar o formato IdentifierId, certifique-se de que possui no máximo 100 caracteres.
ImageConversion Ocorreu um erro ao converter as imagens capturadas para o formato esperado.

Exemplos

Faça a importação da biblioteca em sua classe.

import com.clear.studio.csdocs.entries.CSDocumentoscopy
import com.clear.studio.csdocs.entries.CSDocumentoscopySDKError
import com.clear.studio.csdocs.entries.CSDocumentoscopySDKListener
import com.clear.studio.csdocs.entries.CSDocumentoscopySDKResult
import com.clear.studio.csdocs.entries.CSDocumentoscopySDK

Instancie o SDK passando os parâmetros pedidos, conforme exemplo abaixo.

CSDocumentoscopySDK.initialize(this, CSDocumentoscopy(mClientId.text.toString(), mClientSecret.text.toString(), cpf = mCpf.text.toString(), identifierId = mIdentifierId.text.toString()), object: CSDocumentoscopySDKListener{
                    override fun didOpen(){
                        Log.d("Documentoscopia", "SDK Foi Aberto")
                    }
                    override fun didTapClose(){
                        Log.d("Documentoscopia", "Usuário encerrou manualmente o fluxo")
                    }
                    override fun didReceiveError(error : CSDocumentoscopySDKError){
                        mSessionId.text = (error.text + "errorCode: " + error.errorCode.toString())
                    }
                    override fun didFinishCapture(result: CSDocumentoscopySDKResult){
                            mSessionId.text = ("Session Id: " + result.sessionId)
                            mCSDocumentoscopySDKDocumentTypeView.setText("CSDocumentoscopySDKDocumentType: " + result.documentType.toString())
                    }
                })