CLEARSALE

SDK Captura de Documentos Android

v2.1.4

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 mínimos

  • 32MB de espaço em disco
  • Versão do sistema operacional Android: v5.0 (API v21)
  • compileSdkVersão: 34
  • targetSdkVersion: 31
  • com.google.android.material:material: 1.5.0
  • androidx.compose.material:material: 1.5.4

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.1.4': deve ser utilizado apenas no ambiente produtivo.
  • 'sale.clear.studio:documentoscopy-sdk:2.1.4-hml': deve ser utilizado apenas no ambiente de desenvolvimento.

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

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

Permissões no aplicativo

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

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

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çãoDescrição
initializeFunção que chama o SDK.
context: ApplicationAplicação Android.
csDocumentoscopy: CSDocumentoscopyData class responsável por receber todos os parâmetros de autenticação do usuário.
csDocumentoscopyListener: CSDocumentoscopySDKListenerListener 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âmetrosDescrição
clientId: StringClientId identifica o cliente junto à ClearSale, este valor é fornecido pela ClearSale.
clientSecret: StringClientSecret serve como token de autenticação do cliente.
identifierId: StringIdentifier 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).
(opcional) 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.
(opcional) configuration: CSDocumentoscopySDKConfigData class responsável por receber os parâmetros de configuração do SDK.

Classe CSDocumentoscopySDKResult

Parâmetro
Esta classe possui os seguintes parâmetros.

ParâmetroDescrição
sessionId: StringID único da sessão, utilizado para a recuperação da imagem.
documentType: CSDocumentoscopySDKDocumentTypeResultado do tipo do documento sendo RG ou CNH.

CSDocumentoscopySDKListener

Funções
Esta interface possui as seguintes funções.

FunçãoDescriçã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

ErroDescrição
ContextSwitchFailureContexto SDK modificado.
NoInternetConnectionOcorreu um erro com a conexão de Internet do usuário.
AuthFailureOcorreu um erro com a autenticação do usuário.
PredictionFailureOcorreu um erro ao tentar recuperar a imagem na memória.
InvalidCpfFailureOcorreu um erro ao validar o formato do CPF.
InvalidIdentifierIdOcorreu um erro ao validar o formato IdentifierId, certifique-se de que possui no máximo 100 caracteres.
ImageConversionOcorreu um erro ao converter as imagens capturadas para o formato esperado

Classe CSDocumentoscopySDKConfig

ParâmetroDescrição
(opcional) colors: CSDocumentoscopySDKColorsConfigData class responsável por receber os parâmetros de customização de cores do SDK. Para mais informações, visite a sessão de customização de UI.

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
import com.clear.studio.csdocs.entries.CSDocumentoscopy;
import com.clear.studio.csdocs.entries.CSDocumentoscopySDK;
import com.clear.studio.csdocs.entries.CSDocumentoscopySDKError;
import com.clear.studio.csdocs.entries.CSDocumentoscopySDKListener;
import com.clear.studio.csdocs.entries.CSDocumentoscopySDKResult;

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

CSDocumentoscopySDK.initialize(application, CSDocumentoscopy(clientID = clientId, clientSecret = clientSecret, cpf = cpf, identifierId = identifierId), object:
                CSDocumentoscopySDKListener {
                override fun didOpen(){
                    Log.d(TAG, "SDK Foi Aberto")
                }
                override fun didTapClose(){
                    Log.d(TAG, "Usuário encerrou manualmente o fluxo")
                }
                override fun didReceiveError(error : CSDocumentoscopySDKError){
                    val errorText = "${error.text} - errorCode: ${error.errorCode}"
                    binding.sessionId.setText(errorText)
                    Log.d(TAG, "Error: $errorText")
                }
                override fun didFinishCapture(result: CSDocumentoscopySDKResult){
                    val sessionIdText = "Session Id: " + result.sessionId
                    binding.sessionId.text = sessionIdText
                    binding.csDocumentoscopySDKDocumentTypeView.text = "CSDocumentoscopySDKDocumentType: ${result.documentType.toString()}"
                }
            })
CSDocumentoscopy csDocumentoscopy = new CSDocumentoscopy(clientId, clientSecret, identifierId, cpf);
CSDocumentoscopySDK.INSTANCE.initialize(getApplication(), csDocumentoscopy, new CSDocumentoscopySDKListener() {
                    @Override
                    public void didOpen() {
                        Log.i(TAG, "SDK Foi Aberto");
                    }

                    @Override
                    public void didTapClose() {
                        Log.i(TAG, "Usuário encerrou manualmente o fluxo");
                    }

                    @Override
                    public void didReceiveError(@NonNull CSDocumentoscopySDKError error) {
                        String errorText = error.getText() + "errorCode: " + error.getErrorCode();
                        binding.sessionId.setText(errorText);
                        Log.i(TAG, "Error: "+errorText);
                    }

                    @Override
                    public void didFinishCapture(@NonNull CSDocumentoscopySDKResult result) {
                        String sessionIdText = "Session Id: " + result.getSessionId();
                        binding.sessionId.setText(sessionIdText);
                        binding.csDocumentoscopySDKDocumentTypeView.setText("CSDocumentoscopySDKDocumentType: " + result.getDocumentType());
                        Log.i(TAG, sessionIdText);
                    }
                });

Samples

Visando facilitar a integração e homologação, disponibilizamos amostras dos SDK:

📘

Aplicativo de Exemplo em Kotlin: clique aqui

📘

Aplicativo de Exemplo em Java: clique aqui