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:
- 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ção | Descrição |
---|---|
initialize | Função que chama o SDK. |
context: Application | Aplicação Android. |
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 cliente junto à 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). |
(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: CSDocumentoscopySDKConfig | Data 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â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 |
Classe CSDocumentoscopySDKConfig
Parâmetro | Descrição |
---|---|
(opcional) colors: CSDocumentoscopySDKColorsConfig | Data 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
Updated 5 months ago