Combate à Fraude Docs

Combate à Fraude Docs

    ›Android

    Introdução

    • Início
    • Token de acesso
    • Checando as respostas assinadas
    • Checklist de integração

    Android

    • Primeiros passos
    • DocumentDetector
    • PassiveFaceLiveness
    • FaceAuthenticator
    • AddressCheck
    • DeviceAnalyser
    • Customização
    • Resultado de um SDK
    • Reduzindo o tamanho dos SDKs
    • Configuração dos sensores
    • Configuração de proxy
    • Configuração de preview
    • Formulário de segurança Google
    • Analytics
    • Notas de atualização

    iOS

    • Primeiros passos
    • DocumentDetector
    • PassiveFaceLiveness
    • FaceAuthenticator
    • AddressCheck
    • DeviceAnalyser
    • Customização
    • Configuração de proxy
    • Notas de atualização

    Flutter

    • Primeiros passos
    • DocumentDetector
    • PassiveFaceLiveness
    • FaceAuthenticator
    • Notas de atualização

    React Native

    • Primeiros passos

    Ionic

    • Primeiros passos
    • DocumentDetector
    • PassiveFaceLiveness
    • FaceAuthenticator
    • Notas de atualização

    Xamarin

    • Primeiros passos

    JavaScript

    • Primeiros passos
    • DocumentDetector
    • PassiveFaceLiveness
    • FaceAuthenticator
    • Erros do SDK
    • Customização
    • Eventos do SDK
    • Segurança
    • Notas de atualização (DocumentDetector)
    • Notas de atualização (PassiveFaceLiveness)
    • Notas de atualização (FaceAuthenticator)

    API

    • Primeiros passos
    • Assinatura de respostas
    • Registro Facial
    • Autenticação Facial
    • Prova de vida passiva
    • Autenticação de dispositivos
    • Comprovante de endereço digital

    DocumentDetector

    Capture fotos confiáveis dos documentos de seus usuários com qualidade para o posterior envio à nossa API de Combate à Fraude.


    Documentos suportados

    Atualmente, os documentos suportados em Android são:

    
    public enum Document {
    
        RG_FRONT, // frente do RG, parte onde está a foto
        RG_BACK, // verso do RG, onde está os dados
        RG_FULL, // RG aberta, aparecendo tanto a frente quanto o verso
        CNH_FRONT, // frente da CNH, parte onde está a foto
        CNH_BACK, // verso da CNH, parte onde está a assinatura
        CNH_FULL, // CNH aberta, aparecendo tanto a frente quanto o verso
        CRLV, // CRLV
        RNE_FRONT, // frente do RNE e RNM, onde estão os dados
        RNE_BACK, // verso do RNE e RNM, onde está a foto
        PASSPORT, // Passaporte, apenas um lado, mostrando todos os dados
        CTPS_FRONT, // Frente da CTPS, onde contém a foto
        CTPS_BACK, // Verso da CTPS, onde contém os dados
        OTHERS, // outros documentos de identificação em geral, como RNE, Identidade Militar, OAB e CRLV
        ANY; // permite o envio de qualquer captura
    
    }
    
    


    Tamanho do SDK

    Um máximo de aproximadamente 9.6 MB, podendo diminuir em virtude desses elementos.

    Optimizando o tamanho

    Se você deseja diminuir o tamanho do DocumentDetector, adicione essa configuração em seu build.gradle a nível de app:

    android {
        defaultConfig {
            ndk {
                abiFilters 'armeabi-v7a', 'arm64-v8a'
            }
        }
    }
    

    Isso reduzirá o tamanho do app final em cerca de 2 MB. Segundo a documentação do TensorFlow, essa configuração cobre a maioria dos dispositivos modernos.


    Analytics

    Nossos SDKs por padrão coletam informações sobre o usuário e ambiente em execução para melhorar o mapeamento de fraudadores e entender seus comportamentos. Recomendamos manter essa coleta ativa pois o único intuito desses dados é para redução de fraudes, mas se desejar, você desabilitar pelo parâmetro .setAnalyticsSettings(boolean useAnalytics).


    Permissões em tempo de execução

    PermissãoMotivoObrigatória?
    CAMERAPara capturar a(s) foto(s) do(s) documento(s)Sim


    Instanciando o objeto DocumentDetector

    Primeiro, crie um objeto do tipo DocumentDetector. Este objeto serve para você configurar todos as suas regras de negócio para o SDK:

    DocumentDetector mDocumentDetector = new DocumentDetector.Builder(String mobileToken)
        // veja a tabela abaixo
        .build();
    

    Todos os parâmetros anotados com @Nullable podem receber valores null, útil caso você queira configurar somente um dos parâmetros de um mesmo método.


    DocumentDetector.Builder

    ParâmetroObrigatório?
    String mobileToken

    Token de utilização associado à sua conta da CAF.
    Sim
    .setDocumentSteps(DocumentDetectorStep[] documentSteps)

    Define o fluxo de captura de documentos, como explicado aqui.
    Sim
    .setPeopleId(String peopleId)

    Identificador do usuário para fins de identificação de perfil fraudador e auxiliar na identificação dos logs do Analytics em casos de erros e bugs.
    Não, usado para o analytics
    .setAnalyticsSettings(boolean useAnalytics)

    Habilita/desabilita a coleta de dados para o analytics.
    Não, o padrão é true
    .setCaptureStages(CaptureStage[] captureStages)

    Define cada estágio de dificuldade da captura, normalmente variando da mais rígida com mais qualidade para a menos rígida com menos qualidade, como explicado aqui.
    Não. O padrão é o recomendado
    .setPopupSettings(boolean show)

    Altera a configuração dos popups inflados antes de cada documento.
    Não. O padrão é true
    .setLayout(@Nullable @LayoutRes Integer layoutId)

    Substitui o layout padrão do SDK. Crie um arquivo na pasta layout do seu projeto, copie este template e faça as alterações desejadas.
    Não. O padrão é esse
    .setMask(MaskType type)

    Define o tipo de máscara utilizada nas capturas. Existem três tipos:
  • MaskType.DEFAULT, com o padrão pontilhado no formato do documento;
  • MaskType.DETAILED, que apresenta uma ilustração do documento solicitado, junto com a máscara pontilhada;
  • MaskType.NONE, que remove totalmente a máscara.
  • Não. O padrão é MaskType.DEFAULT
    .setMask(@DrawableRes Integer greenMask, @DrawableRes Integer whiteMask, @DrawableRes Integer redMask)

    Troca as máscaras para captura do documento: SUCESSO, NORMAL e FALHA, nesta ordem. Caso for utilizar esta opção, utilize máscaras com a mesma área de detecção do documento, essa região é de suma importância para o algoritmo realizar a captura.
    Não. Os padrões de máscara são:
    Normal
    Sucesso
    Falha
    .setStyle(@StyleRes int styleResourceId)

    Substitui o style padrão do SDK. No arquivo styles.xml do seu projeto, copie este template e edite.
    Não. O padrão é esse
    .setAudioSettings(boolean enable)

    Habilita/desabilita a reprodução dos áudios do SDK.
    Não. O padrão é true
    .setNetworkSettings(int requestTimeout)

    Define o tempo de timeout das requests do SDK.
    Não. O padrão é 60 (segundos)
    .setLuminositySensorSettings(@Nullable SensorLuminositySettings sensorLuminositySettings)

    Altera as configurações padrão do sensor de luminosidade. Aplique null se não deseja utilizar este sensor.
    Não. O limiar padrão é 5 lx
    .setOrientationSensorSettings(@Nullable SensorOrientationSettings sensorOrientationSettings)

    Altera as configurações padrão do sensor de orientação. Aplique null se não deseja utilizar este sensor.
    Não. O limiar padrão é 3 m/s²
    .setStabilitySensorSettings(@Nullable SensorStabilitySettings sensorStabilitySettings)

    Altera as configurações padrão do sensor de estabilidade. Aplique null se não deseja utilizar este sensor.
    Não. O tempo padrão é 2000 ms e o limiar padrão é 0.5 m/s²
    .setProxySettings(@Nullable ProxySettings proxySettings)

    Define as configurações de proxy, como explicado aqui.
    Não. O padrão é null
    .setPreviewSettings(@NonNull PreviewSettings previewSettings)

    Habilita/desabilita e permite a configuração da visualização da captura realizada, solicitando a confirmação do usuário para prosseguir.
    Não. O padrão é desativado
    .setAutoDetection(boolean enable)

    Habilita/desabilita a autodetecção e verificações de sensores. Utilize false para desabilitar todas as verificações no dispositivo. Assim, todas validações serão executadas no backend, após a captura.
    Não. O padrão é true
    .setCurrentStepDoneDelay(boolean showDelay, int delay)

    Aplica delay na activity após a finalização de cada etapa. Esse método pode ser utilizado para exibir uma mensagem de sucesso na própria tela após a captura, por exemplo.
    Não. O padrão é false
    .setMessageSettings(MessageSettings messageSettings)

    Permite personalizar as mensagens exibidas no balão de "status" durante o processo de captura e análise.
    Não. O padrão é esse
    .setGetImageUrlExpireTime(Time expireTime)

    Permite personalizar o tempo de expiração da imageUrl. O método recebe como parâmetro o enum Time com os tempos disponíveis.
    Não. O padrão é Time.DEFAULT
    .enableSwitchCameraButton(boolean enable)

    Permite habilitar/desabilitar o botão para o usuário trocar entre a câmera frontal e traseira.
    Não. O padrão é True
    .setResolutionSettings(Resolution resolution)

    Permite configurar a resolução de captura. O método espera como parâmetro uma Resolution que possui as seguintes opções:
  • HD: 720x1280
  • FULL_HD: 1080x1920
  • QUAD_HD: 1440x2560
  • ULTRA_HD: 2160x3840
  • Não. O padrão é Resolution.ULTRA_HD
    .setCompressSettings(@IntRange(from = 50, to = 100) int compressQuality)

    Permite configurar a qualidade no processo de compressão. Por padrão, todas capturas passam por compressão. O método espera como parâmetro valores entre 50 e 100, sendo 100 a compressão com melhor qualidade (recomendado).
    Não. O padrão é 100
    .enableGoogleServices(boolean enable)

    Permite habilitar/desabilitar recursos do SDK que consomem GoogleServices no SDK, não recomendamos desabilitar os serviços por conta da perda de segurança.
    Não. O padrão é true
    .setUseEmulator(boolean use)

    Permite o uso de emuladores quando true. Quando true, o modo ADB é ativado em conjunto para o emulador funcionar corretamente. Não é recomendado ativar esta opção, utilize apenas para fins de testes.
    Não. O padrão é false
    .setUseRoot(boolean use)

    Permite o uso de dispositivos root quando true. Não é recomendado ativar esta opção, utilize apenas para fins de testes.
    Não. O padrão é false
    .setUseDeveloperMode(boolean use)

    Permite o uso do modo de desenvolvedor quando true. Não é recomendado ativar esta opção, utilize apenas para fins de testes.
    Não. O padrão é false
    .setUseAdb(boolean use)

    Permite o uso do modo de depuração Android Debug Bridge (ADB) quando true. Não é recomendado ativar esta opção, utilize apenas para fins de testes.
    Não. O padrão é false
    .setUseDebug(boolean use)

    Permite o uso do app em modo debug quando true. Não é recomendado ativar esta opção, utilize apenas para fins de testes.
    Não. O padrão é false
    .setGetImageUrlExpireTime (String expireTime)

    Define o tempo de duração da URL da imagem no servidor até ser expirada. Espera receber um intervalo de tempo entre "30m" à "30d".
    Exemplos:
  • setGetImageUrlExpireTime("30m"): Para configurar apenas minutos
  • setGetImageUrlExpireTime("24h"): Para configurar apenas hora(s)
  • setGetImageUrlExpireTime("1h 10m"): Para configurar hora(s) e minuto(s)
  • setGetImageUrlExpireTime("10d"): Para configurar dia(s)
  • Não. O padrão é 3h
    .setUploadSettings(UploadSettings uploadSettings)

    Define as configurações para o upload de documentos. Ativando esta opção, o fluxo do SDK irá solicitar que o usuário envie os arquivos do documento ao invés de realizar a captura com a câmera do dispositivo. Esta opção também inclui as verificações de qualidade do documento.
    Não. Por padrão esta opção está desativada, veja aqui como configurá-la.
    .setAllowedPassportCountriesList(CountryCodeList[] countryList)

    Habilita a opção de permitir passaportes de somente um determinado país emissor, ou, uma lista de países. Veja a lista completa em: ISO 3166-1 alpha-3 Ex.: .setAllowedPassportCountriesList(new CountryCodesList[]{CountryCodesList.BRA})
    Não. Por padrão são aceitos Passaportes emitidos por qualquer país.


    Desativando validações de segurança para teste

    Estamos constantemente realizando ações para tornar o produto cada vez mais seguro, mitigando uma série de ataques observados ao processo de captura e, consequentemente, reduzindo o maior número de possíveis fraudes de identidade. O SDK possui alguns bloqueios que podem impedir a execução em certos contextos. Para desabilitá-los, você pode utilizar os métodos conforme o exemplo abaixo:

    DocumentDetector.Builder("mobileToken")
        .setUseEmulator(true)
        .setUseRoot(true)
        .setUseDeveloperMode(true)
        .setUseAdb(true)
        .setUseDebug(true)
        .build();
    

    Atenção! A desabilitação das validações de segurança são recomendadas apenas para testes. Para publicação do seu aplicativo em produção, recomendamos utilizar as configurações padrão.

    DocumentDetectorStep

    Para criar um fluxo de captura, você precisará criar um array de DocumentDetectorStep, onde cada elemento será um passo da captura. Para construir cada objeto de DocumentDetectorStep, você pode informar os seguintes elementos:

    DocumentDetectorStep detectorStep = new DocumentDetectorStep(Document.RG_FRONT); 
    
    ParâmetroObrigatório?
    Document document

    Identifica qual documento você deseja capturar no respectivo passo. Veja os tipos de documento suportados aqui.
    Sim
    .setStepLabel(@StringRes int stepLabel)

    Define texto a ser mostrado na parte inferior do layout.
    Não. Há um padrão por tipo de Document
    .setIllustration(@StringRes int illustration)

    Define ilustração a ser mostrada no popup anterior à captura.
    Não. Há um padrão por tipo de Document
    .setStepAudio(@RawRes int stepAudio)

    Define áudio que será reproduzido no início do passo.
    Não. Há um padrão por tipo de Document
    .setMask(@DrawableRes Integer whiteMaskResId, @DrawableRes Integer greenMaskResId, @DrawableRes Integer redMaskResId)

    Define as máscaras para cada tipo de documento. A utilização desse método sobrescreve as máscaras definidas no método .setMask da DocumentDetector.Builder.
    Não. O padrão é definido pelo método .setMask da DocumentDetector.Builder


    CaptureStage

    Para melhorar a UX do cliente, recomendamos criar estágios de dificuldade para o DocumentDetector. Para isso, oferecemos o objeto CaptureStage, onde você pode definir os seguintes parâmetros:

    Parâmetro
    Long durationMillis

    Duração do estágio, em milissegundos. Se você não quiser um tempo limite, parametrize null.
    boolean wantSensorCheck

    Habilita/Desabilita a utilização dos sensores para a captura da foto.
    QualitySettings qualitySettings

    Configurações de verificação de qualidade do documento. Se não quiser verificar a qualidade do documento, parametrize null.
    DetectionSettings detectionSettings

    Configurações de detecção automática do documento. Se não quiser utilizar a detecção automática, parametrize null.
    CaptureMode captureMode

    Modo de captura do documento, podendo ser CaptureMode.AUTOMATIC ou CaptureMode.MANUAL. Na captura manual, um botão será habilitado para o usuário realizar a captura.

    Exemplo de configuração

    Como o parâmetro .setCaptureStages não é obrigatório, se não for utilizado, o DocumentDetector usará este padrão:

    QualitySettings qualitySettings = new QualitySettings(1.8);
    DetectionSettings detectionSettings = new DetectionSettings(0.91, 5);
    
    new CaptureStage[]{
        new CaptureStage(20000L, true, qualitySettings, detectionSettings, CaptureMode.AUTOMATIC), 
        new CaptureStage(15000L, false, qualitySettings, detectionSettings, CaptureMode.AUTOMATIC),
        new CaptureStage(10000L, false, qualitySettings, detectionSettings, CaptureMode.MANUAL),
        new CaptureStage(null, false, qualitySettings, null, CaptureMode.MANUAL)
    }
    

    QualitySettings

    ParâmetroObservações
    double threshold

    Limiar que define se a captura do documento tem qualidade ou não.
    Varia entre 1.0 e 5.0, onde 1.8 é o limiar recomendado

    DetectionSettings

    ParâmetroObservações
    double threshold

    Limiar que define se o documento exibido pelo usuário é ou não o documento que está sendo solicitado.
    Valor entre 0.0 e 1.0, onde 0.91 é o recomendado
    int consecutiveFrames

    Número de frames corretos consecutivos para aceitação do documento.
    5 é o recomendado. Quanto mais frames, mais irá demorar para detectar o documento


    UploadSettings

    Para ativar a funcionalidade de upload de documentos é necessário instanciar um objeto do tipo UploadSettings(boolean enable) e configurar os seus parâmetros:

    ParâmetroObrigatório?
    .setEnable(Boolean enable)

    Habilita/desabilita esta funcionalidade.
    Não. O padrão é true
    .setCompress(Boolean enable)

    Habilita/desabilita a compressão do arquivo antes de realizar o upload.
    Não. O padrão é true
    .setFileFormats(FileFormat[] fileFormats)

    Define o(os) formatos de arquivos que serão aceitos para upload.
    Não. Por padrão são aceitos: .PDF , .JPG, .JPEG, .PNG, .HEIF.
    .setMaxFileSize(Integer maxFileSize)

    Define o limite máximo em KB do arquivo para upload.
    Não. O limite padrão é 20000 KB (20MB).
    .setActivityLayout ( Integer activityLayout)

    Define o layout de plano de fundo do upload de documentos.
    Não.
    .setPopUpLayout (Integer popUpLayout)

    Define o layout do popup de solicitação do documento para upload.
    Não.

    Atualmente, os formatos de arquivos suportados são:

    public enum FileFormat {
        PNG("image/png"),
        JPG ("image/jpg"),
        JPEG ("image/jpeg"),
        PDF("application/pdf"),
        HEIF("image/heif");
    }
    

    MessageSettings

    Para utilizar, basta instanciar um objeto MessageSettings e utilizar os métodos conforme a necessidade de personalização.

    MétodoValor padrão
    .setPopupDocumentSubtitleMessage(@NonNull @StringRes Integer message)

    Mensagem exibida no subtítulo do pop-up que traz a ilustração do documento que está sendo solicitado para captura.
    “Posicione o documento em uma mesa, centralize-o na marcação e aguarde a captura automática.”
    .setFitTheDocumentMessage(Integer message)

    Mensagem orientando encaixar o documento na máscara.
    "Encaixe o documento na marcação"
    .setHoldItMessage(Integer message)

    Mensagem exibida no momento em que a captura está sendo realizada.
    "Segure assim"
    .setVerifyingQualityMessage(Integer message)

    Mensagem exibida quando o SDK realiza uma requisição ao backend, verificando qualidade.
    "Verificando qualidade…"
    .setLowQualityDocumentMessage(Integer message)

    Mensagem exibida quando a qualidade da captura for reprovada.
    "Ops, não foi possível ler as informações. Por favor, tente novamente"
    .setUploadingImageMessage(Integer message)

    Mensagem exibida quando não há verificação de qualidade e a captura está sendo salva nos servidores.
    "Enviando imagem…"
    .setShowOpenDocumentErrorMessage(boolean show, @Nullable Integer message)

    Mensagem exibida quando for exibido um documento aberto, a mensagem será exibido juntamente com a mensagem de erro no documento sendo usado, exemplo: caso o usuário mostre uma CNH aberta, será mostrado a mensagem de erro padrão "Essa é uma CNH Aberta" + a mensagem definida.
    "Use o documento fechado e tente novamente"
    .setWaitMessage(boolean show, @Nullable Integer message)

    Mensagem exibida ao iniciar a câmera.
    "Aguarde..."
    .setSensorLuminosityMessage(@NonNull @StringRes Integer message)

    Mensagem exibida quando a limiar de luminosidade é menor que a esperada.
    "Ambiente muito escuro"
    .setSensorOrientationMessage(@NonNull @StringRes Integer message)

    Mensagem exibida quando a limiar de orientação é menor que a esperada.
    "Celular não está na vertical"
    .setSensorStabilityMessage(@NonNull @StringRes Integer message)

    Mensagem exibida quando a limiar de orientação é menor que a esperada.
    "Mantenha o celular parado"
    .setWrongDocumentMessage_RG_FRONT(Integer message)

    Mensagem exibida quando a frente do RG é exibida em um fluxo diferente do esperado.
    "Ops, esta é a frente do RG"
    .setWrongDocumentMessage_RG_BACK(Integer message)

    Mensagem exibida quando a verso do RG é exibida em um fluxo diferente do esperado.
    "Ops, este é o verso do RG"
    .setWrongDocumentMessage_RG_FULL(Integer message)

    Mensagem exibida quando o RG aberto é exibida em um fluxo diferente do esperado.
    "Ops, este é o RG aberto"
    .setWrongDocumentMessage_CNH_FRONT(Integer message)

    Mensagem exibida quando a frente do CNH é exibida em um fluxo diferente do esperado.
    "Ops, esta é a frente da CNH"
    .setWrongDocumentMessage_CNH_BACK(Integer message)

    Mensagem exibida quando a verso do CNH é exibida em um fluxo diferente do esperado.
    "Ops, este é o verso da CNH"
    .setWrongDocumentMessage_CNH_FULL(Integer message)

    Mensagem exibida quando a CNH aberta é exibida em um fluxo diferente do esperado.
    "ps, esta é a CNH aberta"
    .setWrongDocumentMessage_CRLV(Integer message)

    Mensagem exibida quando o CRLV é exibido em um fluxo diferente do esperado.
    "Ops, este é o CRLV"
    .setWrongDocumentMessage_RNE_FRONT(Integer message)

    Mensagem exibida quando a frente do RNE é exibida em um fluxo diferente do esperado.
    "Ops, esta é a frente do RNE"
    .setWrongDocumentMessage_RNE_BACK(Integer message)

    Mensagem exibida quando o verso do RNE é exibida em um fluxo diferente do esperado.
    "Ops, este é o verso do RNE"
    .setPositiveButtonMessage(Integer message)

    Permite a customização da mensagem do botão de confirmação.
    Não. O padrão é "Ok, entendi!"
    .setUploadedImageIsTooLargeTitle

    Define o título do popup de upload quando o arquivo enviado excede o tamanho máximo permitido.
    Não. O padrão é "Tamanho de foto excedido."
    .setUploadedImageIsTooLargeMessage

    Define a mensagem do popup de upload quando o arquivo enviado excede o tamanho máximo permitido.
    Não. O padrão é "Parece que tamanho da foto que você escolheu excede o tamanho permitido. Tente enviar um novo arquivo mais leve."
    .setUploadedImageHasInvalidFormatTitle

    Define o título do popup de upload quando o formato do arquivo enviado não é válido.
    Não. O padrão é "Formato inválido."
    .setUploadedImageNotSupportedFormatMessage

    Define a mensagem do popup de upload quando o formato do arquivo enviado não é válido.
    Não. O padrão é "Parece que o formato da sua foto não é suportado. Tente reenviar usando os formatos de JPG, PNG ou PDF."
    .setUploadedImageGenericErrorTitle

    Define o título de erro genérico para o popup de upload.
    Não. O padrão é "Ops, algo deu errado."
    .setUploadedImageWrongMessage

    Define a mensagem de erro genérico para o popup de upload.
    Não. O padrão é "Parece que a foto não é a esperada. Envie um foto do tipo de documento escolhido."
    .setUploadedImageLowQualityTitle

    Define o título do popup de upload quando a qualidade da imagem enviada é reprovada
    Não. O padrão é "Ops, qualidade baixa"
    .setUploadedImageLowQualityMessage

    Define a mensagem do popup de upload quando a qualidade da imagem enviada é reprovada
    Não. O padrão é "Parece que a qualidade da foto está muito baixa. Tente enviar uma foto com a qualidade maior."
    .setUploadPopupLoadingMessage

    Define a mensagem exibida no popup de upload enquanto o arquivo está sendo enviado.
    Não. O padrão é "Enviando sua foto"

    Exemplo MessageSettings

    MessageSettings messageSettings = new MessageSetings()
    .setFitTheDocumentMessage(R.string.exempleFit)
    .setHoldItMessage(R.string.exempleHoldIt);
    


    Iniciando a DocumentDetectorActivity

    Após a criação do DocumentDetector, inicie a DocumentDetectorActivity passando esse objeto como parâmetro via intent extra:

    Intent mIntent = new Intent(context, DocumentDetectorActivity.class);
    mIntent.putExtra(DocumentDetector.PARAMETER_NAME, mDocumentDetector);
    startActivityForResult(mIntent, REQUEST_CODE);
    


    Obtendo o resultado

    Para obter o objeto DocumentDetectorResult, que contém as capturas obtidas pelo SDK, sobrescreva o método onActivityResult na mesma Activity que você iniciou a DocumentDetectorActivity:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_CODE){
            if (resultCode == RESULT_OK && data != null){
                DocumentDetectorResult mDocumentDetectorResult = (DocumentDetectorResult) data.getSerializableExtra(DocumentDetectorResult.PARAMETER_NAME);
                // verifique mDocumentDetectorResult.getSDKFailure() para descobrir qual foi o motivo da finalização do SDK
            } else {
                // o usuário fechou a activity
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
    


    DocumentDetectorResult

    ParâmetroPode ser nulo?
    Capture[] captures

    O array com as respectivas capturas dos documentos parametrizados.
    Sim, em caso de erro
    String type

    A classe do fluxo de documentos lidos. Esse parâmetro é útil em uma integração com nossa rota de OCR. Os types existentes são: ["blank", "cnh", "cnh_new", "generic", "rg", "rg_new", "rne", "rnm", "ctps", "passport, crlv, crlv_new"]
    Sim, em caso de erro ou quando não conseguiu verificar a qualidade.
    String trackingId

    Identificador dessa execução em nossos servidores. Se possível, salve este campo e mande-o junto para nossa API. Assim, teremos mais dados de como o usuário se comportou durante a execução.
    Sim, caso o usuário configure useAnalytics = false ou as chamadas de analytics não funcionem
    SDKFailure sdkFailure

    Objeto que informa o motivo do encerramento do SDK. Para mais informações, veja aqui.
    Sim, em caso de sucesso


    Capture

    ParâmetroPode ser nulo?
    String imagePath

    Caminho completo da imagem no dispositivo do usuário.
    Não
    String imageUrl

    URL do documento no servidor da CAF.
    Não
    String label

    Identificação do tipo do documento capturado, dentro das seguintes possibilidades: ["blank", "cnh_back", "cnh_front", "cnh_full", "new_cnh_back", "new_cnh_front", "new_cnh_full", "crlv", "crlv_new", "generic", "rg_back", "rg_front", "rg_full", "rg_new_back", "rg_new_front", "rg_new_full", "rne_back", "rne_front", "rnm_back", "rnm_front", "ctps_back", "ctps_front", "passport"].
    Sim, quando não conseguiu verificar a qualidade
    Double quality

    Qualidade inferida pelo algoritmo de qualidade do documento, quando habilitado. Varia entre 1.0 e 5.0.
    Sim, quando não conseguiu verificar a qualidade
    int lensFacing

    Define a face da câmera que foi utilizada. Utilize DocumentDetectorResult.LENS_FACING_FRONT ou DocumentDetectorResult.LENS_FACING_FRONT para validar.
    Não
    ← Primeiros passosPassiveFaceLiveness →
    • Documentos suportados
    • Tamanho do SDK
      • Optimizando o tamanho
    • Analytics
    • Permissões em tempo de execução
    • Instanciando o objeto DocumentDetector
      • DocumentDetector.Builder
    • Desativando validações de segurança para teste
      • DocumentDetectorStep
      • CaptureStage
      • UploadSettings
      • MessageSettings
    • Iniciando a DocumentDetectorActivity
    • Obtendo o resultado
      • DocumentDetectorResult
      • Capture
    Combate à Fraude Docs
    2021 © Combate à Fraude - Todos os direitos reservados.
    COMBATEAFRAUDE TECNOLOGIA DA INFORMACAO LTDA CNPJ: 34.102.645/0001-57
    R. Tiradentes, 1077 - 5º andar - Centro, Venâncio Aires - RS, CEP 95800-000