Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Nesta seção, você encontrará tudo relacionado as APIs REST do meio de integração by Unico
Nesta seção, você encontrará todas as APIs REST disponíveis para utilização do meio de integração by Unico
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Nesta seção, você entrará os componentes de experiência que podem ser utilizados com o by Unico
Loading...
Loading...
Loading...
Loading...
Nesta seção, você encontrará os recursos adicionais relacionados ao meio de integração by Unico
Loading...
Loading...
Loading...
Loading...
Nesta seção, você encontrará todas as APIs REST disponíveis para utilização do meio de integração by Client
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Nesta seção, você encontrará os recursos adicionais relacionados ao meio de integração by Client
Loading...
Loading...
Loading...
Nesta seção, você encontrará todas as especificações técnicas dos SDK's disponíveis da plataforma Unico IDCloud
Loading...
Loading...
Nesta seção, você encontrará todas as informações necessárias pra implementar os SDKs da plataforma Unico IDCloud
Nesta seção, você encontrará todas as informações necessárias pra implementar o SDK Android da plataforma Unico IDCloud
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Nesta seção, você encontrará todas as informações necessárias pra implementar o SDK iOS da plataforma Unico IDCloud
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Nesta seção, você encontrará todas as informações necessárias pra implementar o SDK Flutter da plataforma Unico IDCloud
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Nesta seção, você encontrará todas as informações necessárias pra implementar o SDK Web da plataforma Unico IDCloud
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Nesta seção, você encontrará os recursos adicionais relacionados à SDK
Loading...
Loading...
Loading...
Loading...
Conheça tudo sobre nossa plataforma de verificação de identidade Unico IDCloud
IDCloud é a única plataforma de verificação de identidade que combina segurança com precisão garantida. Com ela, é possível validar a identidade de usuários de maneira simples e intuitiva, utilizando apenas uma selfie, garantindo fluidez e proteção nos seus processos de verificação.
Nesta seção, você encontrará um overview de como se integrar com a plataforma Unico IDCloud
Aqui você encontrará as informações técnicas das APIs REST da plataforma Unico IDCloud
Nesta seção, você encontrará quais capacidades estão disponíveis em cada meio de integração da plataforma Unico IDCloud
Para atender os mais variados casos de uso da sua operação, as capacidades do IDCloud possuem diferentes disponibilidades de acordo com os meios de integração. Abaixo confira a tabela com todas as possibilidades de utilização, separadas por meio de integração:
Em cada meio de integração é possível combinar diversas capacidades entre si. Para saber mais sobre os fluxos possíveis em cada meio de integração, acesse os respectivos menus abaixo:
Para ambos os meios de integração também é possível obter o retorno de similaridade da Serpro.
Nesta seção, você encontrará a descrição de todas as capacidades da plataforma Unico IDCloud
Abaixo veja detalhadamente como funciona cada capacidade:
Quando há a necessidade de identificar se a pessoa é real e está viva no momento da operação. Pode ser utilizada de forma isolada ou em conjunto com as capacidades de Verificação de Identidade, Alerta de comportamento, Score de risco e Validação (1:1). Deve ser sempre utilizada em conjunto com os SDKs.
As possibilidades de resposta são:
SIM: indica que o usuário está ao vivo no momento da captura da seflie;
NÃO: indica que o usuário não está ao vivo no momento da captura da selfie.
Quando há a necessidade de garantir que o usuário que está realizando o processo é quem diz ser. Por padrão, é sempre utilizada em conjunto com a capacidade Prova de vida.
As possibilidades de resposta são:
SIM: indica que a face é a do real titular do CPF;
NÃO: indica que a face não é a do real titular do CPF;
INCONCLUSIVO: indica que não temos evidências suficientes para garantir se a face é ou não do real titular do CPF.
O Alerta de Comportamento complementa a resposta de Verificação de Identidade, trazendo o componente de comportamento que dá a certeza de um risco atrelado àquela identidade, visto comportamento fraudulento anterior. Só pode ser utilizado em conjunto com a capacidade Verificação de Identidade.
As possibilidades de resposta são:
SIM: indica que a face já esteve envolvida em transações fraudulentas de identidade;
SUSPEITO: indica que a face já teve pelo menos uma passagem em nossa base com outro identificador;
INCONCLUSIVO: indica que não temos indícios suficientes que a face esteja envolvida em transações fraudulentas em nossa base.
A capacidade Score de risco está sendo descontinuada e só poderá ser utilizada em casos excepcionais. Para verificar a elegibilidade do seu caso, entre em contato com o responsável pela sua conta.
Quando há a necessidade de se obter um score de probabilidade sobre o usuário que está realizando o processo é quem diz ser. Só pode ser utilizada em orquestração com a capacidade de de Verificação de Identidade quando a resposta desta é "INCONCLUSIVA".
As possibilidades de resposta são:
Score Positivo: pode variar entre +10 e +100. Quanto maior o score, maior a probabilidade da face ser a real titular do CPF;
Score Zero: quando há algum erro de cadastro. Indicamos que seja feita uma nova captura;
Score Negativo: pode variar entre -10 e -100. Quanto menor o score, maior a probabilidade da face não ser a real titular do CPF.
Negativo
Entre -40 e -100
Recomendamos negar o cadastro.
Negativo
Entre -10 e -39
Recomendamos que o cliente avalie os riscos envolvidos para a tomada de decisão.
Neutro
Score Zero
Recomendamos negar o cadastro e solicitar ao usuário que seja feita uma nova captura com a foto da real titular do CPF.
Positivo
Entre +10 e +49
Recomendamos que o cliente avalie os riscos envolvidos para a tomada de decisão.
Positivo
Entre +50 e +100
Recomendamos aprovar o cadastro.
Quando há a necessidade de reconhecer se a pessoa da operação é a mesma que realizou o cadastro. Por padrão, é sempre utilizada em conjunto com a capacidade Prova de vida. Só pode ser utilizado em casos onde já foi feito um processo de Verificação de Identidade.
As possibilidades de resposta são:
SIM: indica que a face que está realizando a transação é a mesma que realizou o processo utilizado como referência;
NÃO: indica que a face que está realizando a transação não é a mesma que realizou o processo utilizado como referência.
Quando há a necessidade de solicitar, armazenar e reutilizar documentos. Oferecemos a possibilidade de reaproveitar os documentos pessoais dos usuários (Passaporte brasileiro, CIN, RG e CNH - digital e comum), diminuindo a fricção desse processo que costuma ser de alta desistência, com um produto inédito no mercado. E caso não tenhamos os documentos na base, é possível capturá-los.
Só pode ser utilizado em conjunto com a capacidade Verificação de Identidade, pois trabalhamos com alta confiabilidade para o compartilhamento dos documentos. Além disso, tanto para o reaproveitamento quanto para a captura ofertamos o benefício de processamento, onde utilizamos as seguintes tecnologias:
Tipificação: indica qual o tipo de documento identificado
Extração de dados (OCR): consiste em extrair os dados do documento a partir de uma imagem;
FaceMatch: consiste em comparar a face da selfie com a face do documento;
CPF Match: consiste em procurar no documento informado um determinado CPF.
Quando há a necessidade de utilizar a biometria para assinar um documento. Utilize a mesma forma de autenticação do usuário na jornada para finalizar a operação com a assinatura do contrato.
*A capacidade de assinatura eletrônica só está disponível no meio de integração by Unico em flows com outras capacidades. Veja mais na seção fluxos possíveis.
O retorno de similaridade da Serpro não é uma capacidade nativa do IDCloud, mas sim uma funcionalidade adicional incorporada para atender a uma regulamentação da Dataprev, referente a operações de crédito consignado do INSS, voltadas para aposentados e pensionistas.
Dado que essas operações exigem obrigatoriamente o retorno de similaridade da Serpro, a plataforma IDCloud foi ajustada para incluir essa funcionalidade como uma opção no produto. Ao utilizar o recurso de similaridade da Serpro, a resposta da API será o score de similaridade encontrado.
Quando a Serpro encontra a face, é devolvido em score de 0-100, como no exemplo abaixo:
Quando a Serpro não encontra a face, é devolvido o score -1, como no exemplo abaixo:
Quando há algum erro na integração com a Serpro, é devolvido o score -2, como no exemplo abaixo:
Para entender como você pode usar cada uma das capacidades, não deixe de acessar a seção "Meios de Integração" no link abaixo:
Nesta seção, você conhecerá mais sobre os meios de integração da plataforma Unico IDCloud
Para empresas que desejam contar com um parceiro para gerenciar a experiência do usuário com melhores práticas e privacidade, além de contar com a facilidade na orquestração de fluxos com as capacidades da Unico e com a atualização automática de tecnologias, como os SDKs.
Com o by Unico, você terá um time de especialistas em segurança e melhores práticas de UX design para garantir a melhor conversão possível em sua operação. Pode ser utilizada de forma responsiva tanto no Desktop quanto no Mobile. Oferendo as seguintes possibilidades de uso:
Desktop
Webmobile
App mobile
Confira como é a experiência do usuário final com o by Unico na Mensageria, Webview e iFrame, respectivamente, nas abas abaixo:
Para empresas que desejam controlar a experiência dos usuários com frontend próprio, bem como a construção dos fluxos com as capacidades da Unico no backend junto às demais tecnologias e recursos utilizados para autenticação.
Com o by Client você tem a liberdade que precisa para criar e gerenciar a jornada do usuário final como preferir, aproveitando as capacidades da plataforma Unico IDCloud como julgar necessário.
Nesta seção, você encontrará como realizar a criação de uma conta de serviço para se autenticar na plataforma Unico IDCloud
Para utilizar interações server-to-server, é preciso solicitar a criação da conta de serviço com o gerente de projetos responsável pela sua empresa enviando os seguintes dados: nome da empresa, nome da aplicação, nome, e-mail e celular do responsável pela aplicação na empresa. É preciso criar contas diferentes para os ambientes de Homologação e Produção.
Após o recebimento desses dados, será criada uma conta de serviço responsável por autenticar a sua aplicação e enviaremos um e-mail para que seja gerado o par de chaves para a conta.
Uma credencial de conta de serviço inclui um nome único de conta, um identificador da empresa (Tenant ID) e ao menos um par de chaves (pública e privada). Ao final da geração das chaves, você recebe apenas a chave privada (arquivo .key.pem), bem como o payload que deve ser utilizado para montar o JWT. Este payload terá o seguinte formato:
Caso precise da chave pública para configurar em seu sistema, contate o gerente de projetos responsável por sua conta. Também é possível gerar uma chave pública através do comando openssl a seguir:
Nesta seção, você encontrará os possíveis erros que podem acontecer ao tentar de autenticar na plataforma Unico IDCloud
Os erros retornados na requisição podem ser identificados através dos códigos abaixo e possuem a seguinte estrutura:
Nesta seção, você encontrará recursos adicionais relacionados à autenticação
A plataforma é versátil e pode ser adaptada para diferentes casos de uso, permitindo que você a ajuste conforme as necessidades do seu cenário. Para isso, oferecemos diversas — funcionalidades da nossa plataforma que atendem a uma ampla gama de operações e demandas. E é possível utilizar a plataforma IDCloud através de dois meios de integração, . Para saber mais sobre as nossas capacidades, acesse a página a seguir:
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Independentemente do meio de integração que utilizar, o primeiro passo é a . Você deve possuir uma conta de serviço e realizar a autenticação OAuth2 para obter um access-token válido.
Saiba mais em .
Entenda sobre as disponíveis na plataforma Unico IDCloud e decida quais você irá utilizar na sua operação.
Saiba mais em .
Você quer a praticidade do ? Ou a liberdade do ?
De acordo com as que irá utilizar, defina qual será seu meio de integração com base na sua operação e seu contexto.
Saiba mais em .
Optou pelo ?
e;
Defina onde do seu usuário final.
Preferiu seguir pelo ?
Capture a selfie do usuário final utilizando nossos ;
.
Para otimizar sua integração, você pode utilizar o e saber quando o resultado do seu processo estiver concluído.
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Verificação de Identidade
Score de risco
Alerta de comportamento
Prova de vida
Validação (1:1)
Reaproveitamento e captura de documentos
Assinatura eletrônica
;
.
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Confira como é a experiência de captura da selfie do usuário final com o by Client utilizando os da Unico:
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
☁ Sobre o IDCloud
Inicie a leitura conhecendo mais sobre a plataforma IDCloud.
🔑 Sobre a Autenticação
Veja as especificações técnicas da autenticação para utilizar APIs da plataforma IDCloud.
🔒 Sobre as APIs
Veja as especificações técnicas das APIs da plataforma IDCloud.
⚙ Sobre os SDKs
Veja o passo a passo para implementar os SDKs do IDCloud para o by Client.
Prova de vida
Verificação de Identidade
Alerta de comportamento
Score de risco
Validação (1:1)
Reaproveitamento e captura de documentos
Assinatura eletrônica
+Retorno de similaridade da Serpro
1.0.1
Verifique se o ID informado na formação do "iss" é o ID do tenant correto, fornecido na geração da chave privada¹.
1.0.14
Verifique com o responsável pelo projeto se a aplicação utilizada está ativa.
1.1.1
Parâmetro "scope" não foi informado no payload do token jwt utilizado na requisição.
1.2.4
O token jwt utilizado na requisição está expirado. Verifique o valor informado no campo "exp" do payload.
1.2.5
O token jwt utilizado na requisição não pode ser validado. Verifique os parâmetros informados e tenha certeza de tê-lo assinado da forma correta.
1.2.6
A chave privada utilizada na assinatura do token jwt utilizado na requisição não é mais aceitável. Solicite novas credenciais para a conta utilizada.
1.2.7
O token jwt utilizado na requisição não é mais aceitável, pois já foi utilizado anteriormente. Gere um novo token para fazer uma nova requisição.
1.2.11
A conta utilizada não está ativa.
1.2.14
A conta utilizada não possui as permissões necessárias.
1.2.18
A conta utilizada foi temporariamente bloqueada por ter excedido a quantidade de tentativas inválidas de autenticação.
1.2.19
A conta utilizada não está autorizada a impersonar outra conta de usuário (remova o parâmetro "sub" do payload).
1.2.20 1.2.21
Falha na decodificação do token jwt utilizado na requisição. Utilize um novo token inserindo somente os campos especificados nas seções "Campos obrigatórios" e "Campos adicionais", obedecendo à nomenclatura, semântica e tipo de cada campo.
1.2.22
O token jwt utilizado na requisição possui campos adicionais no payload que não são permitidos. Utilize um novo token inserindo somente os campos especificados nas seções "Campos obrigatórios" e "Campos adicionais", obedecendo à nomenclatura, semântica e tipo de cada campo.
1.3.1
A conta utilizada possui restrições de IP de origem.
1.3.2
A conta utilizada possui restrições de data/hora de acesso.
Nesta seção, você encontrará todas as especificações técnicas das APIs REST da plataforma Unico IDCloud, utilizando o meio de integração by Unico
Nesta seção, você encontrará como realizar o processo de autenticação na plataforma Unico IDCloud
Após a criação e configuração de uma conta de serviço, sua aplicação precisa completar as seguintes etapas:
Criar um JSON Web Token (JWT), que inclui cabeçalho, payload e assinatura;
Requisitar um token de acesso (AccessToken) da plataforma de autenticação OAuth2;
Tratar a resposta JSON que a plataforma de autenticação retornará.
Se na resposta estiver incluso um token de acesso, você poderá usá-lo para fazer requisições às APIs dos produtos da unico para os quais a conta de serviço possui permissão de acesso. (Se na resposta não estiver incluso um token de acesso, seu JWT e requisição de obtenção do token podem estar incorretos ou a conta de serviço pode não ter as permissões necessárias para acessar os recursos solicitados.)
O token de acesso gerado na requisição mencionada acima tem validade padrão de 3600 segundos, podendo variar de acordo com a configuração de segurança estabelecida para sua empresa. Quando o token de acesso expirar, sua aplicação deverá gerar um novo JWT, fazer a assinatura e requisitar um novo token de acesso na plataforma de autenticação.
Um JWT é composto por três partes: um cabeçalho, um payload e uma assinatura. O cabeçalho e o payload são objetos JSON. Esses objetos JSON são serializados em UTF-8 e então codificados usando codificação Base64url¹. Esta codificação provê resliência contra alterações de codificação em casos de repetidas operações de codificação. O cabeçalho, o payload e a assinatura são concatenadas com um caractere de ponto final ..
Um JWT é composto da seguinte forma:
O texto base para a assinatura é composto pela seguinte forma:
O cabeçalho consiste em dois campos que indicam o algorítimo de assinatura e o formato do token. Ambos os campos são obrigatórios e cada campo possui apenas um valor. Contas de serviço dependem do algorítimo RSA SHA-256 e do formato de token JWT. Como resultado, a representação JSON do cabeçalho se dá da seguinte forma:
A representação em Base64url se dá da seguinte forma:
O payload JWT contém informações sobre o JWT, incluindo as permissões sendo requisitadas (scopes), a conta solicitando acesso, o emissor, o momento em que o token foi emitido e o tempo de vida do token. A maioria dos campos são obrigatórios. Assim como o cabeçalho JWT, o payload é um objeto JSON e é usado na composição da assinatura.
Os campos obrigatórios no JWT são mostrados na tabela abaixo. Eles podem aparecer em qualquer ordem dentro do payload.
Entenda como funciona a conversão para os campos de emissão (iat) e expiração (exp) do jwt, e veja também exemplos de utilização dos valores dos campos aqui. Além disso, o campo “iat” deve ser o horário atual no formato exigido e o “exp” deve respeitar a conta abaixo:
A representação dos campos JSON obrigatórios no payload do JWT se dá da seguinte forma:
A especificação JSON Web Signature (JWS)² é a mecânica que guia o cálculo da assinatura para um JWT. O conteúdo de entrada para o cálculo da assinatura é o byte array do seguinte conteúdo:
O mesmo algoritmo sinalizado no cabeçalho do JWT precisa ser utilizado para o cálculo da assinatura. O único algorítimo de assinatura suportado pela plataforma de autenticação OAuth2 é o RSA usando SHA-256. Ele é expressado como RS256 no campo alg do cabeçaho do JWT.
Assine a representação UTF-8 do conteúdo de entrada utilizando SHA256withRSA (também conhecido como RSASSA-PKCS1-V1_5-SIGN com o hash SHA-256) com a chave privada que foi criada e associada à conta de serviço (arquivo .key.pem gerado pela solicitação recebida por e-mail). O conteúdo de saída será um byte array.
A assinatura precisará ser então codificada em Base64url. O cabeçalho, o payload e a assinatura deverão ser concatenadas com o caractere de ponto final .
. O resultado é o JWT. Ele deve ser da seguinte forma:
A seguir está um exemplo de token JWT antes da codificação em Base64url:
Abaixo está um exemplo do JWT que foi assinado e está pronto para transmissão:
Após a geração do JWT assinado, uma aplicação pode utilizá-lo para requisitar um token de acesso (Access Token). A requisição do token de acesso é uma requisição POST HTTPS e o corpo deve ser URL encoded. A URL é a mostrada abaixo:
Os parâmetros abaixo são obrigatórios na requisição POST HTTPS:
Se o JWT e a requisição do token de acesso foram formados apropriadamente e a conta de serviço tem as permissões necessárias, então a resposta da plataforma de autenticação retorna um objeto JSON contendo um token de acesso. Segue um exemplo de resposta da plataforma:
A duração do token de acesso é variável. Sua duração é especificada no campo “expires_in”, retornado juntamente com o token de acesso. Deve-se utilizar o mesmo token de acesso durante a sua validade para todas as chamdas às APIs dos produtos.
Não solicite um novo token de acesso até que a validade do token atual esteja chegando ao fim. Sugerimos uma margem de 600 segundos (10 minutos). Para isso execute o cálculo:
Sendo que token.exp é o timestamp da expiração do token.
Por padrão, o token enviado para a empresa tem duração de 1h, mas pode ser alterado. A sugestão é sempre usar o expires_in como base e subtrair 600s dele para pedir um novo token.
Exemplos:
Um novo token de acesso pode ser solicitado quando faltar 10 minutos pra expirar.
Não utilize um tempo fixo para a obtenção de um novo token, pois o tempo de duração do token recebido pode ser menor que o tempo estabelecido, o que ocasionará falha na utilização dos serviços.
¹ De acordo com o RFC 4648 de codificação BaseN, o formato Base64url é similar ao formato Base64, com exceção do caracter = que deve ser omitido, e dos caracteres + e / que devem ser substituídospor - e _, respectivamente.
Nesta seção, você encontrará exemplos de requisições de Ciação de processos no by Unico
Para utilizar o Postman, siga os passos:
Selecione o método POST.
Insira a URL https://api.cadastro.uat.unico.app/client/v1/process/
.
Selecione a aba Authorization.
Na lista de Type, selecione Bearer Token.
Insira o token obtido no campo Token com o prefixo Bearer
.
Selecione a aba Body e insira os dados abaixo de acordo com sua necessidade.
Nesta seção, você encontrará como obter o resultado de um processo no by Unico através da API REST
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento do endpoint de Consulta do Resultado de Processos no by Unico.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Os processos devem ser criados exclusivamente em uma comunicação backend-to-backend, devido à nossa política de CORS, que impede a criação de processos em uma comunicação frontend-to-backend.
O conteúdo retornado no parâmetro process.services.documents.doc.data
, referente à tecnologia de OCR Extração, pode ser consultado abaixo:
Caso não consigamos extrair algum campo do documento, ele não é listado no retorno da API.
Dicas:
Para implementar suas regras de negócio, sempre valide o retorno das capacidades analisando os parâmetros do response na seguinte ordem:
state
= PROCESS_STATE_FINISHED
E result
= PROCESS_RESULT_OK
;
ENTÃO, pode realizar a tomada de decisão analisando os retornos do parâmetro authenticationInfo
.
Caso receba o state
= PROCESS_STATE_FINISHED
com os resultados result
= PROCESS_RESULT_INVALID_IDENTITY
ou PROCESS_RESULT_ERROR
, interprete que houve algum erro na biometria e tente novamente.
Para melhorar a performance da sua operação, você pode utilizar nossos Webhooks e só consultar o resultado de processos que estiverem nos status finalizados;
Também é possível utilizar bibliotecas previamente estabelecidas para realizar a criação do JWT. Como referência, é possível encontrar uma lista de bibliotecas no site .
O token de acesso retornado no campo “acess_token” do objeto JSON também é um token JWT que deverá ser utilizado nas APIs dos Produtos da unico. Caso retorne um erro na requisição, é possível consultar o tipo do erro na tabela de erros clicando .
² JSON Web Signature: .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Você pode ver mais sobre como gerar um access-token .
UAT: ;
Produção: .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
grant_type
Utilize o seguinte texto, URL-encoded se necessário: urn:ietf:params:oauth:grant-type:jwt-bearer
assertion
O JWT, incluindo a assinatura.
iss
O identificador da conta de serviço na empresa.
scope
Uma lista delimitada por espaços ou pelo sinal de positivo +
das permissões que a aplicação está requisitando. Se todas as permissões da conta forem necessárias, utilizar o sinal de asterisco *
para tal.
aud
Casos recorrentes que NÃO funcionam:
exp
O tempo de expiração do token, especificado em segundos desde 00:00:00 UTC, 1 de Janeiro de 1970. Este valor tem um tempo máximo de 1 hora após o momento da emissão do JWT. Este valor deve ser numérico.
Casos recorrentes que NÃO funcionam:
Uso de aspas na delimitação do valor. Ex.: “1524161193” é uma string e não funcionará. Já 1524161193 é um número e funcionará.
iat
O momento da emissão do JWT, especificado em segundos desde 00:00:00 UTC, 1 de Janeiro de 1970. Este valor deve ser numérico.
Uso de aspas na delimitação do valor. Ex.: “1524161193” é uma string e não funcionará. Já 1524161193 é um número e funcionará.
Nesta seção, você encontrará a collection do Postman com a REST API para realizar a autenticação na plataforma Unico IDCloud
Faça download do arquivo abaixo, importe no Postman e substitua o valor dos parâmetros "service_account", "tenant_id" e "secret_key" para testar a chamada.
Nesta seção, você encontrará como obter o conjunto probatório do Sign de um processo no by Unico através da API REST
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento do endpoint de Obtenção do Conjunto Probatório do Documento Assinado no by Unico. Este endpoint fornecerá o conjunto probatório da assinatura do usuário final em fluxos que possuem a capacidade Assinatura Eletrônica.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Nesta seção, você encontrará como obter a selfie de um processo no by Unico através da API REST
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento do endpoint de Obtenção da Selfie do Usuário no by Unico. Este endpoint fornecerá a selfie, com marca d'água, do usuário final em processos concluídos, permitindo que você a utilize como suporte em casos de contestação por parte do usuário.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Os processos devem ser criados exclusivamente em uma comunicação backend-to-backend, devido à nossa política de CORS, que impede a criação de processos em uma comunicação frontend-to-backend.
Pontos importantes:
A liberação da permissão para obter a selfie do usuário dependerá de avaliação interna da Unico. Entenda com o responsável do seu projeto se poderá consumir este serviço;
Só é possível recuperar a selfie com a marca d'água.
Nesta seção, você encontrará como obter o conjunto probatório de um processo no by Unico através da API REST
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento do endpoint de Obtenção do Conjunto Probatório no by Unico. Este endpoint fornecerá o conjunto probatório da transação biométrica finalizada, permitindo que você o armazene para possíveis contestações futuras por parte do usuário final.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Os processos devem ser criados exclusivamente em uma comunicação backend-to-backend, devido à nossa política de CORS, que impede a criação de processos em uma comunicação frontend-to-backend.
O conjunto probatório só está disponível para os processos finalizados.
Endereço da plataforma de autenticação que faz a emissão de tokens de acesso. Este valor deverá ser sempre e exatamente .
Inserção de uma barra ao final do endereço: ;
Uso do protocolo HTTP ao invés de HTTPS: .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Você pode ver mais sobre como gerar um access-token .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Você pode ver mais sobre como gerar um access-token .
UAT: ;
Produção: .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Para entender mais sobre o conjunto probatório, veja a seção .
Você pode ver mais sobre como gerar um access-token .
UAT: ;
Produção: .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Nesta seção, você encontrará você encontrará a collection do Postman com as APIs REST do by Unico
Nesta seção, você encontrará a lista de todas as PoCs do by Unico disponíveis para apoiar a sua implementação.
Os seguintes exemplos de projetos são disponibilizados para facilitar o entendimento do funcionamento do by Unico.
Swift
PoC em Swift que implementa o by Unico na WebView em iOS
Kotlin
PoC em Kotlin que implementa o by Unico na WebView em Android
Nosso suporte é restrito a aplicativos desenvolvidos diretamente nas plataformas nativas Android e iOS, utilizando seus respectivos módulos nativos, além do framework Flutter (se a implementação for utilizando nosso plugin). No momento, não oferecemos suporte para aplicativos desenvolvidos em frameworks híbridos, como React Native, Ionic ou outras tecnologias de desenvolvimento multiplataforma.
Angular
PoC em Angular que implementa o by Unico através do SDK da Unico
React
PoC em React que implementa o by Unico através do SDK da Unico
JavaScript
PoC em JavaScript que implementa o by Unico através do SDK da Unico
Vue JS
PoC em Vue JS que implementa o by Unico através do SDK da Unico
NextsJS
PoC em NextsJS que implementa o by Unico através do SDK da Unico
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Nesta seção, você encontrará todas as especificações técnicas das APIs REST do IDCloud, utilizando o meio de integração by Client
Nesta seção, você encontrará o funcionamento do fluxo com QR Code para experiências desktop
O by Unico disponibiliza a funcionalidade de QR code para facilitar o fluxo em dispositivos desktop. Através do QR code, é possível iniciar o By Unico em uma experiência web sem ter que se preocupar se o dispositivo do usuário possui câmera ou não. Dessa forma:
Diminuímos a chance de falha na captura biométrica;
Garantimos uma melhor experiência em outras capacidades;
Aumentamos as chances de conversão.
Quando o usuário inicia o By Unico através de um dispositivo desktop:
Identificamos que é um dispositivo desktop e oferecemos o QR code para possa continuar a jornada pelo celular:
Uma vez escaneado, o usuário segue sua jornada no celular normalmente, enquanto o dispositivo desktop aguarda sua conclusão:
O dispositivo desktop identifica que a jornada foi concluída no celular e redireciona o usuário para a experiência de origem:
O usuário pode continuar sua jornada na experiência de origem no desktop normalmente:
Tamanho da tela: mínimo de 961px de largura;
Orientação da tela: paisagem;
User-Agent: não ser um dispositivo móvel.
Nesta seção, você encontrará todas as especificações técnicas das APIs REST do by Client
O by Client é um canal que oferece toda a liberdade para o cliente utilizar as soluções de validação de identidade da plataforma IDCloud.
Você pode combinar as capacidades como quiser e nos casos de uso mais distintos, mas para isso você deverá ter API Keys configuradas com as capacidades que deseja utilizar.
No by Client possuímos capacidades onde a resposta é síncrona (ou seja, no momento de criar o processo já devolvemos a resposta) e outras capacidades assíncronas (onde processamos os dados e você necessariamente precisa "buscar" este resultado através de um método GET na API REST.
Em sua operação você poderá combinar as capacidades como bem quiser, porém cada capacidade terá sua comunicação, por exemplo:
Você pode ter uma operação que utilize as capacidades Verificação de Identidade + Alerta de comportamento + Score de risco;
Ao criar o processo, a resposta das capacidades Verificação de Identidade e Alerta de comportamento serão síncronas, no próprio response da API de criação de processo;
Já a capacidade de Score de risco será executada de forma assíncrona, sendo necessário aguardar seu processamento e então realizar uma outra requisição GET para obter o resultado final do processo.
Abaixo veja as capacidades síncronas e assíncronas:
Nesta seção, você encontrará as particularidades de criar um processo que tenha somente a Prova de vida como capacidade
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento do endpoint relacionado à capacidade Prova de vida, utilizada de forma isolada.
Trata-se de uma capacidade síncrona, ou seja, toda a integração ocorre utilizando um único endpoint.
As capacidades da plataforma Unico IDCloud via by Client são gerenciadas por meio de API Keys - utilizadas como um parâmetro no header das requisições -, que definem o escopo de acesso. Como pré-requisito, é necessário possuir uma API Key configurada exclusivamente para a capacidade Prova de Vida, garantindo acesso dedicado e seguro ao recurso.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Pontos Importantes:
Para utilizar a capacidade Prova de vida, é indispensável o uso dos nossos SDKs;
Caso ocorra algum erro no processamento da biometria, a requisição retornará um status code = 200
e o processo retornará um status = 5
, como no exemplo abaixo:
Dicas:
Para este caso de uso, não há a necessidade de Consultar o Resultado do Processo, visto que a resposta é síncrona;
Para implementar suas regras de negócio, sempre valide os status finais dos processos (3
,5
). Para validar a resposta das capacidades IDCloud, só considere o status
= 3
para sua tomada de decisão;
Para mais informações sobre os cenários que pode receber no response, consulte a seção Cenários de response;
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Tem por objetivo, fornecer uma gama de possibilidades no uso das capacidades da plataforma IDCloud oferecendo uma solução que pode ser integrada ao seu back-end e liberdade para clientes que desejam controlar a experiência dos usuários com front-end próprio (para isso leia sobre o ) ou através dos nossos .
O by Client é um meio de integração do Unico IDCloud que permite que os clientes se integrem da maneira que quiserem, combinando ou não as como julgarem necessário. Esse meio de integração fornece os recursos necessários para realizar validação da Prova de vida, , Verificação da Identidade, Alerta de comportamento, Score de risco e Reaproveitamento e captura de documentos.
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Você pode ver mais sobre como gerar um access-token .
UAT: ;
Produção: .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Nesta seção, você encontrará as particularidades de criar um processo que tenha a Prova de vida + Verificação de Identidade como capacidades
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento do endpoint relacionado às capacidades Prova de Vida + Verificação de Identidade, utilizadas em conjunto.
Trata-se de duas capacidades síncronas, ou seja, toda a integração ocorre utilizando um único endpoint.
As capacidades da plataforma Unico IDCloud via by Client são gerenciadas por meio de API Keys - utilizadas como um parâmetro no header das requisições -, que definem o escopo de acesso. Como pré-requisito, é necessário possuir uma API Key configurada com as capacidades Prova de Vida + Verificação de Identidade, garantindo acesso dedicado e seguro ao recurso.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Pontos Importantes:
Caso a resposta da capacidade Verificação de Identidade seja unicoId = yes
, este retorno já engloba a Prova de vida (ou seja, não receberá o parâmetro liveness
no response);
Para utilizar a capacidade Prova de vida, é indispensável o uso dos nossos SDKs:
É possível utilizar a capacidade de Verificação de Identidade sem a Prova de vida. Para este caso de uso o retorno de liveness sempre será liveness = 1
. Neste cenário não há nenhuma validação da prova de vida, nem mesmo passiva.
Caso ocorra algum erro no processamento, o processo retornará um status = 5
, como no exemplo abaixo:
Dicas:
Para este caso de uso, não há a necessidade de Consultar o Resultado do Processo, visto que a resposta é síncrona;
Para implementar suas regras de negócio, sempre valide os status finais dos processos (3
,5
). Para validar a resposta das capacidades IDCloud, só considere o status
= 3
para sua tomada de decisão;
Para mais informações sobre os cenários que pode receber no response, consulte a seção Cenários de response;
Você pode ver mais sobre como gerar um access-token .
UAT: ;
Produção: .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Nesta seção, você encontrará todas as especificações técnicas das APIs REST do by Unico
O by Unico é um canal que oferece uma infraestrutura de soluções de validação de identidade da plataforma IDCloud.
Tem por objetivo, simplificar o uso das capacidades da plataforma IDCloud oferecendo uma solução que pode ser integrada ao seu back-end e front-end e que aumenta a segurança das transações.
Compatível com todos os dispositivos com câmera frontal, seja em laptops ou mobile, respeitando a lista de navegadores oficialmente suportados abaixo:
Demais navegadores não são suportados.
Para isso, você irá mudar apenas o parâmetro flow no payload da REST API, e com isso terá diversas possibilidades de jornadas de verificação. Verifique abaixo a tabela relacionando os flows disponíveis e suas respectivas capacidades:
idlive
id
idlivetrust
idtrust
idunicodocs
idunicosign
idunicodocssign
idunicoserprodocssign
idtrustdocs
idtrustsign
idtrustdocssign
idtoken
idtokentrust
idtokensign
A capacidade Score de risco está sendo descontinuada e só poderá ser utilizada em casos excepcionais.
Nesta seção, você encontrará as particularidades de criar um processo que tenha Prova de vida + Validação (1:1) como capacidades
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento do endpoint relacionado às capacidades Prova de Vida + Validação (1:1), utilizadas em conjunto.
Trata-se de duas capacidades síncronas, ou seja, toda a integração ocorre utilizando um único endpoint.
As capacidades da plataforma Unico IDCloud via by Client são gerenciadas por meio de API Keys - utilizadas como um parâmetro no header das requisições -, que definem o escopo de acesso. Como pré-requisito, é necessário possuir uma API Key configurada com as capacidades Prova de Vida + Validação (1:1), garantindo acesso dedicado e seguro ao recurso.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Pontos Importantes:
Para utilizar a capacidade Prova de vida, é indispensável o uso dos nossos SDKs:
É possível utilizar a capacidade de Validação (1:1) sem a Prova de vida. Para este caso de uso, não devolveremos o parâmetro liveness
no response da API. Neste cenário não há nenhuma validação da prova de vida, nem mesmo passiva.
Caso ocorra algum erro no processamento, o processo retornará um status = 5
, como no exemplo abaixo:
Dicas:
Para este caso de uso, não há a necessidade de Consultar o Resultado do Processo, visto que a resposta é síncrona;
Nesta seção, você encontrará as particularidades de criar um processo que tenha a Prova de vida + Verificação de Identidade + Score de risco como capacidades
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento dos endpoints relacionado às capacidades Prova de Vida + Verificação de Identidade + Score de risco, utilizadas em conjunto.
Trata-se de duas capacidades síncronas (Prova de vida + Verificação de Identidade) integradas com uma capacidade assíncrona (Score de risco). Ou seja, enquanto a maior parte dos processos retornará respostas síncronas, uma parte deles será orquestrada com o Score de risco e precisarão ser consultados posteriormente.
Para essa integração, será necessário consumir dois endpoints descritos nesta documentação, que também podem ser combinados com o uso de Webhooks.
As capacidades da plataforma Unico IDCloud via by Client são gerenciadas por meio de API Keys - utilizadas como um parâmetro no header das requisições -, que definem o escopo de acesso. Como pré-requisito, é necessário possuir uma API Key configurada com as capacidades Prova de Vida + Verificação de Identidade + Score de risco, garantindo acesso dedicado e seguro ao recurso.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Pontos Importantes:
Caso a resposta da capacidade Verificação de Identidade seja unicoId = yes
, este retorno já engloba a Prova de vida (ou seja, não receberá o parâmetro liveness
no response);
Para utilizar a capacidade Prova de vida, é indispensável o uso dos nossos SDKs:
É possível utilizar a capacidade de Verificação de Identidade sem a Prova de vida. Para este caso de uso o retorno de liveness sempre será liveness = 1
. Neste cenário não há nenhuma validação da prova de vida, nem mesmo passiva.
Caso a resposta da capacidade Verificação de Identidade seja unicoId = inconclusive
, haverá a orquestração com a capacidade Score de risco, portanto será necessário Consultar o Resultado do Processo (endpoint descrito abaixo), visto que o retorno do Score de risco é assíncrono;
Caso ocorra algum erro no processamento, o processo retornará um status = 5
, como no exemplo abaixo:
Dicas:
Para implementar suas regras de negócio, sempre valide os status finais dos processos (3
,5
). Para validar a resposta das capacidades IDCloud, só considere o status
= 3
para sua tomada de decisão:
Um percentual da sua operação terá uma resposta conclusiva da capacidade Verificação de Identidade (yes
ou no
), e para estes você pode tomar a decisão de aprovar ou não o cadastro, sem a necessidade Consultar o Resultado do Processo;
Para os casos que receber uma resposta inconclusiva da capacidade Verificação de Identidade (inconclusive
), será necessário Consultar o Resultado do Processo.
No endpoint da v2 (/processes/v2/{id}
), também devolvemos algumas informações adicionais do usuário, conforme exemplo abaixo:
Atenção:
Quando a requisição GET
for para um processo com status = 5
(erro), o status code de retorno é 410
(Gone) ao invés de 200
(Success);
Pode haver casos de drop na orquestração com a capacidade Score de risco. Neste cenário, o processo terá a combinação: {status = 3
, unicoId = inconclusive
, liveness = 1
e SEM score no response da API}. Entenda mais na seção Cenários de response;
Caso consulte um processo que esteja no status = 2
, implemente um polling até que obtenha um status = 3
ou implemente o Webhook da Unico para saber quando consultar o resultado.
Dicas:
Para implementar suas regras de negócio, sempre valide os status finais dos processos (3
,4
,5
). Para validar a resposta das capacidades IDCloud, só considere o status
= 3
para sua tomada de decisão;
Para melhorar a performance da sua operação, você pode utilizar nossos Webhooks e só consultar o resultado de processos que estiverem nos status finalizados;
Para mais informações sobre os cenários que pode receber no response, consulte a seção Cenários de response;
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção Erros.
Nesta seção, você encontrará toda a especificação técnica sobre a forma de autenticação para utilização das APIs REST da plataforma IDCloud
Para utilizar a plataforma IDCloud é necessário se autenticar via token de acesso, utilizando o sistema de autenticação conhecido como OAuth2.
O sistema de autenticação OAuth2 da unico suporta a interação server-to-server entre uma aplicação web e os serviços da unico.
Para este cenário, você precisará de uma conta de serviço, que é uma conta impessoal que pertence à sua aplicação e não a um usuário individual. Sua aplicação chama as APIs da unico em nome da conta de serviço, portanto usuários não estão diretamente envolvidos. Este cenário é chamado “two-legged OAuth”, ou “2LO”. Tipicamente, uma aplicação utiliza uma conta de serviço quando a aplicação chama as APIs da unico para trabalhar com seus próprios dados ao invés dos dados do usuário.
Este é o passo zero para iniciar sua implementação, portanto não pule esta etapa.
Nesta seção, você encontrará como criar um processo no by Unico através da API REST
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento do endpoint de Criação de Processos no by Unico. Perceba que, para utilizar as capacidades da plataforma IDCloud neste meio de integração, basta alterar o valor do parâmetro "flow" no momento de criar o processo e a Unico será a responsável por orquestrar todas as capacidades que deseja utilizar.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Os processos devem ser criados exclusivamente em uma comunicação backend-to-backend, devido à nossa política de CORS, que impede a criação de processos em uma comunicação frontend-to-backend.
A obrigatoriedade de parâmetros na criação do processo pode mudar a depender dos flows utilizados. Ex:
Em flows que possuem Assinatura eletrônica, é obrigatório o envio do objeto payload
e todas as suas propriedades;
Em flows que possuem Validação (1:1), é obrigatório o envio da propriedade bioTokenId
.
Dicas:
Nesta seção, você encontrará um exemplo de implementação da autenticação da plataforma Unico IDCloud em Javascript
Nesta seção, você encontrará as particularidades de criar um processo que tenha o Reaproveitamento e captura de documentos como capacidade
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento dos endpoints relacionados à capacidade Reaproveitamento e captura de documentos. O uso do Reaproveitamento exige que haja um processo de Verificação de Identidade anterior e este deve obtido a resposta "SIM" OU um Score de risco igual ou maior que +50, do contrário será necessário capturar o documento do usuário.
Trata-se de uma capacidade síncrona que exige o consumo de dois endpoints, detalhados nesta documentação, para sua utilização completa.
As capacidades da plataforma Unico IDCloud via by Client são gerenciadas por meio de API Keys - utilizadas como um parâmetro no header das requisições -, que definem o escopo de acesso. Como pré-requisito, é necessário possuir uma API Key configurada excluvisamente para a capacidade Reaproveitamento e captura de documentos, garantindo acesso dedicado e seguro ao recurso.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Pontos Importantes:
Para utilizar a capacidade de Reaproveitamento e captura de documentos, deve-se utilizar a capacidade Verificação de Identidade anteriormente, pois é necessário utilizar o processId obtido da Verificação de Identidade no parâmetro document.authProcessId
:
O processo precisar ser de uma biometria válida, ser utilizado em até 24h a partir de sua finalização;
É possível reutilizar uma autenticação biométrica realizada previamente pelo mesmo usuário em um prazo de até 24 horas. Dentro desse intervalo, a prova de autenticação do ID pode ser utilizada em diferentes processos de verificação de documentos (ex: RG e CNH), sem a necessidade de uma nova biometria.
Caso não consigamos extrair algum campo do documento, ele não é listado no retorno da API;
Caso ocorra algum erro no processamento, o processo retornará um status = 5
, como no exemplo abaixo:
Conteúdo retornado no document.content baseado no document.type:
Dicas:
Para implementar suas regras de negócio, sempre valide os status finais dos processos (3
,5
). Para validar a resposta das capacidades IDCloud, só considere o status
= 3
para sua tomada de decisão;
O by Unico é um meio de integração do Unico IDCloud que permite que os clientes se integrem de forma mais simples e consigam conectar diferentes em uma mesma jornada. Esse meio de integração fornece os recursos necessários para realizar Prova de vida, Verificação de Identidade, Score de risco, Captura e reaproveitamento de documentos e Assinatura eletrônica.
Saiba mais em .
Saiba mais em .
A jornada será web? Você pode utilizar o do navegador ou o .
A jornada será no seu app? Você pode utilizar uma .
A jornada será no fluxo de mensagens? Você pode enviar notificações via WhatsApp e SMS (para isso, basta informar o parâmetro correspondente na requisição no passo 2).
Saiba mais em .
Para otimizar sua integração, você pode utilizar o e saber quando o resultado do seu processo estiver concluído.
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Você pode ver mais sobre como gerar um access-token .
UAT: ;
Produção: .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Você pode ver mais sobre como gerar um access-token .
UAT: ;
Produção: .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Entenda mais sobre a utilização das capacidades no by Unico na seção .
Você pode ver mais sobre como gerar um access-token .
UAT: ;
Produção: .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Você pode ver mais sobre como gerar um access-token .
UAT: ;
Produção: .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Android
Compatível com todos os dispositivos com câmera frontal, Android 8+, armv7 ou arm64.
iOS
Compatível com todos os dispositivos iOS igual ou superior a versão 11.
Navegadores nativos
IOS:
versão superior ou igual a 12.
Android:
versão superior ou igual a 5.
Navegadores em dispositivos móveis
Android:
Chrome: versão superior ou igual a 90.
IOS:
Safari: versão superior ou igual a 14.1;
Chrome: versão superior ou igual a 90 (apenas para IOS versão igual superior a 14.4).
Navegadores de computadores/notebooks
Chrome:
versão superior ou igual a 85.
Firefox:
versão superior ou igual a 94.
Safari:
versão superior ou igual a 11.
Nesta seção, você encontrará todas as informações necessárias para o uso e integração do SDK da plataforma Unico IDCloud em seus aplicativos Android
Nesta seção, você encontrará todas as informações necessárias para o uso e integração do SDK da plataforma Unico IDCloud em seus aplicativos iOS
Nesta seção, você encontrará todas as informações necessárias para o uso e integração do SDK da plataforma Unico IDCloud em seus aplicativos Flutter
Nesta seção, você encontrará todas as informações necessárias para o uso e integração do SDK da plataforma Unico IDCloud em suas aplicações Web
Nesta seção, você encontrará a visão geral sobre os erros que pode receber nos endpoints da plataforma Unico IDCloud
A plataforma IDCloud utiliza códigos de resposta HTTP convencionais para indicar o sucesso ou falha de uma solicitação de API.
Como regra geral:
Códigos no intervalo 2xx
indicam sucesso na requisição;
Códigos no intervalo 4xx
indicam parâmetros incorretos ou incompletos (por exemplo, um parâmetro obrigatório foi omitido ou uma operação falhou com terceiros, etc.);
Códigos no intervalo 5xx
indicam que houve um erro nos servidores da plataforma Unico IDCloud.
A plataforma Unico IDCloud também gera uma mensagem de erro e um código de erro formatado em JSON:
Neste tópico, você encontrará os possíveis erros dos endpoints, separados por seu HTTP response.
3
invalid flow
Quando o flow específicado não existe.
3
invalid purpose
Quando a proposta informada não é valida.
3
invalid callbackUri: unable to parse callbackUri: parse "": empty url, invalid callbackUri: url:
Quando o callbackUri informado não é válido.
3
invalid person: email required for notification channel NOTIFICATION_CHANNEL_EMAIL, invalid email address for notification channel NOTIFICATION_CHANNEL_EMAIL
Quando o e-mail informado não é válido, mas há a notificação via e-mail.
3
invalid person: phone number required for notification channel NOTIFICATION_CHANNEL_WHATSAPP, phone number does not contain 13 chars for notification channel NOTIFICATION_CHANNEL_WHATSAPP
Quando o telefone informado não é válido, mas há a notificação via SMS ou WhatsApp.
3
idnsv2/GetPublicID request error: rpc error: code = InvalidArgument desc = invalid dui value
Quando o CPF informado não é válido.
9
XX ID Apikeys are not set
Quando alguma API Key não foi configurada corretamente.
99999
Internal failure! Try again later
Quando há algum erro interno.
Nesta seção, você encontrará todas as especificações do conjunto probatório do by Unico
O conjunto probatório é um documento em .pdf contendo evidências de autenticação de um usuário que realizou a validação de identidade no by Unico.
A seguir, veja como este documento é representado, bem como a especificação de seus campos de retorno:
Essas evidências podem ser utilizadas para garantir a autenticidade do processo.
O conjunto probatório só está disponível para os processos finalizados.
Nesta seção, você encontrará informações sobre o funcionamento do Webhook da plataforma Unico IDCloud
Os artigos GetProcess respectivos aos meios de integração, descrevem uma maneira de obter o status de um processo através de uma chamada a um endpoint. Dessa forma, é realizado um polling para receber informações sobre os processos criados. Isso significa que o endpoint pode ser chamado diversas vezes para um mesmo processo para se obter o status mais recente.
Com o uso de webhooks é possível notificar um endpoint específico toda vez que o status de um processo for alterado.
Webhook é um serviço de notificação sistêmica que permite a integração assíncrona entre sistemas, onde um sistema notifica o outro através de um gatilho. Assim, os webhooks podem manter sistemas atualizados com informações mais recentes sem ser necessária a verificação constante por atualizações através de polling.
Para configurar o webhook, são necessárias as seguintes informações:
URL de notificação: É o endpoint usado pelo By Unico para as notificações sobre as atualizações de status.
Tipo de autenticação: É o método de autenticação usado para invocar o endpoint. As seguintes opções estão disponíveis:
Basic Authorization;
OAuth2
API Key;
Sem autenticação.
Secret: Indica um segredo usado para a autenticação. O secret só é necessário quando o tipo de autenticação for Basic Authorization e API Key:
Para o Basic Authentication é preciso enviar no formato user:pass
.
Para OAuth2 é necessário enviar o secret
para obtenção do token.
Para API Key, é possível enviar em dois formatos:
header:value
, quando é desejado que o header tenha um nome específico;
value
: quando o header desejado é o Authorization
Configurações de retentativas: Indica o número de tentativas para o caso de falha na chamada ao endpoint:
Número máximo de tentativas;
Intervalo entre tentativas (em segundos);
Rate limit: Limite máximo de envios simultâneos (máximo: 500);
Timeout: Tempo máximo de espera para a resposta do endpoint (em segundos);
Status a serem notificados: Atualmente a notificação é enviada sempre que o estado de um processo for alterado para:
finished
: Processo finalizado.
2
: Em divergência;
3
: Concluído;
4
: Cancelado;
5
: Erro.
Ao configurar um webhook na plataforma, você pode obter informações sobre os processos através de notificações enviadas para um endpoint da API desenvolvida por você para receber essas atualizações.
As informações enviadas pela plataforma para a API são:
processId
: ID da transação;
state
: Status da transação;
flow
: Jornada da transação.
id
: ID da transação;
status
: Status da transação.
A requisição deve ser um método POST em uma API REST tornando mais fácil e seguro o envio das informações. Todos os campos devem ser obrigatórios. O corpo da requisição deve aceitar o ID da transação e o estado, como mostrado no exemplo a seguir:
Sobre o status de resposta:
Atualmente a plataforma tem um conjunto de status que pode variar no futuro. Sendo assim, é recomendado que os status que o você tem interesse para tomar alguma ação sejam configuráveis.
A resposta deve vir de forma síncrona. O status para requisições bem sucedidas deve estar no intervalo de 200 a 299. Qualquer outro status é considerado falha e então a plataforma realiza novas tentativas de notificações (com exponential backoff entre elas), até receber uma resposta 2xx ou até atingir o número máximo de tentativas.
Nesta seção, você encontrará uma visão geral sobre o funcionamento do SDK da plataforma Unico IDCloud
Os SDK's da plataforma Unico IDCloud tem como objetivo potencializar a segurança do seu negócio e dos seus clientes, permitindo inclusive personalizar a experiência de uso aplicando a identidade visual da sua marca. Os SDKs abstraem a complexidade de manipulação da câmera do dispositivo dos usuários e a captura de imagens (Selfie e documento), facilitando a vida do desenvolvedor e reduzindo o tempo de entrega do produto final. Outras vantagens:
Precisão na captura de imagens: Os SDKs possuem recursos que auxiliam o usuário a obter fotos biometricamente válidas, reduzindo o drop das imagens quando comparados a captura realizada pelas câmeras padrões dos dispositivos. São adicionados SmartFrames, “elementos chave“ que se ajustam automaticamente à silhueta e proporção da tela do usuário permitindo uma melhor captura da imagem;
Segurança reforçada: Recursos de criptografia e segurança contra injection de imagens, possuindo também funcionalidades que previnem fraudes adaptadas a diferentes modos de câmera. Camadas de segurança que funcionam de forma complementar, tanto a nível da aplicação quanto em relação aos dados que são trafegados entre os SDKs e o backend. O SDK também inclui ofuscação de código, bloqueio de emulador e checagem de bundle do aplicativo que a está executando.
É importante ressaltar que para o bom funcionamento das nossas soluções, com o máximo de segurança e estabilidade, é imprescindível que o SDK esteja devidamente atualizado. É responsabilidade do cliente acompanhar e garantir que está utilizando a versão mais recente do SDK disponível em nossos servidores.
O SDK (Client-side) é responsável por simplificar sua integração com a plataforma Unico IDCloud, absorvendo toda a complexidade da manipulação da câmera e captura de imagens.
Se a captura for feita com sucesso, o SDK retorna um objeto que deve ser enviado para a API do motor biométrico, completando assim a validação biométrica, conforme diagrama exemplificado abaixo:
A seguir, informações e requisitos necessários, oficialmente suportados por cada Client SDK da Unico:
Plugins: Flutter
Linguagens: Java/Kotlin
Xcode: >= 15.0
Plugins: Flutter
Linguagens: swift/objective-c
iOS: >= 11
Gerenciador de dependência: Cocoapods ou Swift Package Manager
Frameworks: React JS, Angular, Next JS, Vue JS e JS Vanilla.
Versão Javascript: ECMAScript 5 ou superiores.
Os SDKs da plataforma Unico IDCloud possuem um versionamento semântico, sendo assim, há numeração de versão "MAJOR.MINOR.PATCH", descrita da seguinte forma:
Versão Maior(MAJOR): Quando fizer mudanças incompatíveis na API;
Versão Menor(MINOR): Quando adicionar funcionalidades mantendo compatibilidade;
Versão de Correção (PATCH): Quando corrigir falhas mantendo compatibilidade.
Nesta seção, você encontrará como obter o documento assinado de um processo no by Unico através da API REST
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento do endpoint de Obtenção do Documento Assinado no by Unico. Este endpoint fornecerá o documento assinado do usuário final em fluxos que possuem a capacidade Assinatura Eletrônica.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Caso o retorno do documento assinado via by Unico apresente atraso no processamento, recomendamos aguardar pelo menos um minuto após a conclusão do processo antes de realizar a consulta. Adicionalmente, é importante configurar uma política de tentativa automática (retry) para os casos em que o documento assinado ainda não esteja disponível, como realizar até 10 tentativas com intervalos de 1 a 5 minutos entre elas.
Nesta seção, você encontrará como implementar o SDK da Unico na sua aplicação web para uso do by Unico
O uso de integrações que não estejam em conformidade com os padrões estabelecidos nesta documentação pode resultar em interrupções inesperadas no funcionamento do sistema, as quais não serão cobertas ou suportadas pelo by Unico.
Ex: Implementar o SDK (iFrame) dentro de uma webview, implementar iFrame através de uma tag de HTML, etc.
Para utilizar o by Unico por meio do SDK do by Unico, o primeiro passo é cadastrar os domínios, sempre utilizando o protocolo HTTPS, que serão utilizados como host para exibir o iFrame da jornada do usuário no by Unico.
Sinalize o responsável pelo seu projeto de integração ou o time de suporte da Unico para realizar essa configuração.
Para começar a usar o SDK, é necessário realizar a instalação do SDK Web da Unico. Vale destacar que o "by Unico" utiliza o mesmo SDK empregado no IDPay.:
Quando instalar o pacote do SDK da Unico, implemente sem especificar a versão que está utilizando e de modo que seu gerenciador de dependências atualize sempre os minors e patches para a versão mais recente.
Esse método inicializa o SDK, fazendo um pré-carregamento de assets, criando a experiência mais fluida para o usuário final. Nesse momento é preciso enviar o token recebido como resultado do CreateProcess.
Parâmetros:
options - é um objeto com as seguintes propriedades de configuração:
type
O tipo de fluxo que será inicializado. No by Unico utilizamos a opção "IFRAME".
token
Recebe o token do processo criado. Esse token é importante para conseguirmos autenticar a jornada e garantir que somente domínios autorizados utilizem-na (pode ser obtido na criação do processo via API).
Esse método realiza a abertura da experiência do by Unico. Para o fluxo do tipo IFRAME, essa função exibe o iframe já pré-carregado, e inicia o fluxo de mensageria entre a página do cliente e a experiência do by Unico.
Parâmetros:
options - é um objeto com propriedades de configuração:
processId
Recebe o ID do processo criado. Esse ID é importante para conseguirmos obter os detalhes do processo e realizarmos todo o fluxo da maneira correta (pode ser obtido na criação do processo via API).
token
Recebe o token do processo criado. Esse token é importante para conseguirmos autenticar a jornada e garantir que somente domínios autorizados utilizem-na (pode ser obtido na criação do processo via API).
onFinish(process)
Recebe uma função de callback que será executada no término da jornada do by Unico, passando como argumento o objeto do processo com os seguintes dados: { captureConcluded, concluded, id }
O diagrama de sequência abaixo demonstra como utilizar o SDK e o resultado da API do by Unico para configurar o iFrame:
Os domínios dinâmicos representam um risco substancial para a segurança ao usar CSP. Quando um cliente possui domínios que mudam com frequência ou são criados dinamicamente, seria necessário atualizar constantemente a política CSP para incluir esses novos domínios. Isso não só aumenta o esforço de manutenção, mas também expõe os domínios aos quais a política CSP se aplica. Cada domínio adicionado à política CSP é potencialmente um ponto de vulnerabilidade se não for adequadamente gerenciado.
Para mitigar esses riscos e atender à flexibilidade exigida pelos nossos clientes, optamos por utilizar iframes combinados com tokens de autenticação. Esta solução oferece uma camada adicional de segurança e evita a necessidade de expor ou gerenciar uma lista extensa e dinâmica de domínios.
Autenticação Segura: Cada iframe é carregado com um token de autenticação exclusivo para cada transação, garantindo que apenas usuários autorizados possam acessar o conteúdo. Esse token é verificado em tempo real, proporcionando uma camada adicional de segurança e controle.
Isolamento de Conteúdo: O uso de iframes permite isolar o conteúdo em um contexto separado, reduzindo o risco de interferência entre diferentes origens e mitigando potenciais ataques.
Flexibilidade para Domínios Dinâmicos: Ao não depender de uma política CSP estática, nossa solução se adapta facilmente aos domínios dinâmicos dos clientes, sem a necessidade de atualização constante das políticas de segurança.
Nesta seção, você encontrará como informações redirecionar um usuário em suas aplicações na experiência do by Unico
Aqui você encontrará as 3 formas de gerenciar a experiência do usuário em suas aplicações:
A integração da WebView na sua aplicação é de total responsabilidade do cliente, uma vez que esta funcionalidade não é oferecida como parte das bibliotecas ou SDKs da Unico. Por conta disso, não oferecemos suporte técnico para dúvidas ou problemas relacionados à implementação da WebView em seu aplicativo. Para obter orientações sobre a configuração, recomendamos consultar a documentação oficial da tecnologia utilizada em seu projeto (por exemplo, React Native, Flutter, etc).
Nesta seção, você encontrará todas as personalizações disponíveis no by Unico
O by Unico oferece algumas opções de personalização em sua interface, permitindo que você a adapte à identidade visual da empresa e proporcione um visual personalizado da jornada.
É possível personalizar o logotipo exibido aos usuários que acessam as jornadas do by Unico. Essa personalização reforça a parceria entre a empresa e a Unico, indicando que a verificação é realizada pela Unico a pedido do cliente ou parceiro.
Recomendações:
Envie o logotipo preferencialmente no formato de logo ícone, devido à sua melhor legibilidade em tamanhos reduzidos.
Regras:
Certifique-se de que o logotipo seja quadrado, respeite o grid proporcional e garanta que seja exportado com no mínimo 192x192 pixels.
Formatos aceitos: SVG
, PNG
e JPEG
.
Regras:
Priorize a aplicação do logotipo em planos de fundo que garantam a legibilidade.
Não utilize logotipos que não respeitem o grid quadrado.
Evite o uso de logotipos em baixa resolução.
Não aplique o logotipo em fundos transparentes.
Recomendações:
Utilize o hexadecimal das cores para verificar a escala de contraste. Exemplo: Foreground ColorPicker: #000000
, Background Color:
#FFFFFF
, Contrast Ratio: 21.00:1
.
Para solicitar a inclusão do logotipo, envie ao time da Unico uma URL onde o logotipo esteja hospedado em um diretório online (ou seja, o logotipo precisa ser acessível via URL no navegador).
Não é possível cadastrar uma URL que seja um base64 (geralmente essas URLs iniciam em "data:image/jpeg;base64,/9j/4AAQ...").
Personalize os botões de ação do by Unico. Defina a cor do texto, fundo e arredondamento dos cantos do botão para reforçar a identidade visual da sua empresa.
Recomendações:
Escolha cores acessíveis: Ao personalizar as cores dos botões no by Unico, opte por um esquema de cores acessível, que garanta a visualização para todos os usuários, incluindo aqueles com deficiência visual.
Taxas de contraste: Busque uma taxa de contraste superior a 4.51:1
para obter os melhores resultados.
Exemplo: #FFFFFF
(texto) em #000000
(fundo) resulta em uma taxa de contraste de 21.00:1
.
Além das cores do texto e de fundo, você também pode definir o arredondamento dos cantos (border radius) em pixels, conforme a escala abaixo:
Para realizar as configurações da identidade visual do cliente ou parceiro para o botão, compartilhe com o time de implantação da Unico as seguintes informações:
Código hexadecimal da cor de background no botão.
Ex: #000000.
Código hexadecimal da cor de texto no botão.
Ex: #ffffff.
Arredondamento dos cantos no botão em pixels.
Ex: 10px.
O módulo de contextualização do by Unico permite que o cliente ou parceiro forneça informações sobre a verificação, como empresa solicitante, motivo e valor da operação, tornando o processo mais seguro
O trecho da requisição a ser alterado é o seguinte:
Nesta seção, você encontrará todas as informações necessárias para o uso e integração do SDK da plataforma Unico IDCloud em seus aplicativos Android para a captura do documento
Neste modo de câmera, existe um frame de captura para auxiliar o usuário a posicionar o documento corretamente. Após posicionar o documento corretamente, o usuário deve clicar no botão para realizar a captura da foto do documento.
A SDK não realiza nenhum tipo de validação do que está sendo capturado.
Neste modo de câmera é possivel capturar os documentos:
CPF: Captura da frente do CPF;
CNH: Captura da CNH aberta;
CNH frente: Captura da frente da CNH;
CNH verso: Captura do verso da CNH;
RG frente: Captura da frente do RG;
RG verso: Captura do verso do RG;
Outros: Captura de qualquer outro documento.
Crie uma instância do builder (Gerado através da interface IAcessoBioBuilder
), fornecendo como parâmetro o contexto em questão e a implementação da classe AcessoBioListener
.
A implementação dessa classe é bem simples e pode ser feita com poucas linhas de código. Tudo que precisa fazer é instanciar o builder informando o contexto em questão e sobrescrever os métodos de callback com as lógicas de negócio de sua aplicação:
Note que, o trabalho de implementação da classe AcessoBioListener é, em grande parte, a configuração dos métodos de callback. Cada método é chamado em uma situação específica de retorno do SDK.
Basta sobrescrever os métodos exemplificados no passo anterior com as lógicas de negócio de sua aplicação:
onErrorAcessoBio(ErrorBio errorBio)
onUserClosedCameraManually()
Este método é invocado sempre quando o usuário fechar a câmera de forma manual, como por exemplo, ao clicar no botão "Voltar".
onSystemClosedCameraTimeoutSession()
Este método é invocado assim que o tempo máximo de sessão for atingido (Sem capturar nenhuma imagem).
Pode ser configurado no builder através do método setTimeoutSession. Este método deve receber o tempo máximo da sessão em segundos. É possível alterar o tempo máximo de sessão do seu usuário ao utilizar a funcionalidade de detecção do rosto (Câmera de selfie com captura inteligente). Caso ele ultrapasse o tempo determinado em seu processo para capturar a foto, você pode apresentar alguma mensagem personalizável ou instrução ao usuário. O valor padrão é de 40 segundos e seu valor mínimo também é de 40 segundos.
onSystemChangedTypeCameraTimeoutFaceInference()
Este método é invocado assim que o tempo máximo para detecção do rosto de um usuário for atingido (Sem ter nada detectado). Neste caso, o modo de câmera é alterado automaticamente para o modo de captura manual (Sem a silhueta de captura inteligente).
O tempo máximo de captura ao utilizar a detecção do rosto (Câmera de selfie com captura inteligente) é de 13 segundos. Se o usuário encontra alguma dificuldade para captura da foto através da detecção do rosto e ultrapasse o tempo determinado em seu processo, a captura é alterada automaticamente para a manual, tendo como objetivo facilitar a ação para o usuário (TimeoutToFaceInference).
Todos os métodos acima devem ser criados da forma indicada em seu projeto (Mesmo que sem nenhuma lógica). Caso contrário, o projeto não compila com sucesso.
O método de abertura da câmera, que é chamado na próxima etapa, precisa saber o que fazer ao conseguir capturar uma imagem com sucesso ou ao ocorrer algum erro no processo. É necessário informar "o que fazer" ao método de abertura da câmera através da implantação de listeners que são chamados em situações de sucesso ou erro.
Através da configuração dos listeners, você pode especificar o que acontece em seu App em situações de erro (Método onErrorDocument
) ou sucesso (Método onSuccessDocument
) na captura de imagens.
O exemplo abaixo ilustra a configuração dos listeners, build e abertura da câmera:
É necessário criar uma instância do builder através do método build()
. Este método é disponibilizado através do objeto gerado com a interface IAcessoBioBuilder
e classe AcessoBio
:
O próximo passo é preparar a câmera utilizando o método prepareDocumentCamera()
com o objeto retornado pelo builder (Nomeado como UnicoCheckCamera
no exemplo acima).
O método prepareDocumentCamera()
gera um objeto do tipo UnicoCheckCameraOpener.Document
, que é utilizado para abrir a câmera com seu método open()
, recebendo os parâmetros tipo de documento a ser capturado, sendo eles:
Caso precise capturar um documento que não possuímos um frame específico (ex: RNE, entre outros), utilize o frame DocumentCameraType.None
, que irá te possibilitar um frame genérico, retangular, que pode ser utilizado para orientar qualquer captura.
onSucessDocument
Ao efetuar uma captura de imagem com sucesso, este método é invocado e retorna um objeto do tipo ResultCamera
que é utilizado posteriormente na chamada das APIs REST:
O objeto ResultCamera
retorna 2 atributos: base64
e encrypted
:
O atributo base64
pode ser utilizado se quiser exibir uma prévia da imagem em seu app;
onErrorDocument
Ao ocorrer algum erro na captura de imagem, este método é invocado e retorna um objeto do tipo ErrorBio
:
Nesta seção, você encontrará como deve ser o padrão de captura da selfie do usuário, caso não utilize nossas SDKs
Para obter melhores resultados na captura de imagens um padrão de captura foi definido. A imagem deve ser nítida com iluminação frontal suficiente. O rosto deve estar reto, voltado para a camera, sem objetos ou obstruções e com expressão neutra.
Normalmente, as imagens capturadas apresentam os seguintes problemas:
Iluminação atrás do cliente - É necessário que a iluminação frontal seja boa o suficiente para uma captura nítida do rosto;
Iluminação estourada - A iluminação frontal precisa ser boa o suficiente para uma captura nítida do rosto;
Rosto muito próximo da captura + iluminação - O rosto precisa estar enquadrado no centro da câmera e a iluminação frontal precisa ser boa o suficiente;
Imagens embaçadas - O rosto da pessoa precisa estar bem focado no momento da captura;
Imagens tremidas - Estabilizar a câmera na hora da captura;
Cliente de óculos - O cliente precisa estar sem óculos ou objetos que possam impedir a visualização completa da face.
Para obtenção e envio de imagens, o padrão ICAO é utilizado. O padrão ICAO (International Civil Aviation Organization) consiste em características para que uma fotografia esteja em conformidade com os seguinte requisitos e recomendações definidos para configurações de captura e envio das imagens:
Posicionamento da face e informações adicionais:
A foto deve ser tirada de frente - olhar diretamente para a câmera e manter a cabeça ereta. O rosto deve estar centralizado. Os ombros devem estar alinhados, paralelos ao plano de imagem da câmera;
Os olhos devem estar abertos naturalmente - pupilas e íris visíveis;
Óculos - a foto deve ser capturada sem óculos;
Sem chapéu, boné, ou máscara - a região da face deve ser claramente visível;
Fisionomia Neutra - o rosto deve ter uma expressão neutra, a pessoa não deve sorrir, não levantar as sobrancelhas, não apertar os olhos ou franzir a testa;
Penteado - O cabelo também não deve cobrir a zona de visibilidade dos olhos.
Iluminação e fundo: Fundo claro, liso e sem textura. Não deve conter manchas, linhas ou curvas que fiquem visíveis na imagem capturada. Cores claras como azul claro ou branco podem ser usadas desde que haja distinção suficiente entre a área do rosto/cabelo e o fundo. As configurações de cor da câmera não devem ser alteradas dependendo da cor de fundo. Atrás da imagem do rosto, não deve haver sombra. Também não deve haver objetos visíveis ao fundo, como pessoas, móveis, papéis de parede estampados, plantas. A iluminação precisa ser adequada e uniforme, distribuída igualmente na face para que não haja diferença entre o lado esquerdo e lado direito. A foto precisa ter brilho e bom contraste entre cabelo, rosto e fundo. Fotos com iluminação ruim são fotos quando a iluminação está somente na lateral, iluminação superior, ou iluminação inferior.
Imagens no formato JPEG, PNG ou JWT;
Imagens capturadas em cores.
Tamaho recomendado: Proporção 1920x1080 ou 1080x1920;
Orientação: Retrato;
Tamanho: No máximo 800kb, se necessário pode comprimir em Jpeg92.
Tamanho recomendado: Proporção HD - 1280x720 ou 720x1280;
Tamanho mínimo: Proporção VGA - 640x480 ou 480x640;
Orientação: Caso use tipificação/ocr é recomendado que seja capturado na orientação de leitura;
Tamanho: No máximo 800kb, se necessário pode comprimir em Jpeg92;
Enquadramento: É recomendado que na imagem não haja espaços sobrando (sem bordas). Quanto maior a área de folga (borda), é pior para a tipificação de documentos.
Cor.
Enquadramento.
Foco nítido e claro, sem marcas de tinta ou vincos.
Olhar diretamente para a câmera.
Mostrar o tom de pele natural.
Ter brilho e contraste apropriados.
Fisionomia neutra e olhos abertos claramente visíveis
Sem cabelo sobre os olhos.
De frente para a câmera, sem olhar por cima do ombro ou inclinado, e mostrando as duas bordas do rosto claramente.
Com um fundo simples de cor clara, de preferência branco.
Com iluminação uniforme, sem sombras ou reflexos de flash no rosto e sem olhos vermelhos.
Sem lentes de contato coloridas.
Sem maquiagem.
O uso de óculos não é recomendado, mas nos casos de necessidade do uso de óculos:
Os olhos devem estar nítidos, sem o reflexo do flash ou da luz ambiente nos óculos e sem lentes coloridas.
A armação não deve cobrir nenhuma parte dos olhos.
Adicionar orientações antes da captura para o usuário:
Utilize "frames" de captura para orientar o posicionamento do cliente frente ao rosto:
Nesta seção, você encontrará todas as informações necessárias para o uso e integração do SDK da plataforma Unico IDCloud em seus aplicativos Android para a captura da selfie
Crie uma instância do builder (Gerado através da interface IAcessoBioBuilder
), fornecendo como parâmetro o contexto e ambiente em questão e a implementação da classe AcessoBioListener
.
A implementação dessa classe é bem simples e pode ser feita com poucas linhas de código. Tudo que precisa fazer é instanciar o builder informando o contexto em questão e sobrescrever os métodos de callback com as lógicas de negócio de sua aplicação:
Configure o ambiente que será utilizado na execução da SDK. Utilize o enumerado Environment
que contém os seguintes enumerados:
Environment.PROD
: para ambiente de Produção;
Environment.UAT
: para ambiente de Homologação.
Veja como implementar no exemplo abaixo:
Note que, o trabalho de implementação da classe AcessoBioListener
é, em grande parte, a configuração dos métodos de callback. Cada método é chamado em uma situação específica de retorno do SDK.
Basta sobrescrever os métodos exemplificados no passo anterior com as lógicas de negócio de sua aplicação.
Este método é invocado sempre que qualquer erro de implementação ocorrer ao utilizar algum de nossos métodos:
onErrorAcessoBio(ErrorBio errorBio)
onUserClosedCameraManually()
Este método é invocado sempre quando o usuário fechar a câmera de forma manual, como por exemplo, ao clicar no botão "Voltar".
onSystemClosedCameraTimeoutSession()
Este método é invocado assim que o tempo máximo de sessão for atingido (Sem capturar nenhuma imagem).
Pode ser configurado no builder através do método setTimeoutSession. Este método deve receber o tempo máximo da sessão em segundos. É possível alterar o tempo máximo de sessão do seu usuário ao utilizar a funcionalidade de detecção do rosto (Câmera de selfie com captura inteligente). Caso ele ultrapasse o tempo determinado em seu processo para capturar a foto, você pode apresentar alguma mensagem personalizável ou instrução ao usuário. O valor padrão é de 40 segundos e seu valor mínimo também é de 40 segundos.
onSystemChangedTypeCameraTimeoutFaceInference()
Este método é invocado assim que o tempo máximo para detecção do rosto de um usuário for atingido (Sem ter nada detectado). Neste caso, o modo de câmera é alterado automaticamente para o modo de captura manual (Sem a silhueta de captura inteligente).
O tempo máximo de captura ao utilizar a detecção do rosto (Câmera de selfie com captura inteligente) é de 13 segundos. Se o usuário encontra alguma dificuldade para captura da foto através da detecção do rosto e ultrapasse o tempo determinado em seu processo, a captura é alterada automaticamente para a manual, tendo como objetivo facilitar a ação para o usuário (TimeoutToFaceInference).
Todos os métodos acima devem ser criados da forma indicada em seu projeto (Mesmo que sem nenhuma lógica). Caso contrário, o projeto não compila com sucesso.
O SDK tem configurado e habilitado por padrão o enquadramento inteligente e a captura automática. Em função disso, deve-se configurar o modo de câmera no seu builder da seguinte forma:
Os valores false/true dos métodos acima não alteram a experiência de captura, servem apenas para a lógica interna do funcionamento do SDK.
O método de abertura da câmera, que é chamado na próxima etapa, precisa saber o que fazer ao conseguir capturar uma imagem com sucesso ou ao ocorrer algum erro no processo. É necessário informar "o que fazer" ao método de abertura da câmera através da implantação de listeners que são chamados em situações de sucesso ou erro.
Através da configuração dos listeners, você pode especificar o que acontece em seu App em situações de erro (Método onErrorSelfie
) ou sucesso (Método onSuccessSelfie
) na captura de imagens.
Mudanças da nomenclatura para as versões inferiores a 4.2.1:
Do método prepareCamera
que antes era prepareSelfieCamera
;
Da classe CameraListener
que antes era SelfieCameraListener
;
Do objeto UnicoCheckCameraOpener.Camera
que antes era UnicoCheckCameraOpener.Selfie
.
Para a configuração dos listeners, é necessário implementar:
Quando a câmera estiver preparada, é disparado o evento onCameraReady
, que recebe como parâmetro um objeto do tipo UnicoCheckCameraOpener.Camera
.
É necessário sobrescrever este método, efetuando a abertura da câmera com o objeto recebido através do método open()
. O método open()
deve receber como parâmetro os listeners configurados nos passos acima.
onSucessSelfie
Ao efetuar uma captura de imagem com sucesso, este método é invocado e retorna um objeto do tipo ResultCamera
que é utilizado posteriormente na chamada das APIs REST:
O objeto ResultCamera
retorna 2 atributos: base64
e encrypted
:
O atributo base64
pode ser utilizado se quiser exibir uma prévia da imagem em seu app;
O atributo encrypted
é destinado estritamente ao envio da imagem através das APIs do by Client. Não se deve abrir e serializar esse atributo, pois suas características podem ser alteradas sem aviso prévio. Seu uso deve ser exclusivo nas interações com as APIs para garantir a integridade e segurança dos dados. A Unico não se responsabiliza por quaisquer danos decorrentes dessa prática, uma vez que as modificações podem ocorrer de maneira imprevista.
Os arquivos base64/encrypted
podem sofrer variações de tamanho de acordo com diversas variáveis, dentre elas, a qualidade dos aparelhos e das fotos geradas pelos mesmos e regras de negócio da Unico. Para não encontrar problemas em sua aplicação, não limite em sua lógica de programação ou sua infraestrutura o tamanho da string gerada pela SDK para os arquivos.
onErrorSelfie
Ao ocorrer algum erro na captura de imagem, este método é invocado e retorna um objeto do tipo ErrorBio
:
Por motivos de segurança, o intervalo entre a geração do encrypted
e o envio via um dos fluxos disponíveis deve ser de até no máximo 10 minutos. Envios feitos além deste período serão rejeitados automaticamente pela API.
Nesta seção, você encontrará todas as informações necessárias para o tratamento dos erros do SDK da plataforma Unico IDCloud em seus aplicativos Android
Dúvidas?
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Prova de vida: Os SDK's são utilizados em conjunto com a capacidade de para garantir que o usuário esteja ao vivo no momento de captura da selfie;
A captura das imagens por meio dos SDKs é apenas a primeira parte de sua jornada. Sendo assim, é de extrema importância que entenda os conceitos básicos e o funcionamento das APIs do motor biométrico. Para mais informações, veja sobre a API REST do .
A Unico não se responsabiliza por problemas decorrentes de falta de atualização do SDK na operação do cliente. []
Android: 5.0 (API 21)
Kotlin: 1.6
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Você pode ver mais sobre como gerar um access-token .
UAT: ;
Produção: .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Para verificar versões anteriores, acesse .
Após uma análise cuidadosa das necessidades e desafios que enfrentamos, decidimos adotar uma solução baseada em iframes com tokens de autenticação ao invés de implementar uma política de Content Security Policy (CSP). Essa escolha foi motivada por diversas considerações relacionadas à segurança e à flexibilidade necessárias para atender às demandas dos nossos clientes.
O Content Security Policy (CSP) é uma ferramenta poderosa para proteger aplicações web contra diversos tipos de ataques, como Cross-Site Scripting (XSS) e injeção de código. No entanto, ao configurar uma política CSP, é necessário definir uma lista rígida de domínios confiáveis. Essa abordagem é eficaz quando os domínios são fixos e previsíveis. No entanto, para nossos clientes, que frequentemente utilizam domínios dinâmicos e variáveis, essa configuração rígida apresenta desafios significativos.
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
O campo userRedirectUrl é usado para direcionar o usuário. Esse campo é recebido na resposta de sucesso da criação do processo ao realizar a requisição .
Recomenda-se seguir os seguintes passos:
Em seu fluxo comum (que está inserido o Cadastro by Unico) você irá redirecionar o cliente para o link gerado através da API;
Após isso o cliente de dentro da plataforma realiza os procedimentos necessários para continuar o fluxo;
Quando concluído, ele é redirecionado para a sua página (utilizando o redirectUrl passado na criação do processo).
window.open()
:A opção window.open()
consiste em abrir uma nova aba do navegador do usuário para que ele possa completar o processo. Ao final essa aba é fechada e redirecionada para sua aplicação.
Para isso é recomendado:
Seguir a documentação pública sobre isso, que se encontra ;
Monitorar se houve alteração de URL (para a redirectUrl) e então fechar a aba utilizando window.close().
1 - Insira no app/build.gradle
a dependência necessária para o uso de CustomTabs:
Coloque no AndroidManifest.xml as permissões e intents necessários na Activity que deseja receber a callback_uri.
É necessário incluir o atributo android:launchMode="singleTop"
como também a tag <data>
informando os dados da URI.
As seguintes permissões são necessárias para funcionar corretamente:
Câmera;
Geolocalização.
Para pegar as informações de redirect com os dados fornecidos, você pode usar o seguinte código no método onNewIntent
da sua Activity:
1 - O primeiro passo é criar o controlador de autenticação, e, para isso crie uma classe chamada UnicoAuthenticationController
(ou como preferir chamar).
2 - Na sequência, importe o framework AuthenticationServices
no topo da classe.
3 - Declare a classe como NSObject e implemente o protocolo ASWebAuthenticationPresentationContextProviding
.
O resultado deve ser:
1 - Abra o arquivo onde você executa a autenticação e adicione as importações necessárias (como exemplo, o ContentView.swift é usado).
2 - Para controlar o estado do fluxo é preciso criar a propriedade @State
.
3 - Crie uma instância da classe UnicoAuthenticationController
fora do corpo da estrutura ContentView.
4 - Para a validação do processo, crie uma função chamada redirectUser
.
Ambientes:
Lembre-se de alterar a url URL_AUTHENTICATION
para a URL de autenticação recebida em seu processo e também o callbackURLScheme BUNDLE
para o redirect informado na criação do processo (o uso do Bundle Identifier de seu aplicativo é recomendado).
Autenticação única:
É importante setar prefersEphemeralWebBrowserSession
para true para garantir uma autenticação única por processo.
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Priorize cores com contraste legível de no mínimo 4.5:1
, seguindo os parâmetros de acessibilidade da .
Ex: .
Cores acessíveis facilitam a navegação para todos, especialmente para pessoas com baixa visão. Utilize o hexadecimal das cores para verificar o contraste e siga as recomendações da .
Para personalizar as informações na tela de contextualização, altere os valores dos parâmetros contidos no objeto contextualization
no momento de realizar a chamada .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Este guia foi elaborado para ajudá-lo a implementar o SDK Android de forma rápida e fácil. Abaixo veja o passo a passo de todo o processo de integração. Após isso, caso deseje personalizar a experiência, não deixe de ver a seção .
Ao ser invocado, o método recebe um parâmetro do tipo ErrorBio que contem detalhes do erro. Saiba mais sobre o tipo ErrorBio
na seção de .
Tanto o atributo encrypted
quanto o atributo base64
podem ser enviados na chamada das APIs REST do .
Se for necessário converter o base64 para bitmap, a maneira padrão não funciona para o Android. É necessário realizar o split a partir da vírgula(,
) para que funcione. Se quiser saber mais, leia o artigo .
Saiba maisobre os tipos de ErrorBio
na seção de do SDK.
A captura das imagens é apenas a primeira parte da jornada. Após capturar a imagem, é necessário enviar o base64
gerado pelo SDK para as APIs REST do by Client. Saiba mais na seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Nota: Imagens retiradas do guia "ICAO Guide for MRTD Photo Guidelines. ICAO. Icao guide for mrtd photo guidelines.
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Este guia foi elaborado para ajudá-lo a implementar o SDK Android de forma rápida e fácil. Abaixo veja o passo a passo de todo o processo de integração. Após isso, caso deseje personalizar a experiência, não deixe de ver a seção .
Ao ser invocado, o método recebe um parâmetro do tipo ErrorBio que contem detalhes do erro. Saiba mais sobre o tipo ErrorBio
na seção de .
Para seguir com a abertura da câmera, primeiro é necessário prepará-la utilizando o método prepareCamera. Este método recebe como parâmetro a implementação da classe CameraListener
, a classe ou o JSON com as credenciais, gerado .
O atributo encrypted
deve ser enviado na chamada das APIs REST do .
Saiba mais sobre os tipos de ErrorBio
na seção de do SDK.
Se for necessário converter o base64 para bitmap, a maneira padrão não funciona para o Android. É necessário realizar o split a partir da vírgula(,
) para que funcione. Se quiser saber mais, leia o artigo: .
A captura das imagens é apenas a primeira parte da jornada. Após capturar a imagem, é necessário enviar o encrypted
gerado pelo SDK para as APIs REST do by Client. Saiba mais na seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
DocumentCameraType.CPF
Frame para captura da frente do CPF
DocumentCameraType.CNH
Frame para captura da CNH aberta
DocumentCameraType.CNH_FRENTE
Frame para captura da frente da CNH
DocumentCameraType.CNH_VERSO
Frame para captura do verso da CNH
DocumentCameraType.RG_FRENTE
Frame para captura da frente do RG
DocumentCameraType.RG_VERSO
Frame para captura do verso do RG
DocumentCameraType.None
Frame para captura de qualquer outro documento
getCode()
Método utilizado para obter o código de erro ocorrido
getDescription()
Método utilizado para obter a descrição de erro ocorrido
73001
Context invalid
73002
Did not grant permission to open camera
73003
The lest API is 21(LOLLIPOP)
73004
Could not find implementation interface callback iAcessoBioSelfie
73005
Could not find implementation interface callback iAcessoBioDocument
73006
Unable to open camera on emulators
73100
Unable to connect to internet
73200
Please inform the json file name
73202
Unable to parse json file
73300
Unable to get unico authentication object
73301
Unable to parse object
73302
Could not find the unico token
73303
Current host is not registered
73400
Could not initialize camera
73500
Unable to get session token, service response error
73501
Unable to parce object
73502
Could not get session token
73701
Could not find active liveness import
73702
Unable to initialize active liveness in production mode
73703
Unable to get active liveness session
73704
The user pressed the cancel button and did not complete the Session.
73705
The Session was not performed successfully and a FaceScan was not generated. In general, other statuses will be sent to the
73706
The camera access is prevented because either the user has explicitly denied permission or the user's device is configured to
73707
The Session was cancelled due to the app being terminated, put to sleep, an OS notification, or the app was placed in the
73708
The Session was cancelled because device is in landscape mode. The user experience of devices in these orientations is poor
73709
The Session was cancelled because device is in reverse portrait mode. The user experience of devices in these orientations is
73710
The Session was cancelled because the user was unable to complete a Session in the default allotted time or the timeout set
73712
The Session was cancelled due to memory pressure.
73712
The Session was cancelled because your App is not in production and requires a network connection.
73713
The Session was cancelled because your key needs to be validated again.
73714
The Session was cancelled because the developer-configured encryption key was not valid.
73715
The Session was cancelled because not all guidance images were configured.
73716
The Session was cancelled because SDK was unable to start the camera on this device.
73717
The Session was cancelled because the user was in a locked out state.
73718
The Session was cancelled because of an unknown and unexpected error. SDK leverages a variety of iOS APIs including camera,
73719
The Session cancelled because user pressed the Get Ready screen subtext message. Note: This functionality is not available by
73800
Could not build encrypted key
Nesta seção, você encontrará todas as APIs REST disponíveis para utilização do meio de integração by Client
Nesta seção, você encontrará as particularidades de criar um processo que tenha a Prova de vida + Verificação de Identidade + Alerta de comportamento como capacidades
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento dos endpoints relacionado às capacidades Prova de Vida + Verificação de Identidade + Alerta de comportamento, utilizadas em conjunto.
Trata-se de três capacidades síncronas (Prova de vida + Verificação de Identidade + Alerta de comportamento), ou seja, toda a integração ocorre utilizando um único endpoint.
As capacidades da plataforma Unico IDCloud via by Client são gerenciadas por meio de API Keys - utilizadas como um parâmetro no header das requisições -, que definem o escopo de acesso. Como pré-requisito, é necessário possuir uma API Key configurada com as capacidades Prova de Vida + Verificação de Identidade + Alerta de comportamento, garantindo acesso dedicado e seguro ao recurso.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Pontos Importantes:
Caso a resposta da capacidade Verificação de Identidade seja unicoId = yes
, este retorno já engloba a Prova de vida (ou seja, não receberá o parâmetro liveness
no response);
As capacidades Verificação de Identidade e Alerta de comportamento são totalmente independentes. Para implementar suas regras de negócio, não deixe de analisar o que significa cada retorno;
Para utilizar a capacidade Prova de vida, é indispensável o uso dos nossos SDKs:
É possível utilizar a capacidade de Verificação de Identidade sem a Prova de vida. Para este caso de uso o retorno de liveness sempre será liveness = 1
. Neste cenário não há nenhuma validação da prova de vida, nem mesmo passiva.
Caso ocorra algum erro no processamento, o processo retornará um status = 5
, como no exemplo abaixo:
Dicas:
Para este caso de uso, não há a necessidade de Consultar o Resultado do Processo, visto que a resposta é síncrona;
Para implementar suas regras de negócio, sempre valide os status finais dos processos (3
,5
). Para validar a resposta das capacidades IDCloud, só considere o status
= 3
para sua tomada de decisão;
Para mais informações sobre os cenários que pode receber no response, consulte a seção Cenários de response;
Nesta seção, você encontrará as particularidades de criar um processo que tenha a Prova de vida + Verificação de Identidade + Alerta de comportamento + Score de risco como capacidades
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento dos endpoints relacionado às capacidades Prova de Vida + Verificação de Identidade + Alerta de comportamento + Score de risco, utilizadas em conjunto.
Trata-se de três capacidades síncronas (Prova de vida + Verificação de Identidade + Alerta de comportamento) integradas com uma capacidade assíncrona (Score de risco). Ou seja, para obter todas as respostas será necessário Consultar o Resultado do Processo.
Para essa integração, será necessário consumir dois endpoints descritos nesta documentação, que também podem ser combinados com o uso de Webhooks.
As capacidades da plataforma Unico IDCloud via by Client são gerenciadas por meio de API Keys - utilizadas como um parâmetro no header das requisições -, que definem o escopo de acesso. Como pré-requisito, é necessário possuir uma API Key configurada com as capacidades Prova de Vida + Verificação de Identidade + Alerta de comportamento + Score de risco, garantindo acesso dedicado e seguro ao recurso.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Pontos Importantes:
Caso a resposta da capacidade Verificação de Identidade seja unicoId = yes
, este retorno já engloba a Prova de vida (ou seja, não receberá o parâmetro liveness
no response);
Para utilizar a capacidade Prova de vida, é indispensável o uso dos nossos SDKs:
É possível utilizar a capacidade de Verificação de Identidade sem a Prova de vida. Para este caso de uso o retorno de liveness sempre será liveness = 1
. Neste cenário não há nenhuma validação da prova de vida, nem mesmo passiva.
Caso a resposta da capacidades Verificação de Identidade e Alerta de comportamento sejam unicoId = inconclusive
+ identityFraudsters = inconclusive
, haverá a orquestração com a capacidade Score de risco. Caso alguma dessas respostas seja conclusiva, não haverá a orquestração com o Score de risco.
Caso ocorra algum erro no processamento, o processo retornará um status = 5
, como no exemplo abaixo:
Dicas:
Para implementar suas regras de negócio, sempre valide os status finais dos processos (3
,5
). Para validar a resposta das capacidades IDCloud, só considere o status
= 3
para sua tomada de decisão.
No endpoint da v2 (/processes/v2/{id}
), também devolvemos algumas informações adicionais do usuário, conforme exemplo abaixo:
Atenção:
Quando a requisição GET
for para um processo com status = 5
(erro), o status code de retorno é 410
(Gone) ao invés de 200
(Success);
Pode haver casos de drop na orquestração com a capacidade Score de risco. Neste cenário, o processo terá a combinação: {status = 3
, unicoId = inconclusive
, liveness = 1
, identityFraudsters = inconclusive
e SEM score no response da API}. Entenda mais na seção Cenários de response;
Caso consulte um processo que esteja no status = 2
, implemente um polling até que obtenha um status = 3
ou implemente o Webhook da Unico para saber quando consultar o resultado.
Dicas:
Para implementar suas regras de negócio, sempre valide os status finais dos processos (3
,4
,5
). Para validar a resposta das capacidades IDCloud, só considere o status
= 3
para sua tomada de decisão;
Para melhorar a performance da sua operação, você pode utilizar nossos Webhooks e só consultar o resultado de processos que estiverem nos status finalizados;
Para mais informações sobre os cenários que pode receber no response, consulte a seção Cenários de response;
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção Erros.
Nesta seção, você encontrará todas as informações necessárias para instalação do SDK da plataforma Unico IDCloud em seus aplicativos iOS
É necessário que seu ambiente de desenvolvimento esteja de acordo com os seguintes pré-requisitos:
Possuir a versão do SDK iOS na versão 11 ou superior;
Possuir o gerenciador de dependências Cocoapods ou Swift Package Manager já configurado.
Para implementar o SDK iOS da plataforma Unico IDCloud ao seu aplicativo iOS, siga o passo a passo listado abaixo:
O Swift Package Manager é um gerenciador de dependências para projetos Swift. Ele é integrado ao sistema de compilação Swift para automatizar o processo de download, compilação e vinculação de dependências. Para integrar o SDK iOS em seu projeto usando o SPM, siga as orientações abaixo:
Inclua a dependência em seu arquivo Package.swift
:
Entre em contato com o CSs e/ou time de Onboarding.
Solicite a SDK Key informando os identificadores de suas aplicações. Bundle Identifier para iOS, PackageID para Android e Host para WEB.
Os identificadores de suas aplicações serão vinculados a SDK Key pela equipe da Unico.
Você recebe a sua SDK Key para implementar o AcessoBioConfigDataSource.
Nesta seção, você encontrará todas as informações necessárias para o uso e integração do SDK da plataforma Unico IDCloud em seus aplicativos iOS para a captura da selfie
Para iniciar com SDK iOS do Unico Check, importe o SDK e implemente a interface AcessoBioManagerDelegate
dentro da ViewController que deseja utilizar.
A implementação dessa classe é bem simples e pode ser feita com poucas linhas de código. Tudo que precisa fazer é instanciar o builder informando o contexto e ambiente em questão e sobrescrever os métodos de callback com as lógicas de negócio de sua aplicação:
Configure o ambiente que será utilizado na execução da SDK. Utilize o enumerado Environment
que contém os seguintes enumerados:
PROD
: para ambiente de Produção;
UAT
: para ambiente de Homologação.
Veja como implementar no exemplo abaixo:
Note que, conforme o exemplo anterior, o trabalho de implementação da interface AcessoBioManagerDelegate
é, em grande parte, a configuração dos métodos de callback. Cada método é chamado em uma situação específica de retorno do SDK.
Basta sobrescrever os métodos exemplificados no passo anterior com as lógicas de negócio de sua aplicação:
onErrorAcessoBioManager(_ error: ErrorBio!)
Este método é invocado quando qualquer erro de implementação ocorrer ao utilizar algum dos métodos, como por exemplo, ao informar um tipo de documento incorreto para a funcionalidade de captura de documentos.
onUserClosedCameraManually()
Este método é invocado sempre quando o usuário fechar a câmera de forma manual, como por exemplo, ao clicar no botão "Voltar".
onSystemClosedCameraTimeoutSession()
Este método é invocado assim que o tempo máximo de sessão for atingido (Sem capturar nenhuma imagem).
Pode ser configurado no builder através do método setTimeoutSession. Este método deve receber o tempo máximo da sessão em segundos. É possível alterar o tempo máximo de sessão do seu usuário ao utilizar a funcionalidade de detecção do rosto (Câmera de selfie com captura inteligente). Caso ele ultrapasse o tempo determinado em seu processo para capturar a foto, você pode apresentar alguma mensagem personalizável ou instrução ao usuário. O valor padrão é de 40 segundos e seu valor mínimo também é de 40 segundos.
onSystemChangedTypeCameraTimeoutFaceInference()
Este método é invocado assim que o tempo máximo para detecção do rosto de um usuário for atingido (Sem ter nada detectado). Neste caso, o modo de câmera é alterado automaticamente para o modo de captura manual (Sem a silhueta de captura inteligente).
O tempo máximo de captura ao utilizar a detecção do rosto (Câmera de selfie com captura inteligente) é de 13 segundos. Se o usuário encontra alguma dificuldade para captura da foto através da detecção do rosto e ultrapasse o tempo determinado em seu processo, a captura é alterada automaticamente para a manual, tendo como objetivo facilitar a ação para o usuário (TimeoutToFaceInference).
Todos os métodos acima devem ser criados da forma indicada em seu projeto (Mesmo que sem nenhuma lógica). Caso contrário, o projeto não compila com sucesso.
O SDK tem configurado e habilitado por padrão o enquadramento inteligente e a captura automática. Em função disso, deve-se configurar o modo de câmera no seu builder da seguinte forma:
Os valores false/true dos métodos acima não alteram a experiência de captura, servem apenas para a lógica interna do funcionamento do SDK.
O método de abertura da câmera precisa saber o que fazer ao conseguir capturar uma imagem com sucesso ou ao ter algum erro no processo. É informado "o que fazer" ao método de abertura da câmera através da configuração de delegates que são chamados em situações de sucesso ou erro.
Através da configuração dos delegates, você pode especificar o que acontece em seu App em situações de erro (método onErrorSelfie
) ou sucesso (método onSuccessSelfie
) na captura de imagens.
Para a configuração dos delegates, você deve implementar as interfaces SelfieCameraDelegate
e AcessoBioSelfieDelegate
:
onSuccessSelfie
Ao efetuar uma captura de imagem com sucesso, este método é invocado e retorna um objeto do tipo SelfieResult
que é utilizado posteriormente na chamada das APIs REST.
O objeto ResultCamera
retorna 2 atributos: base64
e encrypted
:
O atributo base64
pode ser utilizado se quiser exibir uma prévia da imagem em seu app;
O atributo encrypted
é destinado estritamente ao envio da imagem através das APIs do by Client. Não se deve abrir e serializar esse atributo, pois suas características podem ser alteradas sem aviso prévio. Seu uso deve ser exclusivo nas interações com as APIs para garantir a integridade e segurança dos dados. A Unico não se responsabiliza por quaisquer danos decorrentes dessa prática, uma vez que as modificações podem ocorrer de maneira imprevista.
Os arquivos base64/encrypted
podem sofrer variações de tamanho de acordo com diversas variáveis, dentre elas, a qualidade dos aparelhos e das fotos geradas pelos mesmos e regras de negócio da Unico. Para não encontrar problemas em sua aplicação, não limite em sua lógica de programação ou sua infraestrutura o tamanho da string gerada pela SDK para os arquivos.
onErrorSelfie
Ao ocorrer algum erro na captura de imagem, este método é invocado e retorna um objeto do tipo ErrorBio
:
É possível configurar o ambiente que será utilizado na execução da SDK. Utilize o enumerado EnvironmentEnum
que contém os seguintes enumerados:
EnvironmentEnum.PROD
: para ambiente de Produção
EnvironmentEnum.UAT
: para ambiente de Homologação
Veja como implementar no exemplo abaixo:
Para seguir com a abertura da câmera, primeiro deve-se prepará-la utilizando o método prepareSelfieCamera
. Este método recebe como parâmetro a implementação da classe SelfieCameraDelegate
e o JSON com as credenciais, gerado na etapa acima.
Quando a câmera estiver preparada, o evento onCameraReady
é disparado e recebe como parâmetro um objeto do tipo AcessoBioCameraOpenerDelegate
.
Você deve sobrescrever este método, efetuando a abertura da câmera com o objeto recebido através do método open()
:
Caso ocorra algum erro ao preparar a câmera, o evento onCameraFailed
é disparado. Você devem implementar este método aplicando as regras de negócio de seu App.
Por motivos de segurança, o intervalo entre a geração do encrypted
e o envio via um dos fluxos disponíveis deve ser de até no máximo 10 minutos. Envios feitos além deste período serão rejeitados automaticamente pela API.
Nesta seção, você encontrará a visão geral sobre os erros que pode receber nos endpoints da plataforma Unico IDCloud
A plataforma IDCloud utiliza códigos de resposta HTTP convencionais para indicar o sucesso ou falha de uma solicitação de API.
Como regra geral:
Códigos no intervalo 2xx
indicam sucesso na requisição;
Códigos no intervalo 4xx
indicam parâmetros incorretos ou incompletos (por exemplo, um parâmetro obrigatório foi omitido ou uma operação falhou com terceiros, etc.);
Códigos no intervalo 5xx
indicam que houve um erro nos servidores da plataforma Unico IDCloud.
A plataforma Unico IDCloud também gera uma mensagem de erro e um código de erro formatado em JSON:
Neste tópico, você encontrará os possíveis erros dos endpoints, separados por seu HTTP response.
Nesta seção, você encontrará os responses possíveis das combinações de capacidades separados por seus métodos, para facilitar seu entendimento sobre a integração by Client
Em todas as combinações descritas a seguir, caso ocorra algum erro no processamento, o processo retornará um status = 5
. Por esse motivo, os cenários abaixo não exibem responses referentes a essa condição. Exemplo:
Para os cenários onde o response no CreateProcess
é o mesmo que o response do GetProcess
, otimize sua aplicação e tome sua decisão de forma síncrona.
Para os cenários onde o response no CreateProcess
é o mesmo que o response do GetProcess
, otimize sua aplicação e tome sua decisão de forma síncrona.
Para os cenários onde o response no CreateProcess
é o mesmo que o response do GetProcess
, otimize sua aplicação e tome sua decisão de forma síncrona.
Para os cenários onde o response no CreateProcess
é o mesmo que o response do GetProcess
, otimize sua aplicação e tome sua decisão de forma síncrona.
Para os cenários onde o response no CreateProcess
é o mesmo que o response do GetProcess
, otimize sua aplicação e tome sua decisão de forma síncrona.
Nesta seção, você encontrará todas as informações necessárias para o uso e integração do SDK da plataforma Unico IDCloud em seus aplicativos iOS para a captura do documento
Neste modo de câmera, existe um frame de captura para auxiliar o usuário a posicionar o documento corretamente. Após posicionar o documento corretamente, o usuário deve clicar no botão para realizar a captura da foto do documento.
A SDK não realiza nenhum tipo de validação do que está sendo capturado.
Neste modo de câmera é possivel capturar os documentos:
RG: Captura do RG (separado em frente e verso);
CNH: Captura da CNH aberta;
CNH frente: Captura da frente da CNH;
CNH verso: Captura do verso da CNH;
CPF: Captura do documento de CPF;
Sem silhueta: Captura documento genérico.
Para iniciar com SDK iOS da plataforma Unico IDCloud, importe o SDK e implemente a interface AcessoBioManagerDelegate
dentro da ViewController que deseja utilizar.
A implementação dessa classe é bem simples e pode ser feita com poucas linhas de código. Tudo que precisa fazer é intanciar o builder informando o contexto em questão e sobrescrever os métodos de callback com as lógicas de negócio de sua aplicação:
Note que, conforme o exemplo anterior, o trabalho de implementação da interface AcessoBioManagerDelegate
é, em grande parte, a configuração dos métodos de callback. Cada método é chamado em uma situação específica de retorno do SDK.
Basta sobrescrever os métodos exemplificados no passo anterior com as lógicas de negócio de sua aplicação:
onErrorAcessoBioManager(_ error: ErrorBio!)
Este método é invocado quando qualquer erro de implementação ocorrer ao utilizar algum dos métodos, como por exemplo, ao informar um tipo de documento incorreto para a funcionalidade de captura de documentos.
onUserClosedCameraManually()
Este método é invocado sempre quando o usuário fechar a câmera de forma manual, como por exemplo, ao clicar no botão "Voltar".
onSystemClosedCameraTimeoutSession()
Este método é invocado assim que o tempo máximo de sessão for atingido (Sem capturar nenhuma imagem).
Pode ser configurado no builder através do método setTimeoutSession. Este método deve receber o tempo máximo da sessão em segundos. É possível alterar o tempo máximo de sessão do seu usuário ao utilizar a funcionalidade de detecção do rosto (Câmera de selfie com captura inteligente). Caso ele ultrapasse o tempo determinado em seu processo para capturar a foto, você pode apresentar alguma mensagem personalizável ou instrução ao usuário. O valor padrão é de 40 segundos e seu valor mínimo também é de 40 segundos.
onSystemChangedTypeCameraTimeoutFaceInference()
Este método é invocado assim que o tempo máximo para detecção do rosto de um usuário for atingido (Sem ter nada detectado). Neste caso, o modo de câmera é alterado automaticamente para o modo de captura manual (Sem a silhueta de captura inteligente).
O tempo máximo de captura ao utilizar a detecção do rosto (Câmera de selfie com captura inteligente) é de 13 segundos. Se o usuário encontra alguma dificuldade para captura da foto através da detecção do rosto e ultrapasse o tempo determinado em seu processo, a captura é alterada automaticamente para a manual, tendo como objetivo facilitar a ação para o usuário (TimeoutToFaceInference).
Todos os métodos acima devem ser criados da forma indicada em seu projeto (Mesmo que sem nenhuma lógica). Caso contrário, o projeto não compila com sucesso.
O método de abertura da câmera (que é chamado no próximo passo) precisa saber o que fazer ao conseguir capturar uma imagem com sucesso ou ao ter algum erro no processo. É informado "o que fazer" ao método de abertura da câmera através da configuração de delegates que são chamados em situações de sucesso ou erro.
Através da configuração dos delegates, você pode especificar o que acontece em seu App em situações de erro (método onErrorDocument
) ou sucesso (método onSuccessDocument
) na captura de imagens.
Para a configuração dos delegates, você deve implementar as interfaces DocumentCameraDelegate
e AcessoBioDocumentDelegate
:
onSucessDocument
Ao efetuar uma captura de imagem com sucesso, este método é invocado e retorna um objeto do tipo ResultCamera
que é utilizado posteriormente na chamada das APIs REST.
O objeto ResultCamera
retorna 2 atributos: base64
e encrypted
:
O atributo base64
pode ser utilizado se quiser exibir uma prévia da imagem em seu app;
onErrorDocument
Ao ocorrer algum erro na captura de imagem, este método é invocado e retorna um objeto do tipo ErrorBio
.
Para abrir da câmera, é necessário prepará-la utilizando o método prepareDocumentCamera
. Este método recebe como parâmetro a implementação da classe DocumentCameraDelegate
e o JSON com as credenciais, gerado na etapa acima.
Quando a câmera estiver preparada, o evento onCameraReadyDocument
é disparado, que recebe como parâmetro um objeto do tipo AcessoBioCameraOpenerDelegate
.
Você deve sobrescrever este método, efetuando a abertura da câmera com o objeto recebido através do método openDocument()
, recebendo os parâmetros tipo de documento a ser capturado, sendo eles:
Caso precise capturar um documento que não possuímos um frame específico (ex: RNE, entre outros), utilize o frame DocumentEnums.none
, que irá te possibilitar um frame genérico, retangular, que pode ser utilizado para orientar qualquer captura.
Os delegates implementados acima (aqui descritos como Self):
Caso ocorra algum erro ao preparar a câmera, o evento onCameraFailedDocument
é disparado. Você deve implementar este método aplicando as regras de negócio de seu App.
Em caso de sucesso, o evento onSuccessDocument
é disparado, conforme explicado na seção acima.
Você pode ver mais sobre como gerar um access-token .
UAT: ;
Produção: .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Você pode ver mais sobre como gerar um access-token .
UAT: ;
Produção: .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Possuir a versão 15.0.1 ou superior do instalado (IDE oficial de desenvolvimento da Apple);
O componente de captura disponibilizado por meio do SDK iOS é compatível com todos os dispositivos que possuam iOS 11 ou versões mais recentes. Você pode conferir a lista com esses dispositivos nos oficiais da Apple.
O CocoaPods é um gerenciador de dependências para projetos Cocoa, para instruções de uso e instalação visite a documentação do oficial do . Para integrar o SDK iOS em seu projeto Xcode usando CocoaPods, siga as orientações abaixo:
Pronto. Finalizada a instalação do SDK, siga para a implementação lendo o material a seguir:
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Este guia foi elaborado para ajudá-lo a implementar o SDK iOS de forma rápida e fácil. Abaixo veja o passo a passo de todo o processo de integração. Após isso, caso deseje personalizar a experiência, não deixe de ver a seção .
Ao ser invocado, o método receberá um parâmetro do tipo ErrorBio
que contem detalhes do erro. Saiba mais sobre o tipo ErrorBio
no artigo de deste SDK.
O atributo encrypted
deve ser enviado na chamada das APIs REST do .
Caso queira converter o base64 para bitmap, a maneira padrão não funciona para o iOS. É necessário realizar o split a partir da vírgula(,
) para que funcione. Caso queira saber mais, leia o seguinte artigo: .
Saiba mais sobre os tipos de ErrorBio
na seção de do SDK.
O tipo ErrorPrepare
é uma extensão de ErrorBio
contendo assim todas as suas propriedades. Saiba mais sobre o tipo ErrorBio
na seção de do SDK.
A captura das imagens é apenas a primeira parte da jornada. Após capturar a imagem, é necessário enviar o encrypted
gerado pelo SDK para as APIs REST do by Client. Saiba mais na seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Dúvidas?
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Dúvidas?
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Este guia foi elaborado para ajudá-lo a implementar o SDK iOS de forma rápida e fácil. Abaixo veja o passo a passo de todo o processo de integração. Após isso, caso deseje personalizar a experiência, não deixe de ver a seção .
Ao ser invocado, o método recebe um parâmetro do tipo ErrorBio
que contem detalhes do erro. Saiba mais sobre o tipo ErrorBio
no artigo de deste SDK.
Tanto o atributo encrypted
quanto o atributo base64
podem ser enviados na chamada das APIs REST do .
Se for necessário converter o base64 para bitmap, a maneira padrão não funciona para o Android. É necessário realizar o split a partir da vírgula(,
) para que funcione. Se quiser saber mais, leia o artigo .
Saiba mais sobre os tipos de ErrorBio
na seção de do SDK.
O tipo ErrorPrepare
é uma extensão de ErrorBio
contendo assim todas as suas propriedades. Saiba mais sobre o tipo ErrorBio
na seção de do SDK.
A captura das imagens é apenas a primeira parte da jornada. Após capturar a imagem, é necessário enviar o base64
gerado pelo SDK para as APIs REST do by Client. Saiba mais na seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Caso realize o GetProcess
e o processo ainda não esteja concluído, retornaremos os status 1
ou 2
. Só tome sua decisão final quando obtiver um status de conclusão do processo (status = 3
). Você também pode utilizar o para ser notificado quando o processo estiver concluído.
DocumentEnums.CPF
Frame para captura da frente do CPF
DocumentEnums.CNH
Frame para captura da CNH aberta
DocumentEnums.cnhFrente
Frame para captura da frente da CNH
DocumentEnums.cnhVerso
Frame para captura do verso da CNH
DocumentEnums.RG
Frame para captura do RG aberto
DocumentEnums.rgFrente
Frame para captura da frente do RG
DocumentEnums.rgVerso
Frame para captura do verso do RG
DocumentEnums.none
Frame para captura de qualquer outro documento
Nesta seção, você encontrará todas as atualizações do SDK Android
Mantenha seu SDK Android sempre atualizado com a última versão disponível.
Atualização Crítica
Reforço na detecção e proteção contra ataques de injeção no dispositivo e servidor envolvendo inteligência artificial;
Reforços críticos na camada de RASP com aprimoramento na detecção de ameaças críticas, e medidas que eliminam a exploração contínua por fraudadores;
Melhorias na camada do motor de liveness contra ataques recorrentes no mercado;
Melhorias de acessibilidade;
Atualização do SDK e server de Liveness com interação;
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas;
Reforço na proteção RASP: detecção de ameaças agora resulta no encerramento imediato da aplicação, com melhorias nas verificações de injeção de vídeo no dispositivo e no servidor para mitigar riscos de IA generativa;
Ajustes de dependências internas garantindo a compatibilidade com a versão de kotlin 1.6.0
;
Suporte a câmera traseira em fluxos de lojas físicas;
Atualização do SDK e server de Liveness com interação;
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas.
Atualização do SDK e server de Liveness com interação. Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas.
Atualização do SDK e server do Liveness com interação.
Atualização do SDK e server do Liveness com interação.
Nessa versão atualizamos o compileSdkVersion
para a API 34, de acordo com as políticas do Google Play
Atualização do SDK e server do Liveness com interação.
Atualização do SDK e server do Liveness com interação.
Atualização do SDK e server do Liveness com interação;
Melhorias internas no produto, sem impacto externo.
Correção na câmera de documento, onde em alguns cenários ocorria um crash após a captura.
Atualização do SDK e server do Liveness com interação;
Melhorias internas no produto, sem impacto externo;
Atualização do SDK e server do Liveness com interação;
Melhorias internas no produto, sem impacto externo.
Correção na resposta das requisições internas da sdk, onde em alguns casos quando não havia internet, o callback de erro não era devolvido e mantinha o usuário preso na tela.
Melhorias internas no produto, sem impacto externo.
Melhorias internas no produto, sem impacto externo.
Correção de localização setLocale()
na captura com Liveness interativo.
Correção de erros internos que não afetam a experiência do usuário final.
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas.
Melhorias de segurança em nosso Liveness;
A partir de agora, os desenvolvedores serão notificados em tempo real durante o desenvolvimento se a versão utilizada não estiver em conformidade com as políticas de atualização da Unico. Em casos de dúvidas, contacte o seu CSM;
A partir de agora, é possível definir o ambiente da SDK pela própria API pública no método setEnvironment()
. Em casos de dúvidas, contate o seu CSM.
Atualização Crítica
Atualização do SDK e server do Smartlive com interação.
Melhorias nos algoritmos de comunicação entre o clientside e serverside unico.
Correção do erro current host is not registred
em ambiente de homologação.
Melhorias internas no produto, sem impacto externo.
Atualização Crítica
Atualização do SDK e server do Smartlive com interação;
Melhorias nas verificações de injeção de vídeo recentemente adicionadas no lado do dispositivo e no lado do servidor para mitigar ameaças de IA generativa.
Atualização Crítica
Atualização do SDK e server do Smartlive com interação;
Melhorias nas verificações de injeção de vídeo recentemente adicionadas no lado do dispositivo e no lado do servidor para mitigar ameaças de IA generativa.
Melhorias e correções na inicialização da SDK, evitando a perda de 1.5% das sessões.
Atualização do SDK e server do Smartlive com interação.
Novas funcionalidades que melhoram a experiência de captura no Liveness Interativo.
Melhorias nas verificações de injeção de vídeo recentemente adicionadas no lado do dispositivo e no lado do servidor para mitigar ameaças de IA generativa.
Correção no botão de fechar na captura de liveness interativo, em alguns cenários uma tela de loading pode aparecer por tempo indeterminado.
Correção no ciclo de vida da captura, em cenários onde a tela é encerrada antes do callback de sucesso ou erro.
Correção na geolocalização, em cenários onde a aplicação pode parar quando for desabilitada.
Correção na compatibilidade em estilos predefinidos, causando conflitos entre <attr ... />
.
Atualização Crítica
Melhorias nas verificações de injeção de vídeo recentemente adicionadas no lado do dispositivo e no lado do servidor para mitigar ameaças de IA generativa;
Nova funcionalidade de captura para garantir segurança eficaz;
Atualização do SDK e server do Smartlive com interação;
Fix camera traseira no modelo Multilaser M8.
Habilitamos a customização da cor da barra de progresso através do método opcional setColorProgressBar()
;
Habilitamos a customização dos textos da UI do liveness interativo via configuração remota;
Habilitação a customização do logo abaixo do frame de captura do smartlive com interação.
Atualização do SDK e server do Smartlive com interação;
Melhoria interna no produto, sem impacto externo.
Melhorias nos registros de log do SDK;
Melhoria interna no produto, sem impacto externo.
Correção do problema relacionado a orquestração thread's de retorno ao cliente que impactava a captura biométrica quando fluxo de retentativa habilitado.
Essa versão visa proporcionar uma experiência mais estável e eficiente. Requer apenas atualização da SDK.
Disponibilizado código e descrição do erro retornado pelo callback onCameraFailed, facilitando seu monitoramento e mapeamento;
Definição automática de ambientes de produção e homologação no SDK;
Otimização no fluxo de gerar JWT melhorando a performance.
Melhoria no fluxo de autenticação, reduzindo falhas na autenticação de dispositivos com configurações específicas no Sistema Operacional. Essa modificação visa proporcionar uma experiência mais estável e eficiente. Importante destacar que essa melhoria requer apenas a atualização da SDK para que os benefícios sejam integralmente aplicados.
Atualização do SDK e server do Smartlive com interação.
Melhoria internas no produto, sem impacto externo.
Melhorias internas;
Ao receber uma config inválida o erro é retornado pelo callback onCameraFailed
e não mais pelo exception do UnicoCheckException.
Hotfix: Câmera de Documento com Liveness habilitado;
Hotfix: Modo escuro não respeita as cores customizadas em alguns dispositivos Xiaomi.
Disponibilizar o novo fluxo de captura e retentativas quando usado o Liveness com Interação (entrar em contato com a único caso queira habilitar essa nova funcionalidade);
Lançar erro 73800
caso haja falha na captura usando o fluxo de retentativa;
Lançar erro 73100
caso haja falha de conexão com internet durante uma requisição;
Removido o timeout do fluxo de captura usando Livenes com Interação.
Hotfix: Corrigido callbacks internos como opcionais prevenindo possíveis erros relacionados a propriedades não inicializadas;
Hotfix: Reforçado a clareza das mensagens de erro para desenvolvedores, em especial quando há ausência da implementação da AcessoBioListener, tornando mais intuitivo o processo de correção;
Hotfix: Alterado as regras de ofuscação para garantir que a classe UnicoCheckException não seja ofuscada e os erros sejam exibidos corretamente no console e nos logs;
Hotfix: Otimizado a inicialização do objeto bioConfig evitando erros internos.
Hotfix: Corrigido um problema na configuração do SDK através do arquivo JSON.
Hotfix: Corrigido erro de caractere afetando build;
Hotfix: Modo baixa luminosidade não altera a cor dos textos.
Hotfix: Aplicação não respondendo, ARN;
Hotfix: Modo alta luminosidade não altera a cor dos texto;
Hotfix: Erro internal exception.
Atualização do SDK client e server do Smartlive com interação.
Melhoria de segurança na comunicação da SDK.
Hotfix: Timeout na câmera traseira.
Atualização do SDK client e server do Smartlive com interação;
Atualização das mensagens do Smartlive com interação;
Atualização da biblioteca de CameraX
Adicionado timeout na câmera de liveness com interação;
Hotfix: Câmera de documento.
Hotfix: compatibilidade com Android 8.0.
Melhoria de compatibilidade com a ferramenta de ofuscação;
Melhoria de segurança na comunicação da SDK;
Nova URL do repositório para download do SDK;
Alteração do nome do SDK de com.github.acesso-io:acessobio-android para io.unico:capture;
Suporte para o Kotlin a partir da versão 1.5.
Atualização do SDK client e server do Smartlive com interação.
Hotfix: Suporte ao tema dark.
Hotfix: Compatibilidade ofuscação.
Hotfix: Geolocalização em casos de endereço nulo;
Hotfix: Tempo de expiração da câmera de documentos;
Hotfix: Implementação de projeto com sentry.
Hotfix: Abertura de camera traseira;
Atualização da versão do modo de câmera de selfie com prova de vida da FaceTec.
Feat: segurança no changelog;
Feat: Atualização da SDK e server do Smartlive com interação.
Fix: Suporte a uso do modo de câmera com captura automática em tablets;
Fix: Conflito com sentry.
Atualização da SDK e server do Smartlive com interação;
Coleta de dados de uso, geolocalização e dispositivo (Os dados coletados são usados para garantir a segurança do processo e melhorar a experiência do usuário);
Correção do bug para abrir a câmera em dispositivos com Android 6.0.1.
Hotfix: Prefixo da url.
Hotfix: Contorno da silhueta na cor branca.
Uma nova camada de segurança;
Atualização da versão do modo de câmera de selfie com prova de vida da FaceTec.
Hotfix: Melhoria da lentidão na main thread;
Hotfix: Tratamento dos retornos de erro onBackPressed, bitmap e no available camera.
Novo incremento de segurança;
Ajuste na resolução das imagens;
Hotfix: Ajuste no uso de captura de documentos usando uma APIKey com Smartlive ativo habilitado;
Hotfix: Ajustes na configuração de timeout da câmera de documentos.
Hotfix: Ajuste no frame de captura de documentos genéricos;
Hotfix: Correção de nomenclaturas que causavam conflito de themes;
Hotfix: Melhoria na coleta de logs de erro.
Indicador de atividade agora possui mesma cor que a mensagem na customização;
Possibilidade de executar os métodos prepareSelfieCamera e prepareDocumentCamera sem o arquivo json, utilizando uma interface do tipo AcessoBioConfigDataSource.
Hotfix: ajuste no lifecycle do frame de captura com interação.
Melhoria da resolução da imagem gerada pelo modo de câmera de selfie com prova de vida da FaceTec para celulares de qualidade média/alta;
Atualização do google play services ML Kit face detection para a versão 17.0.1.
Atualização da versão do modo de câmera de selfie com prova de vida da FaceTec;
Remoção de pedidos de permissões que não estavam sendo usados.
Ajuste no tema padrão para o modo de baixa luminosidade modo de câmera de selfie com prova de vida da FaceTec.
Customização do botão de fechar camera;
Correções de erros na customização de sucesso.
Ajuste para otimizar performance;
Ajuste no seletor de câmera para dispositivos com múltiplas câmeras.
Ajuste nas configurações que geram o objeto encriptado unico;
Correções em configuração de Temas;
Resolução de conflitos com bugfender.
Downgrade do Kotlin para 1.4.0;
Ajuste ao abrir a câmera pela segunda vez.
Correção no encrypted.
Ajuste de dependencias para tornar as bibliotecas do SDK Android compativeis com minCompileSdk 30.
Adicionada compatibilidade com java 8;
Adicionado frames de captura de CNH frente e CNH verso.
Correção de erro no jitpack.
Update da biblioteca GSON para versão 2.8.9;
Ajuste no módulo de abertura de câmera.
Foi corrigido o bug no módulo de abertura da câmera de documentos.
Foi corrigido o bug que deixa o debug lento ao utilizar o SDK Android.
Foi corrigido o bug referente a: request prepare camera.
A partir de agora, o SDK Android conta com a funcionalidade de Prova de Vida. Para atualizar essa nova versão do SDK, solicite junto ao seu gestor de contas a documentação correspondente a nova implementação e ativação da funcionalidade para sua operação;
O SDK Android está ainda mais seguro.
A partir dessa versão é necessário adicionar no projeto o arquivo: unico-check-mobile-services.json. Procure o customer success ou o gestor de contas para ter acesso ao Portal do Cliente e seguir o passo a passo necessário;
Foi disponibilizado mais um frame de captura em documentos: CPF.
Não é permitido o uso da câmera em emuladores.
Ajuste na captura do log de erro.
Correção de espelhamento de imagem ao utilizar a câmera do tipo "Documento".
Mudança na estrutura de classes.
Mudança na estrutura de classes.
Refatoração de funções públicas, permitindo o retorno assync dentro da própria função;
Refatoração nos métodos disableAutoCapture e disableSmartFrame;
Correção de bug de enquadramento de face;
Correção de bug de travamento de tela após a captura.
Troca do motor de tracking biométrico, foi migrado do FirebaseMLVision para FaceDetectorMLKit;
Foi atualizada a API padrão de abertura de câmera, migramos da API de Camera2 para API de CameraX;
Foram obtidos ganhos significativos na gerência de ciclo de vida, memória, processamento e aumentando a compatibilidade de dispositivos que são suportados;
Foi removida a necessidade da implementação do Firebase para o uso das tecnologias do SDK Android, diminuindo consideravelmente a fricção na integração e evitando conflitos que anteriormente ocorriam;
Foram removidos todos os métodos de processos REST da API pública, garbages code e realizamos outras melhorias.
A SDK está mais segura com novos métodos de criptografia em real-time;
A SDK está mais rápida e precisa na detecção de faces com melhorias dos modelos de IA para o câmera inteligente;
Agora é possível configurar o tempo máximo de sessão do seu usuário;
Agora é possível configurar o tempo máximo de captura ao utilizar a detecção da face (smart câmera). Caso o usuário encontre alguma dificuldade para capturar a foto através da detecção de face e ultrapasse o tempo determinado em seu processo, a captura será alterada automaticamente para a manual, visando facilitar a ação para o usuário.
Depreciamos todos os métodos referentes a requisições REST, que outrora permitiam a criação de processos dentro da v3 do unico-onboarding diretamente da SDK.
Nesta versão trazemos grande otimização no tamanho da SDK, diminuindo em 75% do tamanho anterior;
Foram incluidas melhorias de performance.
A SDK está 42% mais leve com a remoção de várias intra-dependências e remoções de garbage-code;
A SDK está mais segura com novos métodos de criptografia em real-time;
A SDK está mais rápida com os novos modelos de IA para o câmera inteligente;
Foram removidos todos os métodos que permitiam acesso ao Liveness com interação.
Foi removido o método de validação REST no fluxo básico de captura de documentos.
Atualização do Firebase ML-Vision 19.0.3 para 24.1.0;
Atualização do Google Services 4.3.3 para 4.3.5.
Agora é possível customizar todos os elementos visuais utilizando também cores no formato hexadecimal. Lembrando que os formatos padrões dos SO's continuam ativos, como UIColor para iOS e Colors para Android;
Foi adicionado um novo método de retorno para notificar a sua classe implementadora no momento em que o usuário fechar a câmera manualmente;
Foi corrigido o retorno do método de FaceMatch, devolvendo o objeto completo com base64 da selfie, base64 do documento e o status de FaceMatch.
Agora é possível customizar todos os elementos visuais utilizando também cores no formato hexadecimal. Lembrando que os formatos padrões dos SO's continuam ativos, como UIColor para iOS e Colors para Android;
Foi adicionado um novo método de retorno para notificar a sua classe implementadora no momento em que o usuário fechar a câmera manualmente;
Foi corrigido o retorno do método de FaceMatch, devolvendo o objeto completo com base64 da selfie, base64 do documento e o status de FaceMatch;
Outras limpezas.
Foi adicionado um novo método de callback (retorno) para notificar a sua classe implementadora no momento em que o usuário fechar a câmera manualmente;
Foi corrigido o callback do método de FaceMatch, devolvendo o objeto completo com base64 da selfie, base64 do documento e o status de facematch;
Outras limpezas.
Novas validações prévias, facilitando a visibilidade de qualquer tipo de anormalidade quanto ao setup previamente a abertura de câmera em si;
Pequenas melhorias e limpeza em toda solução.
Pequenas correções de bugs e melhorias no fluxo de permissões.
Posibilidade de customizar a imagem do ícone de popup de reset de sessão dentro do fluxo do Liveness com interação;
Foi removida a obrigatoriedade da tag allowBackups em AndroidManifest.
Possibilidade de personalizar todos os elementos visuais utilizando cores em formato hexadecimal. Os formatos padrão permanecem ativos;
Foi adicionado um novo método de callback para notificar sua classe implementadora no momento em que o usuário fecha manualmente a câmera;
Foram corrigidos pequenos bugs no fluxo do Liveness com interação;
Corrigido o retorno do método FaceMatch, retornando o objeto completo com base64 da selfie, base64 do documento e o status do FaceMatch.
Nesta seção, você encontrará você encontrará a collection do Postman com as APIs REST do by Client
Nesta seção, você encontrará a política de atualizações para o uso da SDK
É essencial que todos os clientes mantenham uma rotina de atualização do SDK, uma vez que novas formas de ataque são desenvolvidas a todo momento. A melhor forma de ter seu negócio protegido contra novos formatos de fraudes de Injection e Liveness é usar a versão mais atualizada do SDK da Unico.
É responsabilidade do cliente manter uma rotina saudável de atualização da SDK, garantindo a versão mínima para o bom funcionamento das nossas soluções em suas operações. Assim como é responsabilidade da Unico disponibilizar versões atualizadas, em relação às ameaças que surgem no mercado, e manter nossos clientes informados sobre o tema. Tendo isso em mente, a Unico criou uma Política de atualização do SDK.
Com o SDK desatualizado, nossos clientes estão vulneráveis a ataques de fraudadores. Considerando que a Unico preza pela máxima segurança de seus clientes, além da urgência do tema e necessidade de um processo ágil de atualizações, criou-se a política de atualização do SDK a fim de salvaguardar nossos clientes das mais novas fraudes que aparecem constantemente no mercado. A única forma de estar seguro é estar atualizado.
A Unico categoriza todas as atualizações de SDK entre Crítica e Não-crítica, baseados na criticidade das fraudes que bloqueamos com a nova versão.
Atualizações Críticas: São atualizações que visam proteger nossos clientes contra fraudes e ataques recentes no mercado. Elas precisam ser implementadas em até 5 (cinco) dias corridos, tendo em vista a ameaça real que a operação está suscetível. A partir daí, não daremos mais suporte à versões anteriores. Na prática, o cliente que entrar em contato conosco com uma versão anterior a última deverá obrigatoriamente atualizar o SDK para que possamos atendê-lo.
Atualizações Não-Críticas: São atualizações mais simples, de melhoria da tecnologia. Elas podem ser implementadas em até 60 (sessenta) dias corridos. Vale reforçar que, quanto mais atual a versão, mais chances de evitar bugs e erros. Por isso recomendamos que seja feita a atualização o mais rápido possível. Após este período, não daremos mais suporte técnico e o cliente precisa atualizar seu SDK para que possamos atuar nos casos.
Nós identificamos as atualizações como críticas no Release Notes com uma tag logo abaixo da versão, conforme exemplo abaixo:
Atualização Crítica
Estes períodos valem para todos os clientes da Unico, independentemente da capacidade utilizada.
Para atualizações críticas: enviaremos um e-mail assim que a nova versão estiver disponível, com reforço via time de Customer Success. Informando a urgência do tema e o tempo de 5 (cinco) dias corridos para atualização.
Para atualizações Não-críticas: para evitar sobrecarga dos times dos clientes, enviaremos um e-mail mensal com o resumo das atualizações não-críticas. Informando os principais pontos de mudança e o tempo de 60 (sessenta) dias corridos para atualização.
Nesta seção, você encontrará todas as atualizações do SDK iOS
Mantenha seu SDK iOS sempre atualizado com a última versão disponível.
Atualização do SDK e server de Liveness com interação.
Melhorias de acessibilidade.
Atualização do SDK e server de Liveness com interação.
Atualização do SDK e server de Liveness com interação.
Atualização do SDK e server de Liveness com interação;
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas.
Atualização do SDK e server de Liveness com interação.
Atualização do SDK e server de Liveness com interação.
Atualização do SDK e server de Liveness com interação.
Atualização do SDK e server de Liveness com interação.
Atualização do SDK e server de Liveness com interação;
Remoção de bitcode
que bloqueia envios para AppStore usando Xcode 16 e CocoaPods.
Atualização do SDK e server de Liveness com interação.
Atualização do SDK e server de Liveness com interação;
Correção que causava aumento no tempo de inicialização das aplicações.
A partir de agora, é possível definir o ambiente da SDK pela própria API pública no método setEnvironment()
. Em casos de dúvidas, contacte o seu CSM;
Correção de localização (setLocale) na captura com Liveness interativo.
Identificamos um aumento no tempo de inicialização das aplicações que utilizem essa versão, o que pode ter um impacto mais significativo em dispositivos mais antigos. Estamos empenhados em resolver essa questão com a maior rapidez possível.
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas;
Melhoria no foco da câmera de documentos para dispositivos iPhone Pro Max.
Atualização do SDK e server de Liveness com interação.
Melhoria no foco da câmera de documentos para dispositivos iPhone Pro Max.
Correção de bug que quebrava a SDK ao iniciar em dispositivos usando iOS 12.
Atualização Crítica
Atualização do SDK e server de Liveness com interação.
Atualização do SDK e server de Liveness com interação.
Correção de bug que fazia SDK ficar congelado na tela de loading em alguns casos específicos;
Melhorias nos algoritmos de comunicação entre o clientside e serverside unico.
Correção de crash "[USLErrorSDK ????]: unrecognized selector sent to instance".
Atualização Crítica
Atualização do SDK e server de Liveness com interação;
Melhorias nas verificações de injeção de vídeo recentemente adicionadas no lado do dispositivo e no lado do servidor para mitigar ameaças de IA generativa.
Atualização Crítica
Atualização do SDK e server de Liveness com interação;
Melhorias nas verificações de injeção de vídeo recentemente adicionadas no lado do dispositivo e no lado do servidor para mitigar ameaças de IA generativa.
Remoção de dependência que poderia causar a mensagem ITMS-91065: Missing signature
ao enviar para o Testflight e AppStore.
Ajustes na distribuição de um módulo interno que causava o erro No architectures in the binary
ao enviar para o Testflight e AppStore.
Ajustes nos manifestos de privacidade visando corrigir problemas de upload p/ AppStore.
Melhoria no foco da câmera de documentos para dispositivos iPhone 12 ou mais recentes;
Na SDK e server do Smartlive com interação;
Câmera de documentos com um crash intermitente durante sua abertura.
Manifesto de Privacidade: erro listado ao gerar o Relatório de Privacidade pelo Xcode.
Manifesto de privacidade;
SDK de Smartlive com interação;
Suporte ao Xcode 15.
Novas funcionalidades que melhoram a experiência de captura no Liveness Interativo.
Problema corrigido: uma implementação interna que ocasionava um crash ao final do fluxo quando a aplicação é gerada usando as seguintes configurações: macOS 14+(Sonoma) com Chip M1/M2 e Xcode 15+.
Melhorias nas verificações de injeção de vídeo recentemente adicionadas no lado do dispositivo e no lado do servidor para mitigar ameaças de IA generativa.
Revertido: Problema corrigido: uma implementação interna que ocasionava um crash ao final do fluxo quando a aplicação é gerada usando as seguintes configurações: macOS 14+(Sonoma) com Chip M1/M2 e Xcode 15+.
Corrigido: Invalid Bundle. The bundle UnicoSdkLogger.framework does not support the minimum OS Version specified in the Info.plist.
Problema corrigido: uma implementação interna que ocasionava um crash ao final do fluxo quando a aplicação é gerada usando as seguintes configurações: macOS 14+(Sonoma) com Chip M1/M2 e Xcode 15+.
É necessário ter a versão mínima do iOS 11 no projeto. Caso a versão informada em seu info.plist esteja abaixo da versão 11, você pode ter problemas de incompatibilidade.
A partir do Xcode 15, a Apple abandonou o suporte para iOS 11. A Unico abandonará o suporte para iOS 11 no iOS SDK em uma versão futura.
Atualização Crítica
Nova funcionalidade de captura para garantir segurança eficaz;
Adição de novos tratamentos de erros do Liveness Ativo.
Erro 73720
caso ocorra falha no processamento de liveness;
Erro 73721
caso ocorra o limite de tentativas de captura;
Erro 73722
caso ocorra o limite de tempo de captura;
Erro 73730
um erro interno de licença;
Erro 73731
um erro interno de licença expirada;
Atualização do SDK e server do Smartlive com interação;
Melhorias nas verificações de injeção de vídeo recentemente adicionadas no lado do dispositivo e no lado do servidor para mitigar ameaças de IA generativa;
Habilitamos a customização das cores do botão de cancelar e barra de progresso através dos métodos opcionais getProgressBarColor() e getCancelButtonIconColor();
Habilitamos a customização do logo no rodapé da tela para Camera Interativa (Facetec).
Melhorias internas no produto, sem impacto externo.
Atualização do SDK e server do Smartlive com interação;
Melhorias internas no produto, sem impacto externo.
Melhoria nos logs internos do SDK;
Melhorias internas no produto, sem impacto externo.
Definição automática de ambientes de produção e homologação no SDK.
Problema corrigido: Foi abordado um vazamento de memória e crashes ao alternar entre os modos background e ativo, especialmente ao manter a câmera ativa. Agora, ao entrar em modo background, a câmera será encerrada automaticamente para otimizar o consumo de bateria e memória do dispositivo, reduzindo significativamente o risco de vazamentos de memória e crashes.
Atualização do SDK e server do Smartlive com interação.
Melhorias internas no produto, sem impacto externo.
Disponibilizar o novo fluxo de captura e retentativas quando usado o Liveness com Interação (entrar em contato com a único caso queira habilitar essa nova funcionalidade);
Lançar erro 73800
caso haja falha na captura usando o fluxo de retentativa;
Lançar erro 73100
caso haja falha de conexão com internet durante uma requisição.
Removido o timeout do fluxo de captura usando Liveness com Interação.
Otimização do consumo de memória pela SDK, resolvendo problemas em instâncias que eram afetadas em capturas de longa duração.
Correção nas cores no modo alta iluminação na câmera Smartlive com interação.
Atualização do SDK client e server do Smartlive com interação.
Aumento do tempo padrão da sessão da câmera Smartlive com interação para 60s.
Melhorias internas no produto, sem impacto externo.
Atualização do SDK client e server do Smartlive com interação;
Remoção da tela de sucesso após a captura na câmera Smartlive com interação.
Atualização do SDK client e server do Smartlive com interação.
Hotfix: Correção do timeout da câmera Smartlive com interação e de documentos.
Melhorias internas no produto, sem impacto externo.
Atualização do SDK client e server do Smartlive com interação.
Atualização do SDK client e server do Smartlive com interação.
Atualização do SDK client e server do Smartlive com interação.
Atualização do SDK client e server do Smartlive com interação;
hotfix: Correção da abertura da câmera de documentos quando NSLocationWhenInUseUsageDescription não é implementado.
hotfix: Correção do pedido de geolocalização sobre a câmera Smartlive podendo eventualmente cancelar a captura;
hotfix: Reset de brilho ao estado original após da captura.
Atualização do SDK e server do Smartlive com interação;
hotfix: Correção do frame de captura de documentos em iPhones com telas menores do que 4.7 polegadas;
hotfix: Correção na análise de face em iPhones modelo Pro Max.
Atualização do SDK e server do Smartlive com interação;
Melhoria de segurança no changelog.
Atualização do SDK e server do Smartlive com interação;
Coleta de dados de uso, geolocalização e dispositivo (os dados coletados são usados para garantir a segurança do processo e melhorar a experiência do usuário).
Feat: Automação da publicação no CocoaPods.
Atualização da versão do Smartlive com interação;
Melhoria na tratativa de erro ao identificar fontes maliciosas;
hotfix: Abertura de câmera em celulares com versão do iOS abaixo da 13.
Ajuste na resolução das imagens;
Habilitada a opção Build Libraries for Distribution. Isso ajuda o Xcode a evitar o travamento de versão, para que os módulos da unico possam ser usados quando versões mais recentes do Xcode ou do compilador Swift forem usadas e lançadas a loja.
Hot fix: Fechamento automático da câmera quando o usuário coloca a aplicação em background;
Hot fix: Limpezas de warnings na base de código.
Hot fix: Ajustes para manter compatibilidade com Xcode 13.
Hot fix: JWT encode nos modos de liveness ativo.
Hot fix: ajuste no callback do fechamento manual do frame de captura com interação.
Melhoria da resolução da imagem gerada pelo Smartlive com interação para celulares de qualidade média/alta.
Atualização da versão da SDK do Smartlive;
Possibilidade de executar os métodos prepareSelfieCamera
e prepareDocumentCamera
sem o arquivo json
, utilizando uma classe do tipo AcessoBioConfigDataSource
.
Ajuste no tema padrão para o modo de baixa luminosidade do frame com interação;
Ajuste na customização para o botão de fechar do frame com interação.
Feature flag para poder selecionar a exibição ou não do logo da unico.
Correções nas configurações que estavam impedindo o upload do archive/.ipa para a loja Apple.
Suporte do gerenciador de pacotes Swift Package Manager (SPM);
Adição de dois novos frames de documentos: CNH frente e CNH verso.
Correção na customização da funcionalidade de Prova de Vida. As cores não estavam sendo aplicadas ao modo de captura como deveriam;
Correção nos callbacks de erro que não estavam sendo invocados em casos de falhas em requisições REST.
Suporte para versões anteriores do Swift (versão mínima: swift 4.2), desde que sigam os pré-requisitos quanto a versão mínima do Xcode (13 ou superior);
Correção no valor da propriedade encrypted no retorno do objeto (SelfieResult / DocumentResult);
Correção na abertura da câmera quando o objeto de tema possuía qualquer propriedade de cor como nula;
Correção no botão de fechar das câmeras: normal, inteligente e documentos.
Adicionado o frame de CPF;
Correção na implementação do frame de RG.
Correção na implementacão das customizacões.
Mudança na estrutura de classes;
Refatoração de funções públicas, permitindo o retorno assync dentro da própria função;
Refatoração nos métodos disableAutoCapture e disableSmartFrame;
Correção de bug de enquadramento de face;
Correção de bug de travamento de tela após a captura.
O SDK está 16% mais leve com a remoção de várias intra-dependências e remoções de garbage-code;
O SDK está mais seguro com novos métodos de criptografia em real-time;
O SDK está mais rápido e preciso na detecção de faces com melhorias dos modelos de IA para o câmera inteligente;
Agora é possível configurar o tempo máximo de sessão do seu usuário através do método: [acessoBioManager setTimeoutSession:], obtendo o retorno/callback quando ocorrer através do método: - (void)systemClosedCameraTimeoutSession;
Agora é possível configurar o tempo máximo de inferência e detecção da face do seu usuário através do método: [acessoBioManager setTimeoutToFaceInference:], obtendo o retorno/callback quando ocorrer através do método: - (void)systemClosedCameraTimeoutFaceInference;
Entre outras limpezas realizadas frequentemente.
O SDK está 16% mais leve com a remoção de várias intra-dependências e remoções de garbage-code;
O SDK está mais seguro com novos métodos de criptografia em real-time;
O SDK está mais rápido com os novos modelos de IA para o câmera inteligente;
Remoção de todos os métodos que permitiam acesso ao Liveness com interação;
Entre outras limpezas realizadas frequentemente.
Esta versão possui correções e melhorias importantes em relação a versão anterior (1.2.2);
Correções nas validações que envolvem iPhone 6 e iPhone 5;
Entre outras limpezas realizadas frequentemente.
Agora é possível customizar todos os elementos visuais utilizando também cores no formato hexadecimal. Lembrando que os formatos padrões dos SO's continuam ativos, como UIColor para iOS e Colors para Android;
Adicão de um novo método de retorno para notificar a sua classe implementadora no momento em que o usuário fechar a câmera manualmente;
Correção de bugs em toda classe de documentos que impedia as requisições para o servidor de forma adequada;
Entre outras limpezas realizadas frequentemente.
Adição de um novo método de callback (retorno) para notificar a sua classe implementadora no momento em que o usuário fechar a câmera manualmente;
Correção de bugs em toda classe de documentos que impedia as requisições para o servidor de forma adequada;
Entre outras limpezas realizadas frequentemente.
Normalização dos cálculos de pontos biométricos em dispositivos com tela em retina, o qual utilizam escala em @3x;
Automatização da operação de adicionar manualmente ao target o arquivo CenterModelCrop.mlmodel. A centralização ficou mais simples e rápida, diminuindo a fricção do usuário no momento de enquadrar o rosto;
Entre outras limpezas realizadas frequentemente.
A partir dessa versão (1.2.0), o SDK do Unico Check não possuirá mais intra-dependências dentro do projeto. Tais quais incluíam FirebaseMLVision, AFNetworking, MBProgressHUD entre outras. O time trouxe todas as funcionalidades e vantagens que tais dependências traziam para o iOS core nativo, simplificando e reduzindo em mais de 75% o tamanho de biblioteca em relação a versão anterior.
Bug fixado a respeito da versão da biblioteca AFNetworking, a qual estava impedindo o upload para a Apple Store pelo uso de WebViews depreciadas na Guideline de 2020.
Adição do botão de fechar no fluxo de captura de documentos. Permitindo que o usuário volte a tela anterior, caso queira;
Correção de um bug que impedia a implementação da captura de documentos no modo DocumentNone;
No fluxo de captura de documentos, correção de um bug que impedia a alteração da label de instrução de acordo com o documento selecionado.
Agora é possível customizar a imagem do ícone de popup de reset de sessão dentro do fluxo do Liveness com interação.
Correção de bug que ocasionava conflitos entre códigos em swift desenvolvidos em nossa biblioteca e códigos em swift desenvolvidos no projeto do cliente. Estes conflitos, não permitiam o upload da aplicação para a Apple Store.
O projeto acessobio-ios era um repositório público distribuído pelo Cocoapods. Devido as melhorias significativas e mudanças que foram realizadas foi criado um novo repositório que tem o intuito de proteger o código em relação aos dados sensíveis. Portanto, o repositório acessobio-ios não está mais disponível;
O novo repositório não afeta na implementação.
Nesta seção, você encontrará todas as informações necessárias para instalação do SDK da plataforma Unico IDCloud em seus aplicativos Android
É necessário que seu ambiente de desenvolvimento esteja de acordo com os seguintes pré-requisitos:
Possuir a versão do SDK Android na versão 21 ou superior;
Possuir o repositório Maven da Unico configurado.
O SDK Android é compatível com a grande maioria dos dispositivos que possuam Android 5.0 (API de nível 21) ou versões superiores.
A tabela a seguir lista os dispositivos testados em laboratório, além da disponibilidade das extensões do fornecedor/fabricante. Algumas extensões listadas podem estar sujeitas as API ou SKUs específicos do fabricante. Clique abaixo para ver os dispositivos testados:
Dispositivo
Versão do Android
Resultado do teste
Tipo do teste
ASUS - X01BDA
10.0.0
Físico
ASUS - Z01KD
8.0.1
Físico
HUAWEY - P30 Lite
9.0.0
Físico
LG - K22
10.0.0
Físico
LG - Q6
7.0.0
Físico
MOTOROLA - Moto one macro
10.0.0
Físico
MOTOROLA - Moto G4
6.0.1
Físico
MOTOROLA - Moto G5s Plus
8.1.0
Físico
MOTOROLA - Moto G6 Play
9.0.0
Físico
MOTOROLA - Moto G7 Play
10.0.0
Físico
MOTOROLA - Moto G7 Power
10.0.0
Físico
MOTOROLA - Moto G8 Power Lite
10.0.0
Físico
SAMSUNG - A01
10.0.0
Físico
SAMSUNG - J8 SM J810M
8.1.0
Físico
SAMSUNG - Galaxy A30s SM-A307GT
10.0.0
Físico
SAMSUNG - Galaxy A51
10.0.0
Físico
SAMSUNG - Galaxy A71
11.0.0
Físico
SAMSUNG - Galaxy S20+
11.0.0
Físico
SAMSUNG - s10e
11.0.0
Físico
XIAOMI - Mi 8 Lite
9.0.0
Físico
XIAOMI - Mi 8 Lite
10.0.0
Físico
XIAOMI - Poco X3
10.0.0
Físico
XIAOMI - Redmi Note 8
10.0.0
Físico
XIAOMI - Redmi Note 8 Pro
10.0.0
Físico
XIAOMI - Redmi Note 9
10.0.0
Físico
XIAOMI - Redmi Note 9 Pro
10.0.0
Físico
GOOGLE - Pixel sailfish
8.0.0
Virtual (TestLab)
HUAWEY - ALE L23
5.0.0
Virtual (TestLab)
HUAWEY - ANE LX1
9.0.0
Virtual (TestLab)
HUAWEY - ANE LX2
9.0.0
Virtual (TestLab)
HUAWEY - COR L29
8.1.0
Virtual (TestLab)
HUAWEY - MHA L29
7.0.0
Virtual (TestLab)
HUAWEY - NEO L29
9.0.0
Virtual (TestLab)
SAMSUNG - SC 02J
8.0.0
Virtual (TestLab)
SAMSUNG - SM G891A
9.0.0
Virtual (TestLab)
SAMSUNG - SM G930AZ
8.0.0
Virtual (TestLab)
SAMSUNG - SM G935A
8.0.0
Virtual (TestLab)
SAMSUNG - SM G965N
9.0.0
Virtual (TestLab)
SAMSUNG - SM G965U1
8.0.0
Virtual (TestLab)
SAMSUNG - SM G981U1
10.0.0
Virtual (TestLab)
SAMSUNG - SM J727V
8.1.0
Virtual (TestLab)
SAMSUNG - SM N950F
9.0.0
Virtual (TestLab)
SAMSUNG - SM N950N
9.0.0
Virtual (TestLab)
SAMSUNG - SM N950U
8.0.0
Virtual (TestLab)
SAMSUNG - SM N960F
9.0.0
Virtual (TestLab)
SAMSUNG - SM N960N
9.0.0
Virtual (TestLab)
SAMSUNG - SM N960U1
8.1.0
stLab)
Para implementar o SDK Android da plataforma Unico IDCloud ao seu aplicativo Android, siga o passo a passo listado abaixo:
O SDK Android é disponibilizado através de um Repositório Maven, adicione ao bloco repositories do arquivo build.gradle
existente na raiz do seu projeto:
Habilite o suporte ao AndroidX ao em seu arquivo gradle.properties
na raiz de seu projeto (isto garante uma melhor performance e funcionamento do frame de captura):
Após configurar o SDK Android, basta importá-lo em seu projeto. Para isto, adicione acessobio-android
ao bloco dependencies
do arquivo app/build.gradle
.
A dependência deve ser incluída em um arquivo diferente do que foi utilizado no passo anterior. Neste passo, é necessário utilizar o arquivo build.gradle
referente ao módulo e não ao projeto:
Ao compilar o projeto, você pode se deparar com o seguinte erro:
Invoke-customs are only supported starting with android 0 --min-api 26
Por incompatibilidade da versão do frame min-26. Adicione as linhas a seguir ao bloco compileOptions, no mesmo arquivo app/build.gradle
:
Entre em contato com o CSs e/ou time de Onboarding.
Solicite a SDK Key informando os identificadores de suas aplicações. Bundle Identifier para iOS, PackageID para Android e Host para WEB.
Os identificadores de suas aplicações serão vinculados a SDK Key pela equipe da Unico.
Você recebe a sua SDK Key para implementar o AcessoBioConfigDataSource.
Nesta seção, você encontrará todas as informações necessárias para a customização do SDK da plataforma Unico IDCloud em seus aplicativos Flutter
O SDK Android permite que algumas personalizações sejam feitas. Abaixo veja todas as personalizações possíveis para este SDK.
É possível configurar a experiência das mensagens informativas dos frames de captura alterando seu idioma. Utilize o enumerado LocaleTypes
que contém os seguintes valores:
LocaleTypes.PT_BR
: para Português(Brasil);
LocaleTypes.ES_MX
: para Espanhol(México);
LocaleTypes.ES_ES
: para Espanhol(Espanha);
LocaleTypes.EN_US
: para Inglês(EUA).
Veja como implementar no exemplo abaixo:
Esta é uma etapa opcional, porém muito recomendada para que o processo de captura tenha a identidade visual da sua empresa.
É possível customizar alguns objetos do frame de acordo com o modo de câmera utilizado, através do método setTheme()
.
Os tipos suportados para representação de cor são Color Resource ou String contendo o código hexadecimal da cor. Ex: R.color.red ou #FF0000.
Todos os métodos estão disponíveis abaixo:
getColorSilhouetteError()
Método utilizado para customizar a cor de erro da silhueta
getColorSilhouetteNeutral()
Método utilizado para customizar a cor neutra da silhueta
getColorBackground()
Método utilizado para customizar a cor de fundo da silhueta
getColorBoxMessage()
Método utilizado para customizar a cor de fundo da mensagem
getColorTextMessage()
Método utilizado para customizar a cor de texto da mensagem
getColorBackgroundPopupError()
Método utilizado para customizar a cor de fundo do popup
getColorBackgroundButtonPopupErrorgetColorTextPopupError()
Método utilizado para customizar a cor de texto e ícones do popup
getColorBackgroundButtonPopupError()
Método utilizado para customizar a cor de fundo do botão do popup
getColorTextButtonPopupError()
Método utilizado para customizar a cor de texto do botão do popup
getColorBackgroundTakePictureButton()
Método utilizado para customizar a cor de fundo do botão de tirar foto manualmente
getColorIconTakePictureButton()
Método utilizado para customizar a cor de ícone do botão de tirar foto manualmente
getColorBackgroundBottomDocument()
Método utilizado para customizar a cor de fundo do box na captura de documentos
getColorTextBottomDocument()
Método utilizado para customizar a cor de texto do box na captura de documentos
getColorProgressBar()
Método utilizado para customizar a cor da barra de progresso na validação da imagem
getColorCancelButtonIcon()
Método utilizado para customizar a cor do ícone de cancelar a captura no canto superior esquerdo
Na implementação do android, a customização do colorCancelButtonIcon deve ser feita adicionando a cor desejado no arquivo de resources colors.xml
Nesta seção, você encontrará todas as informações necessárias para a customização do SDK da plataforma Unico IDCloud em seus aplicativos iOS
O SDK iOS permite que algumas personalizações sejam feitas. Abaixo veja todas as personalizações possíveis para este SDK.
É possível configurar a experiência das mensagens informativas dos frames de captura alterando seu idioma. Utilize o enumerado LocaleTypes
que contém os seguintes valores:
LocaleTypes.PT_BR
: para Português(Brasil);
LocaleTypes.ES_MX
: para Espanhol(México);
LocaleTypes.ES_ES
: para Espanhol(Espanha);
LocaleTypes.EN_US
: para Inglês(EUA).
Veja como implementar no exemplo abaixo:
Esta é uma etapa opcional, porém muito recomendada para que o processo de captura tenha a identidade visual da sua empresa.
É possível customizar alguns objetos do frame de acordo com o modo de câmera utilizado, através do método setTheme()
.
Os tipos suportados para representação de cor são Color Resource ou String contendo o código hexadecimal da cor. Ex: R.color.red ou #FF0000.
Todos os métodos estão disponíveis abaixo:
getColorSilhouetteSuccess()
Método utilizado para customizar a cor de sucesso da silhueta
getColorSilhouetteError()
Método utilizado para customizar a cor de erro da silhueta
getColorBackground()
Método utilizado para customizar a cor de fundo da silhueta
getColorBoxMessage()
Método utilizado para customizar a cor de fundo da mensagem
getColorTextMessage()
Método utilizado para customizar a cor de texto da mensagem
getColorTextPopupError()
Método utilizado para customizar a cor de texto e ícones do popup
getColorBackgroundPopupError()
Método utilizado para customizar a cor de fundo do popup
getColorBackgroundButtonPopupError()
Método utilizado para customizar a cor de fundo do botão do popup
getColorTextButtonPopupError()
Método utilizado para customizar a cor de texto do botão do popup
getColorBackgroundTakePictureButton()
Método utilizado para customizar a cor de fundo do botão de tirar foto manualmente
getColorIconTakePictureButton()
Método utilizado para customizar a cor de ícone do botão de tirar foto manualmente
getColorBackgroundBottomDocument()
Método utilizado para customizar a cor de fundo do box na captura de documentos
getColorTextBottomDocument()
Método utilizado para customizar a cor de texto do box na captura de documentos
getImageIconPopupError()
Método utilizado para customizar o ícone do Popup de erro, exibido quando a face é posicionada de forma incorreta no frame de captura.
getProgressBarColor()
(opcional)
Método opcional utilizado para customizar a cor do ícone de loading da camera Liveness com interação. Caso não implementado getColorBoxMessage()
é ultilizado.
getCancelButtonIconColor()
(opcional)
Método opcional utilizado para customizar a cor do ícone de cancelar da camera Liveness com interação. Caso não implementado getColorBackgroundTakePictureButton()
é ultilizado.
A seguir alguns exemplos de como você pode utilizar os métodos acima em seu projeto:
Nesta seção, você encontrará a solução de alguns problemas comuns na integração do SDK da plataforma Unico IDCloud em seus aplicativos Android
O material de ofuscação tem por motivação servir de auxilio para o desenvolvedor passar pelos problemas de ofuscação em seu aplicativo.
O ofuscador do cliente pode afetar o funcionamento do SDK, é necessário que o mesmo não ofusque o código do SDK.
A Unico se isenta da responsabilidade em relação à conflitos de ofuscação com a SDK.
O ofuscamento é um processo de transformar o bytecode em uma forma menos legível por humanos, dificultando assim a engenharia reversa.
Esse processo consiste em remover informações relacionadas a depuração como tabelas de variáveis, número de linhas e renomear os pacotes, classes e métodos.
Ao embarcar a SDK Adroid na aplicação podem ocorrer falhas.
Quando o ofuscamento foi realizado via DexGuard, ao ocorrer a falha utilize as regras:
Quando o ofuscamento foi realizado via ProGuard, ao ocorrer a falha utilize as regras:
Altere o repositório Maven para o novo repositório no arquivo build.gradle
do projeto.
A implementação era feita da seguinte forma:
Agora deve ser atualizado para o novo repositório:
Altere a dependência do SDK para a nova dependência no arquivo app/build.gradle
do projeto.
A implementação era feita da seguinte forma:
Agora deve ser atualizado para a nova dependência:
Nesta seção, você encontrará todas as informações necessárias para a customização do SDK da plataforma Unico IDCloud em seus aplicativos Android
O SDK Android permite que algumas personalizações sejam feitas. Abaixo veja todas as personalizações possíveis para este SDK.
É possível configurar a experiência das mensagens informativas dos frames de captura alterando seu idioma. Utilize o enumerado LocaleTypes
que contém os seguintes valores:
LocaleTypes.PT_BR
: para Português(Brasil);
LocaleTypes.ES_MX
: para Espanhol(México);
LocaleTypes.ES_ES
: para Espanhol(Espanha);
LocaleTypes.EN_US
: para Inglês(EUA).
Veja como implementar no exemplo abaixo:
Esta é uma etapa opcional, porém muito recomendada para que o processo de captura tenha a identidade visual da sua empresa.
É possível customizar alguns objetos do frame de acordo com o modo de câmera utilizado, através do método setTheme()
.
Os tipos suportados para representação de cor são Color Resource ou String contendo o código hexadecimal da cor. Ex: R.color.red ou #FF0000.
Todos os métodos estão disponíveis abaixo:
Também é possível realizar personalizações de forma estática, no seu arquivo colors.xml adicione o seguinte código:
Abaixo, confira a especificação de campos da personalização:
Esta é uma etapa opcional, porém muito recomendada para que o processo de captura tenha a
Esta é uma etapa opcional, porém muito recomendada para que o processo de captura tenha a identidade visual da sua empresa.
É possível customizar alguns objetos do frame de acordo com o modo de câmera utilizado, através do método setTheme()
.
Os tipos suportados para representação de cor são Color Resource ou String contendo o código hexadecimal da cor. Ex: R.color.red ou #FF0000.
Todos os métodos estão disponíveis abaixo:
Também é possível realizar personalizações de forma estática, no seu arquivo colors.xml adicione o seguinte código:
Abaixo, confira a especificação de campos da personalização:
Nesta seção, você encontrará todas as informações necessárias para instalação do SDK da plataforma Unico IDCloud em suas aplicações Web
O frame de captura disponibilizado por meio do SDK, é compatível com as seguintes combinações de browsers e sistemas operacionais:
Windows (desktop)
N/A
N/A
Android
N/A
iOS
N/A
MacOS (desktop)
N/A
De forma geral, o SDK da suporte a WebRTC e versões mais recentes dos browsers listados acima. Por questões de compatibilidade e segurança, o funcionamento em versões muito antigas destes browsers não é garantido.
É um componente do sistema que permite que as aplicações Android ou iOS exibam conteúdos da web diretamente dentro do aplicativo, baseado no mesmo projeto de código. Sendo responsável pela navegação em sites e conteúdo da web dentro dos aplicativos.
É necessário ter realizado a implantação do SDK Web em uma aplicação que contenha um domínio seguro com protocolo https.
O SDK Web tem compatibilidade com webviews executadas no Android 8 (API 26) ou superior.
Para que o SDK tenha um funcionamento correto é necessário adicionar algumas permissões e configurações ao arquivo AndroidManifest, são elas:
O SDK Web tem compatibilidade com webviews executadas no iOS 13 ou superior.
Para que o SDK tenha um funcionamento correto é necessário adicionar algumas permissões e configurações ao arquivo info.plist, são elas:
O componente foi homologado somente em camadas nativas, para que seja utilizado em frameworks híbridos (Flutter ou React Native) é necessário implementar na camada nativa do Android e/ou iOS.
Nosso suporte é restrito a aplicativos desenvolvidos diretamente nas plataformas nativas Android e iOS, utilizando seus respectivos módulos nativos. No momento, não oferecemos suporte para aplicativos desenvolvidos em frameworks híbridos, como React Native, Ionic ou outras tecnologias de desenvolvimento multiplataforma.
O componente foi homologado nas redes sociais Instagram e Facebook no modo Liveness sem interação. O modo Liveness com interação não é compatível em webviews de aplicativos de redes sociais.
Para implementar o SDK Android da plataforma Unico IDCloud ao seu aplicativo Android, siga o passo a passo listado abaixo:
O SDK Web emprega o uso de Web Workers para aprimorar a segurança e a performance. Por isso é necessário adicionar as seguintes configurações à sua Content Security Policy (CSP):
Se a sua aplicação possui uma CSP, essa configuração é obrigatória para garantir o funcionamento correto do SDK.
Entre em contato com o CSs e/ou time de Onboarding.
Solicite a SDK Key informando os identificadores de suas aplicações. Bundle Identifier para iOS, PackageID para Android e Host para WEB.
Os identificadores de suas aplicações serão vinculados a SDK Key pela equipe da Unico.
Você recebe a sua SDK Key para implementar o UnicoConfig.
A tabela abaixo lista arquivos de recursos adicionais disponíveis para inclusão em seu projeto. Você deve baixa-los e incluí-los em seu projeto para realizar a captura com Prova de vida:
3.20.0
3.19.3
3.19.2
3.19.0 -> 3.19.1
3.18.11
3.18.10
3.18.9
3.18.8
3.18.7
3.18.6
3.18.5
3.18.4
3.18.0 -> 3.18.3
3.16.4 -> 3.17.0
3.16.3
3.16.2
3.14.1 -> 3.16.1
3.11.1 -> 3.14.0
3.10.2 -> 3.11.0
3.10.1
3.9.1 -> 3.10.0
3.9.0
3.8.3
3.8.2
3.8.0 -> 3.8.1
3.7.1 -> 3.7.2
3.6.5 -> 3.7.0
3.6.3 -> 3.6.4
3.6.1 -> 3.6.2
3.5.4 -> 3.6.0
3.5.3
3.5.0 -> 3.5.2
O SDK Web é disponibilizado através de um pacote npm ou cdn. Para a instalação, siga os passos abaixo de acordo com sua preferência:
Ou pelo yarn, com o comando abaixo:
Para instalar o SDK em seu projeto por meio do cdn, basta efetuar o download do arquivo abaixo e importa-lo em seu projeto.
Nesta seção, você encontrará todas as informações necessárias para o uso e integração do SDK da plataforma Unico IDCloud em suas aplicações Web para a captura do documento
Neste modo de câmera, existe um frame de captura para auxiliar o usuário a posicionar o documento corretamente. Após posicionar o documento corretamente, o usuário deve clicar no botão para realizar a captura da foto do documento.
A SDK não realiza nenhum tipo de validação do que está sendo capturado.
Neste modo de câmera é possivel capturar os documentos:
CPF: Captura da frente do CPF;
CNH: Captura da CNH aberta;
CNH frente: Captura da frente da CNH;
CNH verso: Captura do verso da CNH;
RG frente: Captura da frente do RG;
RG verso: Captura do verso do RG;
Outros: Captura de qualquer outro documento.
Para começar, você deve efetuar 2 passos simples em seu projeto:
Instancie um novo Builder:
Especifique o caminho dos arquivos adicionais (caso adicionados em seu projeto):
É recomendado que você configure o tamanho do frame dentro de sua aplicação, a fim de otimizar a área de captura dentro de seu WebApp. Confira abaixo como fazer esta configuração para Web Desktop ou Mobile.
Nas versões Web Desktop, é possível restringir o tamanho do frame para que o mesmo não utilize toda a dimensão de seu WebApp. Para isto, basta envolver o frame (id="box-camera"
) em outra tag html, como no exemplo abaixo:
Idealmente, você deve tentar manter uma proporção adequada entre altura e largura, o que irá facilitar o enquadramento da face do usuário. A seguir um exemplo:
Seguindo o exemplo acima, o frame respeita o tamanho do elemento "pai", neste caso representado pelo container. Desta forma, você tem a flexibilidade para implementar o frame da forma mais conveniente para sua aplicação (como em um modal, por exemplo).
Testes alterando o tamanho da tela através do modo desenvolvedor de seu browser não funcionam. É recomendado que este tipo de teste seja feito alterando o tamanho da janela de seu browser.
Para uma view Web Mobile é recomendado que o frame de captura ocupe 100% da tela para evitar problemas com os algorítimos de visão computacional. Caso a área de captura esteja distorcida, a funcionalidade de captura automática (Câmera Inteligente) pode apresentar problemas de calculo no tracking da face dos usuários.
Sendo assim, é recomendado que na view Web Mobile:
O frame de captura ocupe 100% da tela do dispositivo (100vw/vh
);
Evitar o scroll horizontal ou vertical (isso pode ser minimizado com um modal);
Testes de devices utilizando o modo desenvolvedor de seu browser não funcionam, dado que, a camera utilizada pelo seu browser é a mesma de seu desktop, que possui uma resolução totalmente diferente da camera de um dispositivo móvel. Recomendamos que este tipo de teste seja feito diretamente no dispositivo.
Um dos objetos que é necessário passar como parâmetro ao método responsável por renderizar o frame de captura é o de callback. Este objeto deve conter funções de callback para casos de sucesso e erro, como exemplificados abaixo.
Este objeto é obrigatório e caso não seja corretamente implementado (contemplando todos os eventos de success
ou error
gera uma exceção, que caso não tratada, é exibida no console do usuário).
Para iniciar a câmera com as configurações feitas até aqui, é preciso criar uma instância do builder através do método build()
.
Em seguida, com a câmera "montada", deve-se configurar o modo de captura da câmera.
A preparação da câmera é efetuada a partir do método prepareDocumentCamera()
, disponibilizado a partir do builder. Este método recebe 2 parâmetros:
Tipo de documento a ser capturado, sendo eles:
DocumentCameraTypes.CPF
Frame para captura da frente do CPF
DocumentCameraTypes.CNH
Frame para captura da CNH aberta
DocumentCameraTypes.CNH_FRENTE
Frame para captura da frente da CNH
DocumentCameraTypes.CNH_VERSO
Frame para captura do verso da CNH
DocumentCameraTypes.RG_FRENTE
Frame para captura da frente do RG
DocumentCameraTypes.RG_VERSO
Frame para captura do verso do RG
DocumentCameraTypes.RG_FRENTE_NOVO
Frame para captura da frente do novo RG
DocumentCameraTypes.RG_VERSO_NOVO
frame para captura da parte traseira do novo RG
DocumentCameraTypes.OTHERS("descrição")
Frame para captura de qualquer outro documento
Este método gera uma promise que ao ser resolvida, devolve um objeto que é utilizado para efetivamente abrir a câmera através do método open
, que recebe como parâmetro as funções de callback
configuradas no passo acima.
Abaixo um exemplo utilizando a captura de CNH:
Usando a classe UnicoConfig
:
Caso precise capturar um documento que não possuímos um frame específico (ex: RNE, entre outros), utilize o frame DocumentCameraType.None
, que irá te possibilitar um frame genérico, retangular, que pode ser utilizado para orientar qualquer captura.
Nesta seção, você encontrará todas as informações necessárias para o tratamento dos erros do SDK da plataforma Unico IDCloud em seus aplicativos iOS
Nesta seção, você encontrará dicas e informações sobre acessibilidade
A SDK implementa componentes preparados com atributos HTML para acessibilidade, como aria-label, tabindex, role, entre outros, que habilitam a navegação por teclado entre elementos, ativa orientações por áudio e são utilizados por softwares de leitura de tela.
Ao integrar a SDK Web em uma página, é possível que existam outros elementos interativos na página que não ficam visíveis durante o fluxo de abertura da câmera e captura de imagem. Esses elementos podem acabar gerando conflitos com as informações do fluxo de captura, atrapalhando a experiência do usuário, portanto, é importante remover ou inativar a interação com outros elementos enquanto a captura estiver sendo realizada.
Isso é possível de diversas formas e depende dos elementos existentes e frameworks utilizados na página, segue abaixo, um exemplo utilizando o atributo aria-hidden:
aria-hidden
É importante usar com cuidado este atributo, pois ele pode prejudicar a acessibilidade de elementos na página se for aplicado incorretamente, ou não for removido quando o fluxo de captura terminar.
Nesta seção, você encontrará todas as informações necessárias para o uso e integração do SDK da plataforma Unico IDCloud em suas aplicações Web para a captura da selfie
Para começar, você deve efetuar 3 passos simples em seu projeto:
Instancie um novo Builder:
Especifique o caminho dos arquivos adicionais (caso adicionados em seu projeto):
Especifique o caminho dos arquivos dos modelos de IA, caso utilize a funcionalidade de Câmera Inteligente
É possível configurar o ambiente que será utilizado na execução da SDK. Utilize o enumerado SDKEnvironmentTypes
que contém os seguintes enumerados:
SDKEnvironmentTypes.PROD
: para ambiente de Produção;
SDKEnvironmentTypes.UAT
: para ambiente de Homologação.
Veja como implementar no exemplo abaixo:
Um dos objetos que deve ser passado como parâmetro ao método responsável por renderizar o frame de captura é o de callback. Este objeto deverá conter funções de callback para casos de sucesso e erro, como exemplificados abaixo.
Este objeto é obrigatório e caso não seja corretamente implementado (contemplando todos os eventos de success
ou error
) gera uma exceção, que caso não tratada, é exibida no console do usuário.
O atributo encrypted
é destinado estritamente ao envio da imagem através das APIs do by Client. Não se deve abrir e serializar esse atributo, pois suas características podem ser alteradas sem aviso prévio. Seu uso deve ser exclusivo nas interações com as APIs para garantir a integridade e segurança dos dados. A Unico não se responsabiliza por quaisquer danos decorrentes dessa prática, uma vez que as modificações podem ocorrer de maneira imprevista.
Os arquivos base64/encrypted
podem sofrer variações de tamanho de acordo com diversas variáveis, dentre elas, a qualidade dos aparelhos e das fotos geradas pelos mesmos e regras de negócio da Unico. Para não encontrar problemas em sua aplicação, não limite em sua lógica de programação ou sua infraestrutura o tamanho da string gerada pela SDK para os arquivos.
Para iniciar a câmera com as configurações feitas até aqui, é preciso criar uma instância do builder através do método build()
.
Em seguida, com a câmera "montada", deve-se configurar o modo de captura da câmera.
A preparação da câmera será efetuada a partir do método prepareSelfieCamera()
, disponibilizado a partir do builder. Este método recebe 2 parâmetros:
Modo de câmera desejado, sendo eles:
SelfieCameraTypes.NORMAL
para o modo de câmera normal;
SelfieCameraTypes.SMART
para o modo de câmera inteligente.
Este método gera uma promise que ao ser resolvida, devolve um objeto que é utilizado para efetivamente abrir a câmera através do método open
, que recebe como parâmetro as funções de callback
configuradas no passo acima.
Caso deseje utilizar a captura automática, passe o parâmetro Unico.SelfieCameraTypes.SMART
para o método prepareSelfieCamera
.
Para a captura inteligente, os modelos de visão computacional também devem ser carregados através do método setModelsPath
, conforme explicado no primeiro passo deste guia.
Usando a classe UnicoConfig:
É possível utilizar o SDK Web com Liveness Interativo embarcado em um iFrame, para isso é preciso realizar uma implementação semelhante a seção anterior na preparação da câmera.
A preparação da câmera será efetuada através do método prepareSelfieCameraForIFrame()
, também disponibilizado a partir do builder. Este método recebe os mesmos parâmetros do prepareSelfieCamera()
:
O método prepareSelfieCameraForIFrame()
só funciona se a implementação estiver em um iFrame, o uso fora de um iFrame resulta no erro 73724
. Assim como usar o método prepareSelfieCamera()
dentro de um iFrame resulta no erro 73724
Para que a captura funcione corretamente é necessário implementar o elemento <iframe>
como no exemplo abaixo:
Para executar a captura é necessário estar no modo tela cheia do browser para que o SDK possa se redimensionar automaticamente. Sendo assim, ao executar a captura, o SDK apresenta uma tela solicitando a abertura do frame em modo tela cheia. Veja no exemplo a seguir:
Após permitir o uso de tela cheia, o frame de captura abrirá normalmente:
A Apple impede o uso de APIs de tela cheia especificamente em iPhones (iPads são aceitáveis). Sendo assim, para capturas em iPhones, é necessário configurar o posicionamento do iFrame por conta própria.
Por motivos de segurança, o intervalo entre a geração do encrypted
e o envio via um dos fluxos disponíveis deve ser de até no máximo 10 minutos. Envios feitos além deste período serão rejeitados automaticamente pela API.
Nesta seção, você encontrará todas as atualizações do SDK Flutter
Mantenha seu SDK Flutter sempre atualizado com a última versão disponível.
Atualização Crítica
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Android versão 5.29.0
release notes.
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Correção na câmera de documento, onde em alguns cenários ocorria um crash após a captura.
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Agora, os SDKs suportam múltiplos idiomas! Além do português, é possível alternar entre as opções de inglês e espanhol no método setLocale()
, oferecendo uma experiência mais personalizada para os usuários final;
A partir de agora, é possível definir o ambiente da SDK pela própria API pública no método setEnvironment()
;
Em casos de dúvidas, contacte o seu CSM.
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização Crítica
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização Crítica
Atualização de sdk nativas:
Atualização Crítica
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização Crítica
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização de sdk nativas:
Atualização da versão mínima do SDK Dart para >= 2.15.0
Customização da tela de loading usando a cor do background da captura;
Atualização de sdk nativas:
Atualização do server e SDK do Smartlive com interação.
Fix: Abertura da câmera com Smartlive com interação;
Fix: Incompatibilidade durante o build com ofuscação.
Fix: Atualização bibliotecas nativas.
Fix: Camera traseira.
Fix: Erro build não encontrando arquivos.
Atualização de sdk nativas:
Fix: Abertura de câmera ao não permitir o uso da geolocalização.
Atualização de sdk nativas:
Fix: Correção no exemplo de RG.
Atualização da SDK e server do Smartlive com interação;
Fix: Correção na dependência do arquivo google-service-json.
Versão estável do SDK que contém a técnologia de SmartLive com interação.
Nova versão do SDK que contém a técnologia de SmartLive com interação.
deprecated
Maior versão estável do SDK Flutter. Contém apenas captura manual e automática.
Nesta seção, você encontrará uma lista das melhores práticas para implementação da SDK da plataforma Unico IDCloud
Constantemente as SDKs vêm evoluindo para garantir maior segurança e novos recursos e funcionalidades. É essencial que os clientes mantenham uma rotina de atualizações, além de ter agilidade em atualizações críticas.
Importante garantir que realize sua atualização para versão mais recente disponível:
Sabemos que seu aplicativo faz uso de diversas outras bibliotecas e funcionalidades, muitas vezes sendo carregadas de forma simultânea à SDK da Unico. Como boa prática de atualização, evite realizar o processo de upgrade de nossa SDK ao mesmo tempo que atualiza alguma outra funcionalidade / biblioteca pois, ao se deparar com uma falha e/ou mudança de comportamento, pode ser um desafio entender o que está sendo a causa raiz. Recomendamos realizar as atualizações separadamente para garantir maior controle das validações, além de utilizar o nosso ambiente de homologação.
Caso esteja com dificuldade, abra um ticket no nosso portal de clientes com as seguintes informações (para agilizar a tratativa):
Qual é a linguagem da SDK que você está tentando atualizar?
Caso seja mobile (Android ou IOs), trata-se de uma implementação nativa ou híbrida (informar detalhes)?
Em caso de implementação JavaScript, qual o framework utilizado?
Qual é a versão atual da SDK que você está tentando atualizar? (não é necessário caso seja uma nova instalação);
Qual é a nova versão que está sendo realizada a tentativa de instalação/atualização?
Por favor, informe qual API Key está sendo utilizada;
A atualização consiste apenas no upgrade do SDK ou outros componentes / funcionalidades também estão sendo alterados/atualizados/modificados ? Em caso afirmativo, por favor descreva quais itens adicionais estão sendo modificados;
Prover uma descrição dos passos executados e quais foram os resultados/erros;
Por favor anexar evidências e insumos relacionados a falha/problema (arquivos de logs contendo trecho de erros/falhas, printscreens e/ou vídeos reproduzindo o problema).
Ao efetuar uma captura de imagem com sucesso, o método onSuccessSelfie retorna um objeto do tipo ResultCamera que possui 2 atributos:
Base64 da imagem obtida, que pode ser utilizado se quiser exibir uma prévia da imagem em seu app;
Encrypted, que é um objeto JWT que deve ser deve ser enviado na chamada das APIs REST. O JWT (Encrypted) deve ser utilizado estritamente durante o envio da imagem através das APIs da Unico. Não se deve abrir e/ou serializar esse atributo, pois suas características podem ser alteradas sem aviso prévio. Seu uso deve ser exclusivo nas interações com as APIs para garantir a integridade e segurança dos dados. A Unico não se responsabiliza por quaisquer danos decorrentes dessa prática, uma vez que as modificações podem ocorrer de maneira imprevista. Como dito, a SDK já fornece o atributo Base64 para obter a imagem em questão.
Um caso de exemplo em Swift: Método: onSuccessSelfie print("(result.encrypted)") para Encrypted print("(result.base64)") para para Base64 print("(result)") para Encrypted e Base64
Em resumo: nunca tente ler ou manipular o atributo Encrypted (JWT).
Por motivos de segurança, o envio da JWT deve ser realizado dentro de um período de 10 minutos. Caso o envio supere esta janela, o pacote será considerado inválido. Considere este tempo no momento da jornada do usuário em seu aplicativo e evite mudanças posteriores.
Por motivos de segurança, o envio da JWT deve ser feito somente uma vez para o backend da Unico. Ou seja, caso haja algum problema no processamento da imagem e/ou algum erro no response, deve-se realizar uma nova captura biométrica para geração de um novo objeto encrypted e então, enviar este novo arquivo para o backend da Unico.
A virtualização de dispositivos nas dinâmicas de testes do seu aplicativo pode ser interpretada como uma tentativa de burlar as camadas de segurança incorporadas ao provedor de biometria, podendo retornar os erros:
Mobile:
73006 - Unable to open camera on emulators
.
Web
73600 - Could not find camera resource
.
73400 - Could not initialize camera
.
Para evitar retrabalho e a identificação errônea de erros, os testes devem ser realizados em dispositivos físicos.
Toda comunicação e requisição é baseada em API Keys definidas previamente na instância do cliente. É muito importante que sua implementação utilize a mesma API Key no fluxo de captura e no fluxo de envio, pois evita erros de integração, facilita a validação e a rastreabilidade dos processos e fluxos.
Em caso de dúvidas sobre sua API Key acesse o suporte técnico.
No processo de realização de testes e validações, é normal manter o DevTools aberto para verificação de fluxos e requisições. No entanto, não deve-se considerar o método de validação de captura nesses testes pois a SDK identifica como possível fraude e invalida a passagem quando enviada ao backend. Por isso, quando houver a realização de fluxos ponta-a-ponta, é essencial manter o DevTools desativado e seguir com a captura normal.
Ao subir versões para o SDK WEB, caso tenha atualização também de arquivos resources, sempre excluir o arquivo antigo e inserir os novos na pasta Public, pois pode acontecer dos arquivos estarem com o mesmo nome e não serem substituídos. Certifique-se também de verificar se não há cache internamente dos arquivos resources antigos após a atualização e novo build.
Para a implementação em aplicações flutter, deve-se sempre utilizar o nosso plugin de flutter específico para este propósito. Reforçamos que não tentem implementar as versões nativas do nosso SDK (Android, IOS) através de bridges em aplicações flutter pois normalmente esta ação gera erros que não foram mapeados pelo time de engenharia da Unico.
A implementação do SDK possui 2 etapas até a captura da foto e geração do encrypted:
A preparação da câmera e;
A abertura da câmera.
Na primeira etapa é preciso passar o tipo de câmera a ser utilizado e o bundle com as informações de API KEY, estando tudo correto a autenticação com o backend do SDK é realizada com sucesso. Na segunda etapa é feita a abertura da câmera, normalmente a partir de um clique de botão do usuário. A autenticação com o backend do SDK pode levar alguns segundos, então colocar essa etapa junto com a abertura de câmera no clique do botão que o usuário utiliza pode gerar uma frustração e sensação de lentidão. Dessa forma, o ideal é que, durante o carregamento da página de orientações de captura, a preparação da câmera já esteja sendo feita, assim, quando o usuário decidir abrir a câmera, o carregamento será mais rápido e a experiência final será superior.
Desta forma, você irá otimizar sua implementação e melhorar a velocidade da sua aplicação, diminuindo a percepção de lentidão no processamento para seu usuário final.
Sempre realize a limpeza de cache antes de realizar o build e subir novas versões. Caso esta limpeza não seja realizada, é possível se deparar com erros relacionados a cache de dependências que possivelmente tenham sido removidas ou atualizadas em novas versões. Abaixo alguns exemplos de como realizar:
Para o Flutter seguir com o comando:
Remover o arquivo: pubspec.lock
ou;
flutter pub get
.
Para o IOS seguir com o comando:
pod cache clean 'unicocheck-ios' –all
ou;
pod cache clean –all
ou
Remover o podfile.lock
e seguir com o pod install
.
Para o Android no build Gradle seguir com o comando:
./gradlew clean
.
O ofuscamento é um processo de transformar o bytecode em uma forma menos legível por humanos, dificultando assim a engenharia reversa. A ferramenta de ofuscação que você utiliza em sua aplicação pode afetar o funcionamento da SDK, portanto é necessário que o mesmo não ofusque o código da SDK. Um bom indicador para problemas de ofuscação é verificar se sua aplicação funciona em modo debug e deixa de funcionar quando realiza o build em modo release, uma vez que a ofuscação não modifica os arquivos em modo debug.
Sendo assim, é necessário que durante a implementação do SDK vocêadicione às suas regras de ofuscação a configuração para o SDK Unico, caso contrário enfrentará problemas ao tentar buildar o projeto utilizando o SDK IOS, Android ou Flutter.
Abaixo os links para as configurações de ofuscação de cada SO:
A Unico fornece um ambiente de homologação para que os clientes possam realizar testes e validações de suas implementações antes de realizar qualquer mudança e alteração no ambiente de produção. Reforçamos a importância desta etapa a fim de garantir maior segurança quando for realizar a janela de mudança em produção. Garanta que seu plano de testes inclua o máximo de validações e cenários que encontrará no ambiente de produção (como variação de dispositivos, testes com limitação de conectividade, etc) Importante: lembre-se que o ambiente de homologação possui seu próprio conjunto de parametrizações/configurações, como conta de serviço e API Keys específicas (diferentes do ambiente de produção).
Crie um roteiro / checklist levando em conta o plano de gestão de mudanças da sua empresa;
Certifique-se que tenha esteja utilizando as configurações corretas de produção (como API Key correta);
Garanta que tenha um plano de rollback (recovery) em caso de falha ao subir a nova versão em produção;
Ao se deparar com uma falha, colete todos os logs e insumos;
Reative a versão anterior funcional para mitigar impacto em produção;
Abra um um ticket no nosso portal de clientes contendo todas as informações e insumos da falha para que possamos apoiá-lo.
Nesta seção, você encontrará a lista com todas as PoCs de SDK disponíveis para apoiar a sua implementação
Os seguintes exemplos de projetos são disponibilizados para facilitar o entendimento do funcionamento de cada SDK.
Nesta seção, você encontrará todas as atualizações do SDK Web
Mantenha seu SDK Web sempre atualizado com a última versão disponível.
Atualização do SDK e server do Liveness com interação;
Suporte a câmera traseira em fluxos de lojas físicas;
Correção de tratamento no uso do LocalStorage.
Atualização do SDK e server do Liveness com interação.
Adicionado novo método para customização de fontes na classe UnicoThemeBuilder
.
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas.
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas.
Atualização do SDK e server do Liveness com interação.
Adição de novo frame de documentos OTHERS_V2;
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas.
Atualização do SDK e server do Liveness com interação.
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas.
Atualização do SDK e server do Liveness com interação.
Melhorias de acessibilidade no fluxo do Liveness com interação.
Atualização do SDK e server do Liveness com interação.
Atualização do SDK e server do Liveness com interação;
Resolução de conflitos entre ferramentas de observabilidade.
Atualização do SDK e server do Liveness com interação;
Correção de estilização em modo de captura em baixa luminosidade;
Atualização do SDK e server do Liveness com interação.
Atualização do SDK e server do Liveness com interação.
Atualização do SDK e server do Liveness com interação.
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas.
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas.
Melhoria no carregamento dos scripts do Liveness Interativo.
Atualização do SDK e server do Liveness com interação;
Novo modelo de implementação dos recursos do Liveness Interativo.
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas.
Atualização Crítica
Atualização do SDK e server do Smartlive com interação;
Melhorias nas verificações de injeção de vídeo recentemente adicionadas no lado do dispositivo e no lado do servidor para mitigar ameaças de IA generativa.
Atualização Crítica
Atualização do SDK e server do Smartlive com interação;
Melhorias nas verificações de injeção de vídeo recentemente adicionadas no lado do dispositivo e no lado do servidor para mitigar ameaças de IA generativa.
Atualização Crítica
Atualização do SDK e server do Smartlive com interação;
Melhorias nas verificações de injeção de vídeo recentemente adicionadas no lado do dispositivo e no lado do servidor para mitigar ameaças de IA generativa.
Melhorias internas de produto que melhoram nossa capacidade de detecção de erros.
Novas funcionalidades que melhoram a experiência de captura no Liveness Interativo.
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas.
Content-Security-Policy: ...; worker-src 'self' blob:; child-src 'self' blob:
Melhorias internas de produto. Essas melhorias não afetam diretamente a experiência do usuário final, mantendo a interface e funcionalidades externas inalteradas.
Atualização Crítica
Atualização do SDK e server do Smartlive com interação;
Ajuste de tamanho de frames de CNH frente e verso em iPhones com telas de 6 polegadas ou mais.
Implementação de suporte ao uso de iFrames no Liveness Interativo.
Melhoria internas no produto, sem impacto externo.
Habilitamos a customização das cores do botão de cancelar e barra de progresso através dos métodos opcionais setColorCancelButton() e setColorProgressBar();
Habilitamos a customização dos textos da UI do liveness interativo via configuração remota.
Nova personalização de logomarca no modo de captura do Liveness Ativo. Em breve adicionaremos mais informações na documentação;
Adição de novos tratamentos do Liveness Ativo durante o prepareCamera.
Lançar erro 73402
caso haja falha no carregamento do frame devido a problemas de rede;
Lançar erro 73403
caso o dispositivo/browser não seja suportado pelo SDK;
Lançar erro 73404
caso o dispositivo esteja em modo de tela paisagem;
Lançar erro 73405
caso o dispositivo esteja bloqueado por segurança devido a muitas tentativas mal sucedidas;
Lançar erro 73406
caso o SDK seja executado em um iFrame;
Lançar erro 73407
caso o SDK não tenha carregado todos os recursos completamente;
Lançar erro 73600
caso haja erro no carregamento dos recursos do Liveness Ativo.
Melhorias nas regras de compatibilidade do SDK com o Angular 10.
Atualização do SDK e server do Smartlive com interação.
Novas funcionalidades de autenticação e captura, disponíveis mediante análise interna pela equipe Unico para garantir segurança eficaz.
Adição de novos tratamentos de erros do Liveness Ativo:
Erro 73728
em caso de abertura do SDK em domínios sem HTTPS;
Erro 73729
em caso de abertura do SDK em browsers incompatíveis;
Erro 73730
um erro interno de licença;
Erro 73731
um erro interno de licença expirada;
Erro 73732
em caso de abertura do SDK em uma origem não configurada.
Atualização no modulo de segurança da SDK;
Melhoria internas no produto, sem impacto externo.
Melhoria no fluxo de autenticação, reduzindo falhas na autenticação de dispositivos com configurações específicas no Sistema Operacional.
Definição automática de ambientes de produção e homologação no SDK.
Melhorias internas do produto.
Atualização do SDK e server do Smartlive com interação.
Atualização do SDK e server do Smartlive com interação;
Atualização de segurança na lib crypto-es para a versão 2.1.0.
Disponibilizar o novo fluxo de captura e retentativas quando usado o Liveness com Interação (entrar em contato com a Unico caso queira habilitar essa nova funcionalidade);
Lançar erro 73800
caso haja falha na captura usando o fluxo de retentativa;
Lançar erro 73100
caso haja falha de conexão com internet durante uma requisição.
Correção no download do SDK via NPM.
Recomendamos atualizar! Correção e normalização das chaves de rastreabilidade da sessão de captura a qual nos permite ter uma analise anti-fraude mais sólida de ponta-a-ponta.
Melhorias internas do produto.
Melhorias internas do produto.
Atualização do SDK e server do Smartlive com interação;
Melhorias internas do produto;
Correção em frases da tela de retry em Inglês e Espanhol;
Correção do frame de documento others no desktop.
Atualização do SDK e server do Smartlive com interação;
Implementação de experiência de captura de selfie nos idiomas Inglês e Espanhol;
Correção em exceção lançada quando não há permissão de acesso a geolocalização;
Correção na abertura da câmera de documentos.
Atualização do SDK e server do Smartlive com interação;
Atualização de mensagem no final do fluxo de captura com Smartlive Interativo.
Atualização do SDK e server do Smartlive com interação;
Revisão dos textos de orientação ao usuário na captura biométrica.
Melhoria internas no produto, sem impacto externo.
Atualização do SDK e server do Smartlive com interação;
Melhoria em captura com Smartlive com interação no Samsung Internet Browser;
Possibilidade de utilizar ambientes de Uat ou Prod na mesma versão do SDK.
Melhoria de segurança na comunicação da SDK.
Atualização do SDK e server do Smartlive com interação.
Adição de nova forma de configuração que permite inserir as configurações do SDK pela classe UnicoConfig;
Hot fix: Correção em tratamento anti-injection para conflitos com o Sentry.
Atualização do SDK e server do Smartlive com interação;
Melhoria em tratamento anti-injection;
Melhoria na compatibilidade do SDK com frameworks mais antigos.
Hot fix: Correção em tratamento anti-injection para Motorola Edge;
Hot fix: Correção em validação de evento para browser Safari.
Melhorias de segurança voltadas a anti-injection;
Atualização da versão do SDK e Server do Smartlive com interação;
Correção em fechamento de câmera nos frames sem interação.
Suporte ao navegador Samsung internet;
Coleta de dados de uso, geolocalização e dispositivo (os dados coletados são usados para garantir a segurança do processo e melhorar a experiência do usuário).
Melhorias em tratamentos anti-injection;
Customização automática dos modos de alta e baixa luminosidade do Smartlive com interação;
Atualização da versão do SDK e Server do Smartlive com interação.
Implementação do cancelButton no Smartlive sem interação;
Adição do modo de Câmera Traseira ao Smartlive sem interação;
Adição de opacidade em botão principal do Smartlive com interação em caso de rosto desalinhado.
Atualização da versão do SDK do Smartlive com interação;
A partir dessa versão o SDK web conta com uma das ferramentas de ofuscação de código mais poderosas do mercado.
Compatibilidade dos frames das câmeras normal e inteligente ao uso de webview no instagram e facebook;
Atualização da versão do SDK do Smartlive com interação;
Hot fix: Correção na abertura do frame da câmera normal e da câmera inteligente.
Implementação do cancelButton do Smartlive com interação;
Hot fix: Retorno de erros de browsers não suportados;
Hot fix: Remoção do frame do Smartlive com interação após erro.
Hot fix: Correção da câmera invocada para captura de documentos em devices que possuem múltiplas câmeras
Atualização da versão do SDK do Smartlive.
Correção no frame de captura de CNH Aberta em desktop
Melhoria na qualidade da imagem retornada no base64;
Melhoria em requests de autenticação;
Correção para uso de WebCam na câmera de documentos.
Melhoria em tratamento anti-injection.
Lançamento de frames de captura de documentos com CNH frente e CNH verso;
Captura de documentos em modo paisagem no desktop.
Ajuste para utilização de função ao invés de classes;
Ajuste na inicialização da camera após a segunda abertura.
Ajuste na abertura da camera para Motorola Edge 20;
Ajuste nas informações criptografadas retornadas para o cliente.
Ajuste no fechamento da camera da FaceTec quando um erro é retornado.
Remoção da tela de permissão de camera da FaceTec.
Feature Flag para exibição do logo da unico.
Remoção do logo da unico.
Inclusão da funcionalidade de captura com liveness com interação.
Correção em um bug nas implementações em Angular > 6. Este bug deixava a tela congelada quando houvesse concorrência entre setTimeout's no SDK e a aplicação do cliente."
Remoção dos seguintes tipos de documentos utilizados no método initDocument()
:
2: RG frente e verso;
4: Novo RG frente e verso.
Caso esteja utilizando os tipos mencionados acima (2 ou 4), realize a captura simples de cada documento através dos tipos:
6: RG frente;
7: RG verso;
8: Novo RG frente;
9: Novo RG verso.
Melhorias nos retornos callback de on.error
e on.support;
Melhoria na mudança de orientação do celular;
Remoção da propriedade: boxOrientationHtml.
Caso a orientação mude, fechamos a câmera e retornamos no callback de erro;
Maior segurança no SDK;
Melhoria no objeto de retorno no método on.success
, adicionando a propriedade encrypted
que possui um JWT que deve ser enviado em menos de 10 minutos para integração com Unico check onboarding:
Mudança no suporte a browsers.
Depreciações:
Remoção da lib js antiga e tornando esta a oficial.
Correção de silhueta grande em PWA.
Atualização de plugins externos para versões mais recentes corrigindo vulnerabilidades dos mesmos.
Correção de câmera invertida para capturas usando câmera traseira dos celulares.
Versão inicial.
Nesta seção, você encontrará as particularidades de criar um processo que tenha Prova de vida + Validação (1:1) + Alerta de comportamento como capacidades.
Nesta seção, você encontrará a documentação detalhada sobre o funcionamento do endpoint relacionado às capacidades Prova de Vida + Validação (1:1) + Alerta de comportamento, utilizadas em conjunto.
Trata-se de três capacidades síncronas, ou seja, toda a integração ocorre utilizando um único endpoint.
As capacidades da plataforma Unico IDCloud via by Client são gerenciadas por meio de API Keys - utilizadas como um parâmetro no header das requisições -, que definem o escopo de acesso. Como pré-requisito, é necessário possuir uma API Key configurada com as capacidades Prova de Vida + Validação (1:1) + Alerta de comportamento, garantindo acesso dedicado e seguro ao recurso.
Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.
Pontos Importantes:
Para utilizar a capacidade Prova de vida, é indispensável o uso dos nossos SDKs:
É possível utilizar a capacidade de Validação (1:1) sem a Prova de vida. Para este caso de uso, não devolveremos o parâmetro liveness
no response da API. Neste cenário não há nenhuma validação da prova de vida, nem mesmo passiva.
Caso ocorra algum erro no processamento, o processo retornará um status = 5
, como no exemplo abaixo:
Dicas:
Para este caso de uso, não há a necessidade de Consultar o Resultado do Processo, visto que a resposta é síncrona;
O material de ofuscação tem por motivação servir de auxilio para o desenvolvedor passar pelos problemas de ofuscação em seu aplicativo.
O ofuscador do cliente pode afetar o funcionamento do SDK, é necessário que o mesmo não ofusque o código do SDK.
A Unico se isenta da responsabilidade em relação à conflitos de ofuscação com a SDK.
O ofuscamento é um processo de transformar o bytecode em uma forma menos legível por humanos, dificultando assim a engenharia reversa.
Esse processo consiste em remover informações relacionadas a depuração como tabelas de variáveis, número de linhas e renomear os pacotes, classes e métodos.
Ao embarcar a SDK Adroid na aplicação podem ocorrer falhas.
Quando o ofuscamento for realizado pela ferramenta iXGuard, sugerimos utilizar a versão 4.12.6 ou superior.
2.4.0
A responsabilidade do controle do fluxo é delegada para quem chama a SDK. Sendo assim, ao aparecer alguma forma de sombra ou a tela não fechar após a conclusão com sucesso da captura, a sugestão é que seja implementada uma forma de liberação dessa tela. Essa liberação pode variar de acordo com o empilhamento de navegação implementado. Para essa implementação, adicione o método condizente a liberação preferencialmente dentro do método de delegate onSuccessSelfie
. A seguir, alguns exemplos de liberação que podem ser usados:
bitcode
na distribuição de aplicativos usando Xcode 16Após o lançamento da versão oficial do Xcode 16 no dia 17 de setempro de 2024 e com a sua utilização para distribuição de aplicativos na AppStore, verificamos um bloqueio ao utilizar a SDK iOS sinalizando o uso de bitcode
em duas dependências internas ao utilizar o Cocoapods
como gerenciador de dependencias internas, são elas o DeviceProfiling
e UnicoSdkLogger
. A fim de não bloquear novos lançamentos é possível aplicar o seguinte passo-a-passo até a sua definitiva correção em uma release futura da SDK iOS:
Abrir arquivo Podfile
;
Inserir as linhas a seguir após comando post_install do |installer|
e antes do ultimo end
:
2.1. Caso já haja algum código, insira antes do trecho existente;
2.2. Caso já faça a remoção do bitcode
manualmente, adicionar os caminhos explicitamente citados em framework_paths
;
Caso não haja o comando post_install do |installer|
no arquivo Podfile
, inserir-lo confrme a seguir antes do último end
:
Nesta seção, você encontrará todas as informações necessárias para o uso e integração do SDK da plataforma Unico IDCloud em seus aplicativos Flutter para a captura da selfie
Para iniciar, crie uma instância do builder (gerado através da interface UnicoCheckBuilder
, fornecendo como parâmetro o contexto e ambiente em questão e a implementação da classe UnicoListener
.
A implementação dessa classe é bem simples e pode ser feita com poucas linhas de código. Tudo que precisa fazer é sobrescrever os métodos de callback com as lógicas de negócio de sua aplicação.
Configure o ambiente que será utilizado na execução da SDK. Utilize o enumerado Environment
que contém os seguintes enumerados:
UnicoEnvironment.PROD
: para ambiente de Produção;
UnicoEnvironment.UAT
: para ambiente de Homologação.
Veja como implementar no exemplo abaixo:
Note que, conforme o exemplo anterior, o trabalho de implementação da classe UnicoListener é, em grande parte, a configuração dos métodos de callback. Cada método será chamado em uma situação específica de retorno do SDK.
Basta sobrescrever os métodos exemplificados no passo anterior com as lógicas de negócio de sua aplicação:
onErrorUnico(UnicoError error)
onUserClosedCameraManually()
Este método é invocado sempre quando o usuário fechar a câmera de forma manual, como por exemplo, ao clicar no botão "Voltar".
onSystemClosedCameraTimeoutSession()
Este método é invocado assim que o tempo máximo de sessão for atingido (Sem capturar nenhuma imagem).
Pode ser configurado no builder através do método setTimeoutSession. Este método deve receber o tempo máximo da sessão em segundos. É possível alterar o tempo máximo de sessão do seu usuário ao utilizar a funcionalidade de detecção do rosto (Câmera de selfie com captura inteligente). Caso ele ultrapasse o tempo determinado em seu processo para capturar a foto, você pode apresentar alguma mensagem personalizável ou instrução ao usuário. O valor padrão é de 40 segundos e seu valor mínimo também é de 40 segundos.
onSystemChangedTypeCameraTimeoutFaceInference()
Este método é invocado assim que o tempo máximo para detecção do rosto de um usuário for atingido (Sem ter nada detectado). Neste caso, o modo de câmera é alterado automaticamente para o modo de captura manual (Sem a silhueta de captura inteligente).
O tempo máximo de captura ao utilizar a detecção do rosto (Câmera de selfie com captura inteligente) é de 13 segundos. Se o usuário encontra alguma dificuldade para captura da foto através da detecção do rosto e ultrapasse o tempo determinado em seu processo, a captura é alterada automaticamente para a manual, tendo como objetivo facilitar a ação para o usuário (TimeoutToFaceInference).
Todos os métodos acima devem ser criados da forma indicada em seu projeto (Mesmo que sem nenhuma lógica). Caso contrário, o projeto não compila com sucesso.
O SDK tem configurado e habilitado por padrão o enquadramento inteligente e a captura automática. Em função disso, deve-se configurar o modo de câmera no seu builder da seguinte forma:
Os valores false/true dos métodos acima não alteram a experiência de captura, servem apenas para a lógica interna do funcionamento do SDK.
O método de abertura da câmera precisa saber o que fazer ao conseguir capturar uma imagem ou ao ter algum erro no processo. É informado "o que fazer" ao método de abertura da câmera através da implantação de listeners que são chamados em situações de sucesso ou erro.
Através da implementação dos listeners, você pode especificar o que acontece em seu App em situações de erro (método onErrorSelfie
) ou sucesso (método onSuccessSelfie
) na captura de imagens.
onSucessSelfie
Ao efetuar uma captura de imagem com sucesso, este método é invocado e retorna um objeto do tipo ResultCamera
que é utilizado posteriormente na chamada das APIs REST:
O objeto ResultCamera
retorna 2 atributos: base64
e encrypted
:
O atributo base64
pode ser utilizado se quiser exibir uma prévia da imagem em seu app;
O atributo encrypted
é destinado estritamente ao envio da imagem através das APIs do by Client. Não se deve abrir e serializar esse atributo, pois suas características podem ser alteradas sem aviso prévio. Seu uso deve ser exclusivo nas interações com as APIs para garantir a integridade e segurança dos dados. A Unico não se responsabiliza por quaisquer danos decorrentes dessa prática, uma vez que as modificações podem ocorrer de maneira imprevista.
Os arquivos base64/encrypted
podem sofrer variações de tamanho de acordo com diversas variáveis, dentre elas, a qualidade dos aparelhos e das fotos geradas pelos mesmos e regras de negócio da Unico. Para não encontrar problemas em sua aplicação, não limite em sua lógica de programação ou sua infraestrutura o tamanho da string gerada pela SDK para os arquivos.
onErrorSelfie
Ao ocorrer algum erro na captura de imagem, este método é invocado e retorna um objeto do tipo UnicoError
:
O método openCameraSelfie
é utilizado para abrir a camera. Este método recebe como parâmetro a implementação da classe UnicoSelfie
e o JSON com as credenciais, gerado na etapa acima.
O exemplo a seguir ilustra os passos de configuração dos listeners e abertura da câmera:
Por motivos de segurança, o intervalo entre a geração do encrypted
e o envio via um dos fluxos disponíveis deve ser de até no máximo 10 minutos. Envios feitos além deste período serão rejeitados automaticamente pela API.
Nesta seção, você encontrará todas as informações necessárias para o uso e integração do SDK da plataforma Unico IDCloud em seus aplicativos Flutter para a captura do documento
Neste modo de câmera, existe um frame de captura para auxiliar o usuário a posicionar o documento corretamente. Após posicionar o documento corretamente, o usuário deve clicar no botão para realizar a captura da foto do documento.
A SDK não realiza nenhum tipo de validação do que está sendo capturado.
Neste modo de câmera é possivel capturar os documentos:
CPF: Captura da frente do CPF;
CNH: Captura da CNH aberta;
CNH frente: Captura da frente da CNH;
CNH verso: Captura do verso da CNH;
RG frente: Captura da frente do RG;
RG verso: Captura do verso do RG;
Outros: Captura de qualquer outro documento.
Para iniciar, crie uma instância do builder (gerado através da interface UnicoCheckBuilder
, fornecendo como parâmetro o contexto em questão e a implementação da classe UnicoListener
.
A implementação dessa classe é bem simples e pode ser feita com poucas linhas de código. Tudo que precisa fazer é sobrescrever os métodos de callback com as lógicas de negócio de sua aplicação.
Note que, conforme o exemplo anterior, o trabalho de implementação da classe UnicoListener é, em grande parte, a configuração dos métodos de callback. Cada método é chamado em uma situação específica de retorno do SDK.
Basta sobrescrever os métodos exemplificados no passo anterior com as lógicas de negócio de sua aplicação:
onErrorUnico(UnicoError error)
onUserClosedCameraManually()
Este método é invocado sempre quando o usuário fechar a câmera de forma manual, como por exemplo, ao clicar no botão "Voltar".
onSystemClosedCameraTimeoutSession()
Este método é invocado assim que o tempo máximo de sessão for atingido (Sem capturar nenhuma imagem).
Pode ser configurado no builder através do método setTimeoutSession. Este método deve receber o tempo máximo da sessão em segundos. É possível alterar o tempo máximo de sessão do seu usuário ao utilizar a funcionalidade de detecção do rosto (Câmera de selfie com captura inteligente). Caso ele ultrapasse o tempo determinado em seu processo para capturar a foto, você pode apresentar alguma mensagem personalizável ou instrução ao usuário. O valor padrão é de 40 segundos e seu valor mínimo também é de 40 segundos.
onSystemChangedTypeCameraTimeoutFaceInference()
Este método é invocado assim que o tempo máximo para detecção do rosto de um usuário for atingido (Sem ter nada detectado). Neste caso, o modo de câmera é alterado automaticamente para o modo de captura manual (Sem a silhueta de captura inteligente).
O tempo máximo de captura ao utilizar a detecção do rosto (Câmera de selfie com captura inteligente) é de 13 segundos. Se o usuário encontra alguma dificuldade para captura da foto através da detecção do rosto e ultrapasse o tempo determinado em seu processo, a captura é alterada automaticamente para a manual, tendo como objetivo facilitar a ação para o usuário (TimeoutToFaceInference).
Todos os métodos acima devem ser criados da forma indicada em seu projeto (Mesmo que sem nenhuma lógica). Caso contrário, o projeto não compila com sucesso.
O método de abertura da câmera precisa saber o que fazer ao conseguir capturar uma imagem ou ao ter algum erro no processo. É informado "o que fazer" ao método de abertura da câmera através da implantação de listeners que são chamados em situações de sucesso ou erro.
Através da implementação dos listeners, você pode especificar o que acontece em seu App em situações de erro (método onErrorDocument
) ou sucesso (método onSuccessDocument
) na captura de imagens.
onSucessDocument
Ao efetuar uma captura de imagem com sucesso, este método é invocado e retorna um objeto do tipo ResultCamera
que é utilizado posteriormente na chamada das APIs REST:
O objeto ResultCamera
retorna 2 atributos: base64
e encrypted
:
O atributo base64
pode ser utilizado se quiser exibir uma prévia da imagem em seu app;
onErrorDocument
Ao ocorrer algum erro na captura de imagem, este método é invocado e retorna um objeto do tipo UnicoError
:
Para abrir a câmera, o método openCameraDocument()
é utilizado. Esse método é disponibilizado através do objeto gerado com uma instancia da classe UnicoCheck
.
Este método recebe os seguintes parâmetros:
Arquivo JSON com as credenciais, gerado no passo de configurar credenciais;
Os listeners configurados acima;
Tipo de documento a ser capturado, sendo eles:
Caso precise capturar um documento que não possuímos um frame específico (ex: RNE, entre outros), utilize o frame DocumentCameraTypes.OUTROS("descrição")
, que irá te possibilitar um frame genérico, retangular, que pode ser utilizado para orientar qualquer captura.
Exemplo para captura de CNH:
Nesta seção, você encontrará todas as informações necessárias para instalação do SDK da plataforma Unico IDCloud em seus aplicativos Flutter
É necessário que seu ambiente de desenvolvimento esteja de acordo com os seguintes pré-requisitos:
iOS: é compatível com quase todos os dispositivos que possuam iOS 11.
É compatível com a grande maioria dos dispositivos que possuam Android 5.0 (API de nível 21) ou versões superiores;
A tabela a seguir lista os dispositivos testados em laboratório, além da disponibilidade das extensões do fornecedor/fabricante. Algumas extensões listadas podem estar sujeitas as API ou SKUs específicos do fabricante. Clique abaixo para ver os dispositivos testados:
Para implementar o SDK Flutter da plataforma Unico IDCloud ao seu aplicativo Flutter, siga o passo a passo listado abaixo:
Entre em contato com o CSs e/ou time de Onboarding.
Solicite a SDK Key informando os identificadores de suas aplicações. Bundle Identifier para iOS, PackageID para Android e Host para WEB.
Os identificadores de suas aplicações serão vinculados a SDK Key pela equipe da Unico.
Você recebe a sua SDK Key para implementar o AcessoBioConfigDataSource.
O versionamento semântico é utilizado para numerar as versões. Para mais informações, consulte o artigo .
Além disso, o repositório onde a SDK é disponibilizada mudou e também houve alteração no nome da dependência do SDK. Você deve atualizar seus registros de acordo com o artigo .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Você pode seguir o processo padrão de atualização ou instalação descrito conforme a versão que você utiliza: , , e .
Quebras de contrato de API são restritas apenas às releases de versões Major (). Isso significa que mudanças significativas no contrato da API só podem ocorrer com grandes mudanças na SDK, e não em revisões menores. Nós temos como prática evitar ao máximo qualquer quebra de versão Major, pois impacta em grandes mudanças na integração com o cliente, o que não é nosso objetivo. Faremos apenas em casos de extrema necessidade e sempre com o objetivo de garantir a segurança em todas as operações.
Cada uma das versões tem seus próprios release notes conforme os links abaixo, apresentando novas funcionalidades ou correções de bugs / bloqueios de fraudes: , , e .
Sempre que há uma nova versão do SDK, o site é atualizado. Se você é cliente da Unico receberá um e-mail com as atualizações e as informações sobre as mudanças. Caso não esteja recebendo, contate seu CSM.
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
O versionamento semântico é utilizado para numerar as versões. Para mais informações, consulte o artigo .
Visualize a lista completa de todos os erros em ;
Habilitamos a customização dos textos da UI do liveness interativo via configuração remota;
Remoção do Bitcode das distribuições binárias do unicocheck-ios. A partir do Xcode 14, o bitcode não é mais necessário para aplicativos e a App Store não aceita mais envios com bitcode. ;
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Possuir a versão 9 ou superior do instalado (IDE oficial de desenvolvimento do Google);
Pronto. Finalizada a instalação do SDK, siga para a implementação lendo o material a seguir:
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
A partir da versão 4.4.x do SDK, o Unico começou a usar seu próprio repositório Maven para distribuir o Android SDK e alterou o nome da dependência do SDK, além de ajustes nas regras do ProGuard e do DexGuard para clientes que utilizam a biblioteca da GuardSquare conforme descrito na seção de acima.
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
É recomendado o uso de webviews baseadas no Chromium com algumas customizações para melhor funcionamento do JavaScript. É possível encontrar um exemplo de implementação através das nossas .
O iOS fornece duas maneiras de se utilizar Webviews em aplicações, são elas: WKWebView e SFSafariViewController. Recomendamos o uso do SFSafariViewController para uma melhor compatibilidade com os recursos do DOM. É possível encontrar um exemplo de implementação através das nossas .
Para realizar o download do arquivo de AI do Unico Check SDK Web clique .
Instalação através do pacote NPM
Para instalar o SDK em seu projeto através do , basta executar o comando abaixo:
Instalação através do CDN
da versão 3.20.0
.
Pronto. Finalizada a instalação do SDK, siga para a implementação lendo o material a seguir:
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Este guia foi elaborado para ajudá-lo a implementar o SDK Web de forma rápida e fácil. Abaixo veja o passo a passo de todo o processo de integração. Após isso, caso deseje personalizar a experiência, não deixe de ver a seção .
Você pode conferir um exemplo de implementação através de um projeto (Angular).
A classe UnicoConfig obtida ;
A captura das imagens é apenas a primeira parte da jornada. Após capturar a imagem, é necessário enviar o base64
gerado pelo SDK para as APIs REST do by Client. Saiba mais na seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
.
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Este guia foi elaborado para ajudá-lo a implementar o SDK Web de forma rápida e fácil. Abaixo veja o passo a passo de todo o processo de integração. Após isso, caso deseje personalizar a experiência, não deixe de ver a seção .
A partir da versão 3.18.0, para que o SDK busque automaticamente os recursos adicionais basta que o método setResourceDirectory
não seja implementado e as sejam aplicadas corretamente.
A classe UnicoConfig obtida ;
A captura das imagens é apenas a primeira parte da jornada. Após capturar a imagem, é necessário enviar o encrypted
gerado pelo SDK para as APIs REST do by Client. Saiba mais na seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
O versionamento semântico é utilizado para numerar as versões. Para mais informações, consulte o artigo .
Android versão 5.32.0
.
iOS versão 2.16.11
.
Android versão 5.31.0
.
iOS versão 2.16.10
.
Android versão 5.30.1
.
iOS versão 2.16.9
.
iOS versão 2.16.8
.
Android versão 5.28.0
.
iOS versão 2.16.7
.
Android versão 5.27.0
.
iOS versão 2.16.5
.
Android versão 5.25.0
.
Android versão 5.24.0
;
iOS versão 2.16.4
.
Android versão 5.23.0
.
iOS versão 2.16.3
.
Android versão 5.22.0
;
iOS versão 2.16.2
.
iOS versão 2.16.1
.
Android versão 5.21.1
.
Android versão 5.20.0
;
iOS versão 2.16.0
.
Android versão 5.19.0
;
iOS versão 2.15.6
.
Android versão 5.17.0
;
iOS versão 2.15.2
.
Android versão 5.16.0
;
iOS versão 2.15.1
.
Android versão 5.15.1
.
Android versão 5.15.0
;
iOS versão 2.14.2
.
Android versão 5.14.1
;
iOS versão 2.14.0
.
Android versão 5.13.0
;
iOS versão 2.12.1
.
Android versão 5.12.0
;
iOS versão 2.12.0
.
iOS versão 2.11.0
.
Android versão 5.11.0-rc2
;
iOS versão 2.9.3-beta
.
Android versão 5.11.0-rc
;
iOS versão 2.9.1
.
iOS versão 2.9.0
.
Android versão 5.9.0
;
iOS versão 2.8.0
.
Android versão 5.7.0
;
iOS versão 2.6.1
.
Android versão 5.6.1
;
iOS versão 2.6.0
.
Android versão 5.3.0
;
iOS versão 2.4.0
.
Android versão 5.3.0
;
iOS versão 2.4.0
.
Android versão 5.0.0
;
iOS versão 2.3.20
.
Android versão 4.4.0
;
iOS versão 2.3.18
.
Android versão 4.2.7
;
iOS versão 2.3.10
.
Android versão 4.2.6
;
iOS versão 2.3.9
.
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
A Unico fornece um conjunto de POC (Prova de Conceito) que são implementações nas diversas linguagens suportadas pela SDK que apresentam exemplos funcionais de código com os fluxos e métodos no contexto da SDK, para fins didáticos, facilitando o entendimento da sequência esperada e sua adaptação para o código a ser implementado pelos nossos clientes. Você pode consultar as POCs disponíveis e solicitá-las via abertura de ticket com nosso time de atendimento através do .
Para mais detalhes, consulte a .
Android: [];
IOS: [];
Flutter: [];
Web: [].
Android: ;
IOS: .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
O versionamento semântico é utilizado para numerar as versões. Para mais informações, consulte o artigo .
O SDK Web emprega Web Workers para aprimorar a segurança e a performance. Para garantir a funcionalidade desses workers ao usar a Content Security Policy (), adicione as seguintes configurações à sua política:
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Você pode ver mais sobre como gerar um access-token .
UAT: ;
Produção: .
Para mais informações sobre os erros possíveis para este endpoint, consulte a seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Fonte: , , .
Dúvidas?
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Este guia foi elaborado para ajudá-lo a implementar o SDK Flutter de forma rápida e fácil. Abaixo veja o passo a passo de todo o processo de integração. Após isso, caso deseje personalizar a experiência, não deixe de ver a seção .
Ao ser invocado, o método recebe um parâmetro do tipo UnicoError
que contem detalhes do erro. Saiba mais sobre o tipo UnicoError
no documento de do SDK.
O atributo encrypted
deve ser enviado na chamada das APIs REST do .
Se for necessário converter o base64 para bitmap, a maneira padrão não funciona para o Android. É necessário realizar o split a partir da vírgula(,
) para que funcione. Se quiser saber mais, leia o artigo: .
Saiba mais sobre os tipos de ErrorBio
na seção de do SDK.
A captura das imagens é apenas a primeira parte da jornada. Após capturar a imagem, é necessário enviar o encrypted
gerado pelo SDK para as APIs REST do by Client. Saiba mais na seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Este guia foi elaborado para ajudá-lo a implementar o SDK Flutter de forma rápida e fácil. Abaixo veja o passo a passo de todo o processo de integração. Após isso, caso deseje personalizar a experiência, não deixe de ver a seção .
Ao ser invocado, o método recebe um parâmetro do tipo UnicoError
que contem detalhes do erro. Saiba mais sobre o tipo UnicoError
na seção do SDK.
Tanto o atributo encrypted
quanto o atributo base64
podem ser enviados na chamada das APIs REST do .
Se for necessário converter o base64 para bitmap, a maneira padrão não funciona para o Android. É necessário realizar o split a partir da vírgula(,
) para que funcione. Se quiser saber mais, leia o artigo .
Saiba mais sobre os tipos de ErrorBio
na seção de do SDK.
A captura das imagens é apenas a primeira parte da jornada. Após capturar a imagem, é necessário enviar o base64
gerado pelo SDK para as APIs REST do by Client. Saiba mais na seção .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Você pode conferir a lista com esses dispositivos nos oficiais da Apple.
Pronto. Finalizada a instalação do SDK, siga para a implementação lendo o material a seguir:
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
getCode()
Método utilizado para obter o código de erro ocorrido
getDescription()
Método utilizado para obter a descrição de erro ocorrido
73000
The Session was cancelled because of an unknown and unexpected error. The Unico Check SDK leverages a variety of iOS APIs including camera, storage, security, networking, and more. This return value is a catch-all for errors experienced during normal usage of these APIs.
73001
Context invalid
73003
The API version needs to be 11 or newer.
73006
Unable to open camera on emulators
73100
Unable to connect to internet
73200
Could not find the unico_sdk json file
73202
Unable to load unico_sdk json file
73203
Unable to load AcessoBioConfigDataSource
73204
Unable to initialize the SDK, please configure the environment on setEnviroment method of build.
73300
Unable to get unico authentication object
73301
Unable to parse unico authentication object
73302
Could not find the unico token
73701
Could not find active liveness import
73702
Unable to initialize active liveness in production mode
73703
Unable to get active liveness session
73704
The user pressed the cancel button and did not complete the Session.
73705
The Session was not performed successfully and a FaceScan was not generated. In general, other statuses will be sent to the developer for specific unsuccess reasons.
73706
The camera access is prevented because either the user has explicitly denied permission or the user's device is configured to not allow access by a device policy.
73707
The Session was cancelled due to the app being terminated, put to sleep, an OS notification, or the app was placed in the background.
73708
The Session was cancelled because the device is in landscape mode. The user experience of devices in these orientations is poor and thus portrait is required.
73709
The Session was cancelled because the device is in reverse portrait mode. The user experience of devices in these orientations is poor and thus portrait is required.
73710
The Session was cancelled because the user was unable to complete a Session in the default allotted time or the timeout set by the developer.
73711
The Session was cancelled due to memory pressure.
73712
The Session was cancelled because your App is not in production and requires a network connection.
73713
The Session was cancelled because your key needs to be validated again.
73714
The Session was cancelled because the developer-configured encryption key was not valid.
73715
The Session was cancelled because not all guidance images were configured.
73716
The Session was cancelled because SDK was unable to start the camera on this device.
73717
The Session was cancelled because the user was in a locked out state.
73718
The Session was cancelled because of an unknown and unexpected error. SDK leverages a variety of iOS APIs including camera, storage, security, networking, and more. This return value is a catch-all for errors experienced during normal usage of these APIs.
73719
The Session was cancelled because the user pressed the Get Ready screen subtext message. Note: This functionality is not available by default, and must be requested from FaceTec in order to enable it.
73720
The Session was not processed.
73721
The Session can't be performed: attempts limit exceeded.
73722
The Session can't be performed: face alignment timeout.
73730
Unable to initialize an active liveness session because of an unknown and unexpected license error.
73731
Unable to initialize an active liveness session because the license has expired.
73800
Could not build encrypted key
73000
Unknown and unexpected error. Unico SDK leverages a variety of APIs including camera, storage, security, networking, and more. This return value is a catch-all for errors experienced during normal usage of these APIs.
73001
<property> is required
73002
<property> must be an instance of <class>
73003
<class> with name <name> is not available to inject.
73004
Class type must be a function or a class.
73005
Could not find the <locale> locale.
73006
Could not find text: <text>.
73100
Unable to connect to internet.
73200
Could not find the Unico SDK JSON file.
73201
Could not load the Unico SDK JSON file.
73202
Unico SDK JSON file is invalid.
73204
Unable to initialize the SDK, please configure the environment on setEnviroment method of build.
73300
Could not authenticate this application.
73301
Could not authenticate this application.
73302
Authentication token not found.
73303
Current host is not registered.
73400
Could not initialize camera.
73401
Could not load ML models for this camera.
73402
The Key could not be verified due to connectivity issues on the user's device.
73403
This device/platform/browser/version combination is not supported by SDK.
73404
Device is in landscape display orientation. The SDK can only be used in portrait display orientation.
73405
Device blocked due to multiple failed attempts.
73406
The Session was cancelled, the SDK was opened in an IFrame.
73407
The SDK was not fully loaded.
73500
Could not get session.
73501
Could not get session.
73502
Session token not found.
73600
Could not find camera resource.
73601
Could not start camera in production mode.
74000
Invalid hexadecimal.
74001
Object is not a UnicoTheme
73700
Could not parse camera response.
73704
The user pressed the cancel button and did not complete the session.
73706
The camera access is prevented because either the user has explicitly denied permission or the user's device is configured to not allow access by a device policy.
73707
The session was canceled due to the app being terminated, put to sleep, an OS notification, or the app was placed in the background.
73708
The session was cancelled because device is in landscape mode. The user experience of devices in these orientations is poor and thus portrait is required.
73710
The session was cancelled because the user was unable to complete a Session in the default allotted time or the timeout set by the developer.
73715
The session was cancelled because not all guidance images were configured.
73716
The session was cancelled because SDK was unable to start the camera on this device.
73717
The session was cancelled because the user was in a locked out state.
73718
The session was cancelled because of an unknown and unexpected error. SDK leverages a variety of iOS APIs including camera, storage, security, networking, and more. This return value is a catch-all for errors experienced during normal usage of these APIs.
73720
The developer programmatically called the session cancel API.
73721
The session was cancelled due to a device orientation change during the session.
73722
The session was cancelled because the document is not ready.
73723
The session was cancelled because there was another session in progress.
73724
The session was cancelled because the camera was opened in an iFrame.
73728
Connection error, please use HTTPS to connect.
73729
Browser not supported, please open in another browser.
73730
Unable to initialize an active liveness session because of an unknown and unexpected license error.
73731
Unable to initialize an active liveness session because the license has expired.
73732
Unable to initialize an active liveness session because Origin is not permitted.
73800
Could not encrypt response.
73900
Could not get system information.
Android
PoC em uma Webview Android que executa o SDK Web
SFTP
Android x Web Flow
PoC de fluxo de comunicação entre aplicação web e webview nativa Android
SFTP
iOS
PoC em uma Webview iOS que executa o SDK Web
SFTP
iOS x Web Flow
PoC de fluxo de comunicação entre aplicação web e webview nativa iOS
SFTP
DocumentCameraTypes.CPF
Frame para captura da frente do CPF
DocumentCameraTypes.CNH
Frame para captura da CNH aberta
DocumentCameraTypes.CNH_FRENTE
Frame para captura da frente da CNH
DocumentCameraTypes.CNH_VERSO
Frame para captura do verso da CNH
DocumentCameraTypes.RG_FRENTE
Frame para captura da frente do RG
DocumentCameraTypes.RG_VERSO
Frame para captura do verso do RG
DocumentCameraTypes.OUTROS("descrição")
Frame para captura de qualquer outro documento
Nesta seção, você encontrará todos os FAQs da plataforma Unico IDCloud
Type: CNH
Content: Carteira Nacional de Habilitação
String numero;
String rgNumero;
String cpfNumero;
String nomeCivil;
List string filiacao;
Datetime dataNascimento;
Datetime data_habilitacao;
Datetime data_expiracao;
Datetime data_emissao;
String local_emissao;
String categoria;
String renachNumero.
Type: RG
Content: Registro Geral
String numero;
String orgao_emissor;
String uf_emissor;
String cpfNumero;
String carteira_profissionalNumero;
String certificado_militarNumero;
String cnsNumero;
String nis_pis_pasepNumero;
String ctpsNumero;
String ctps_serie;
String ctps_uf;
String titulo_eleitorNumero;
String nomeCivil;
String nome_social;
List string filiacao;
Datetime dataNascimento;
String naturalidade;
Datetime data_emissao;
Type: CIN
Content: Carteira de Identidade Nacional
string rgNumero;
string cpfNumero;
string nomeCivil;
string nome_social;
List string filiacao;
Datetime dataNascimento;
Datetime data_expiracao;
Datetime data_emissao;
string orgao_emissor;
string local_emissao;
string naturalidade;
string nacionalidade;
Type: PASSAPORTE
Content: Passaporte brasileiro
string numero;
string nome;
string sobrenome;
string pais_emissor;
string nacionalidade;
string naturalidade;
Datetime data_nascimento;
Datetime data_emissao;
Datetime data_expiracao;
string autoridade.
Type: UNKNOWN
Content: Documento desconhecido. Significa que não foi possível detectar o tipo daquele documento.
Type: CNH
Content: Carteira Nacional de Habilitação
String numero;
String rgNumero;
String cpfNumero;
String nomeCivil;
List string filiacao;
Datetime dataNascimento;
Datetime data_habilitacao;
Datetime data_expiracao;
Datetime data_emissao;
String local_emissao;
String categoria;
String renachNumero.
Type: RG
Content: Registro Geral
String numero;
String orgao_emissor;
String uf_emissor;
String cpfNumero;
String carteira_profissionalNumero;
String certificado_militarNumero;
String cnsNumero;
String nis_pis_pasepNumero;
String ctpsNumero;
String ctps_serie;
String ctps_uf;
String titulo_eleitorNumero;
String nomeCivil;
String nome_social;
List string filiacao;
Datetime dataNascimento;
String naturalidade;
Datetime data_emissao;
Type: CIN
Content: Carteira de Identidade Nacional
string rgNumero;
string cpfNumero;
string nomeCivil;
string nome_social;
List string filiacao;
Datetime dataNascimento;
Datetime data_expiracao;
Datetime data_emissao;
string orgao_emissor;
string local_emissao;
string naturalidade;
string nacionalidade;
Type: PASSAPORTE
Content: Passaporte brasileiro
string numero;
string nome;
string sobrenome;
string pais_emissor;
string nacionalidade;
string naturalidade;
Datetime data_nascimento;
Datetime data_emissao;
Datetime data_expiracao;
string autoridade.
Type: UNKNOWN
Content: Documento desconhecido. Significa que não foi possível detectar o tipo daquele documento.
Kotlin
PoC em Kotlin que implementa a SDK Android
Swift
PoC em Swift que implementa a SDK iOS
ObjC
PoC em ObjC que implementa a SDK iOS
React Native
PoC em React Native que implementa as SDKs Android e iOS
SFTP
Flutter
PoC em Dart que implementa a SDK Flutter
Angular
PoC em Angular que implementa a SDK Web
JS Vanilla
PoC em JS Vanilla (JS puro) que implementa a SDK Web
Next JS
PoC em Next que implementa a SDK Web
React JS com TypeScript
PoC em React com TypeScript que implementa a SDK Web
React JS com JavaScript
PoC em React com JavaScript que implementa a SDK Web
React JS com Webpack + Babel
PoC em React JS com Webpack + Babel que implementa a SDK Web
Vue JS
PoC em Vue JS que implementa a SDK Web
Dispositivo
Versão do Android
Resultado do teste
Tipo do teste
ASUS - X01BDA
10.0.0
Físico
ASUS - Z01KD
8.0.1
Físico
HUAWEY - P30 Lite
9.0.0
Físico
LG - K22
10.0.0
Físico
LG - Q6
7.0.0
Físico
MOTOROLA - Moto one macro
10.0.0
Físico
MOTOROLA - Moto G4
6.0.1
Físico
MOTOROLA - Moto G5s Plus
8.1.0
Físico
MOTOROLA - Moto G6 Play
9.0.0
Físico
MOTOROLA - Moto G7 Play
10.0.0
Físico
MOTOROLA - Moto G7 Power
10.0.0
Físico
MOTOROLA - Moto G8 Power Lite
10.0.0
Físico
SAMSUNG - A01
10.0.0
Físico
SAMSUNG - J8 SM J810M
8.1.0
Físico
SAMSUNG - Galaxy A30s SM-A307GT
10.0.0
Físico
SAMSUNG - Galaxy A51
10.0.0
Físico
SAMSUNG - Galaxy A71
11.0.0
Físico
SAMSUNG - Galaxy S20+
11.0.0
Físico
SAMSUNG - s10e
11.0.0
Físico
XIAOMI - Mi 8 Lite
9.0.0
Físico
XIAOMI - Mi 8 Lite
10.0.0
Físico
XIAOMI - Poco X3
10.0.0
Físico
XIAOMI - Redmi Note 8
10.0.0
Físico
XIAOMI - Redmi Note 8 Pro
10.0.0
Físico
XIAOMI - Redmi Note 9
10.0.0
Físico
XIAOMI - Redmi Note 9 Pro
10.0.0
Físico
GOOGLE - Pixel sailfish
8.0.0
Virtual (TestLab)
HUAWEY - ALE L23
5.0.0
Virtual (TestLab)
HUAWEY - ANE LX1
9.0.0
Virtual (TestLab)
HUAWEY - ANE LX2
9.0.0
Virtual (TestLab)
HUAWEY - COR L29
8.1.0
Virtual (TestLab)
HUAWEY - MHA L29
7.0.0
Virtual (TestLab)
HUAWEY - NEO L29
9.0.0
Virtual (TestLab)
SAMSUNG - SC 02J
8.0.0
Virtual (TestLab)
SAMSUNG - SM G891A
9.0.0
Virtual (TestLab)
SAMSUNG - SM G930AZ
8.0.0
Virtual (TestLab)
SAMSUNG - SM G935A
8.0.0
Virtual (TestLab)
SAMSUNG - SM G965N
9.0.0
Virtual (TestLab)
SAMSUNG - SM G965U1
8.0.0
Virtual (TestLab)
SAMSUNG - SM G981U1
10.0.0
Virtual (TestLab)
SAMSUNG - SM J727V
8.1.0
Virtual (TestLab)
SAMSUNG - SM N950F
9.0.0
Virtual (TestLab)
SAMSUNG - SM N950N
9.0.0
Virtual (TestLab)
SAMSUNG - SM N950U
8.0.0
Virtual (TestLab)
SAMSUNG - SM N960F
9.0.0
Virtual (TestLab)
SAMSUNG - SM N960N
9.0.0
Virtual (TestLab)
SAMSUNG - SM N960U1
8.1.0
stLab)
Aqui você encontrará a lista de termos, palavras ou expressões técnicas que são utilizadas nesta documentação, bem como suas respectivas descrições
APIKey
Chave criada no portal da Único, utilizada de forma obrigatória na interface entre sistemas, carrega configurações que serão aplicadas nas integrações. Unica por operação/fluxo e sempre vinculada a filial e conta de serviço.
Arquivo .pem
É um arquivo contendo a chave privada, utilizado na autenticação OAuth2.
Bundle
É um pacote contendo as credenciais para utilização da SDK.
Conta de Serviço
É uma conta impessoal que pertence à aplicação e não a um usuário individual, utilizada na autenticação OAuth2.
Filial
Identificação da filial ou operação do cliente, vinculada na conta de serviço e todos os usuários que terão acesso ao sistema.
Instância
URL da página de acesso ao portal do produto da Único.
Encrypted
Arquivo JWT gerado pela nossa SDK, que será usado na integração. Possui expiração de 10 minutos e podendo ser utilizado apenas uma vez.
Portal IDCloud
Local de acesso ao produto da Unico.
ProcessID
Identificação gerada após a criação do processo.
SDK
É um conjunto de ferramentas ou pacotes que são fornecidos pela Único para facilitar a captura de imagens face e/ou documentos.
Flow
É um atributo que carrega configurações e define a jornada do cliente final no processo de biometria no by Unico.
TenantID
É um identificador exclusivo da sua empresa na Unico.
Capacidades
São as funcionalidades que podem ser utilizadas na plataforma IDCloud.
Drop
É quando uma foto é recusada pelo motor de biometria por baixa qualidade e/ou algum erro do motor.
Nesta seção, você encontrará todas as informações necessárias para a customização do SDK da plataforma Unico IDCloud em suas aplicações Web
O SDK Web permite que algumas personalizações sejam feitas. Abaixo veja todas as personalizações possíveis para este SDK.
É possível configurar a experiência das mensagens informativas dos frames de captura alterando seu idioma. Utilize o enumerado LocaleTypes
que contém os seguintes valores:
LocaleTypes.PT_BR
: para Português(Brasil);
LocaleTypes.ES_MX
: para Espanhol(México);
LocaleTypes.ES_ES
: para Espanhol(Espanha);
LocaleTypes.EN_US
: para Inglês(EUA).
Veja como implementar no exemplo abaixo:
Esta é uma etapa opcional, porém muito recomendada para que o processo de captura tenha a identidade visual da sua empresa.
Para efetuar a customização do frame de captura por meio do Theme Builder basta gerar uma instância da classe UnicoThemeBuilder
e invocar os métodos que customizam cada uma das propriedades do frame de captura, como exemplificados a seguir:
Após a geração do objeto de tema, conforme exemplificado acima, ele dever ser passado como parâmetro para o método setTheme
do builder unicoCameraBuilder
Nesta seção, você encontrará a solução de alguns problemas comuns na integração do SDK da plataforma Unico IDCloud em seus aplicativos Android
O material de ofuscação tem por motivação servir de auxilio para o desenvolvedor passar pelos problemas de ofuscação em seu aplicativo.
O ofuscador do cliente pode afetar o funcionamento do SDK, é necessário que o mesmo não ofusque o código do SDK.
A Unico se isenta da responsabilidade em relação à conflitos de ofuscação com a SDK.
O ofuscamento é um processo de transformar o bytecode em uma forma menos legível por humanos, dificultando assim a engenharia reversa.
Esse processo consiste em remover informações relacionadas a depuração como tabelas de variáveis, número de linhas e renomear os pacotes, classes e métodos.
Ao embarcar a SDK Adroid na aplicação podem ocorrer falhas.
Quando o ofuscamento foi realizado via DexGuard, ao ocorrer a falha utilize as regras:
Quando o ofuscamento foi realizado via ProGuard, ao ocorrer a falha utilize as regras:
bitcode
na distribuição de aplicativos usando Xcode 16Após o lançamento da versão oficial do Xcode 16 no dia 17 de setempro de 2024 e com a sua utilização para distribuição de aplicativos na AppStore, verificamos um bloqueio ao utilizar a SDK iOS sinalizando o uso de bitcode
em duas dependências internas ao utilizar o Cocoapods
como gerenciador de dependencias internas, são elas o DeviceProfiling
e UnicoSdkLogger
. A fim de não bloquear novos lançamentos é possível aplicar o seguinte passo-a-passo até a sua definitiva correção em uma release futura da SDK iOS:
Abrir arquivo Podfile
;
Inserir as linhas a seguir após comando post_install do |installer|
e antes do ultimo end
:
2.1. Caso já haja algum código, insira antes do trecho existente;
2.2. Caso já faça a remoção do bitcode
manualmente, adicionar os caminhos explicitamente citados em framework_paths
;
Caso não haja o comando post_install do |installer|
no arquivo Podfile
, inserir-lo confrme a seguir antes do último end
:
Nesta seção, você encontrará todas as informações necessárias para o tratamento dos erros do SDK da plataforma Unico IDCloud em seus aplicativos Flutter
Este objeto é retornado sempre que ocorre um erro no SDK Flutter.
getCode()
Método utilizado para obter o código de erro ocorrido
getDescription()
Método utilizado para obter a descrição de erro ocorrido
É disponibilizado a seguir a lista de possíveis códigos de erro do SDK Flutter:
73001
Context invalid
73002
Did not grant permission to open camera
73003
The lest API is 21(LOLLIPOP)
73004
Could not find implementation interface callback iAcessoBioSelfie
73005
Could not find implementation interface callback iAcessoBioDocument
73006
Unable to open camera on emulators
73100
Unable to connect to internet
73200
Please inform the json file name
73202
Unable to parse json file
73300
Unable to get unico authentication object
73301
Unable to parse object
73302
Could not find the unico token
73303
Current host is not registered
73400
Could not initialize camera
73500
Unable to get session token, service response error
73501
Unable to parce object
73502
Could not get session token
73701
Could not find active liveness import
73702
Unable to initialize active liveness in production mode
73703
Unable to get active liveness session
73704
The user pressed the cancel button and did not complete the Session.
73705
The Session was not performed successfully and a FaceScan was not generated. In general, other statuses will be sent to the
73706
The camera access is prevented because either the user has explicitly denied permission or the user's device is configured to
73707
The Session was cancelled due to the app being terminated, put to sleep, an OS notification, or the app was placed in the
73708
The Session was cancelled because device is in landscape mode. The user experience of devices in these orientations is poor
73709
The Session was cancelled because device is in reverse portrait mode. The user experience of devices in these orientations is
73710
The Session was cancelled because the user was unable to complete a Session in the default allotted time or the timeout set
73712
The Session was cancelled due to memory pressure.
73712
The Session was cancelled because your App is not in production and requires a network connection.
73713
The Session was cancelled because your key needs to be validated again.
73714
The Session was cancelled because the developer-configured encryption key was not valid.
73715
The Session was cancelled because not all guidance images were configured.
73716
The Session was cancelled because SDK was unable to start the camera on this device.
73717
The Session was cancelled because the user was in a locked out state.
73718
The Session was cancelled because of an unknown and unexpected error. SDK leverages a variety of iOS APIs including camera,
73719
The Session cancelled because user pressed the Get Ready screen subtext message. Note: This functionality is not available by
73800
Could not build encrypted key
Endpoint para obter o conjunto probatório da assinatura no by Unico. Somente para fluxos com assinatura eletrônica.
ID do documento.
Possuir o Developer SDK do instalado
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Fonte: , , .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da .
Endpoint para criar um novo processo de prova de vida isolada no by Client.
Access-token válido.
APIKEY válida com a capacidade prova de vida habilitada.
Informações do usuário.
o ID da filial onde o processo será criado. Caso haja somente uma filial associada a conta de serviço, não há a necessidade de passar este parâmetro. Caso haja separação de processos por filial, você receberá os IDs das filiais do time Unico.
35d734c4-7fbb-4b2f-a1dc-7e1575514819
Arquivo encrypted gerado pelo SDK.
/9j/4AAQSkZJR...
Endpoint para criar um novo processo de prova de vida + verificação de identidade no by Client.
Access-token válido.
APIKEY válida com as capacidades prova de vida + verificação de identidade habilitadas.
Informações do usuário.
Caso de uso da operação.
Onboarding
o ID da filial onde o processo será criado. Caso haja somente uma filial associada a conta de serviço, não há a necessidade de passar este parâmetro. Caso haja separação de processos por filial, você receberá os IDs das filiais do time Unico.
35d734c4-7fbb-4b2f-a1dc-7e1575514819
Arquivo encrypted gerado pelo SDK ou base64 (caso não utilize a Prova de vida).
/9j/4AAQSkZJR...
Endpoint para buscar o resultado de um processo de prova de vida + verificação de identidade + score de risco no by Client.
ID do processo.
Access-token válido.
APIKEY válida com as capacidades prova de vida + verificação de identidade + score de risco habilitadas.
Endpoint para criar um novo processo de prova de vida + verificação de identidade + score de risco no by Client.
Access-token válido.
APIKEY válida com as capacidades prova de vida + verificação de identidade + score de risco habilitadas.
Informações do usuário.
Caso de uso da operação.
Onboarding
o ID da filial onde o processo será criado. Caso haja somente uma filial associada a conta de serviço, não há a necessidade de passar este parâmetro. Caso haja separação de processos por filial, você receberá os IDs das filiais do time Unico.
35d734c4-7fbb-4b2f-a1dc-7e1575514819
Arquivo encrypted gerado pelo SDK ou base64 (caso não utilize a Prova de vida).
/9j/4AAQSkZJR...
Endpoint para criar um novo processo de prova de vida + validação 1:1 no by Client.
Access-token válido.
APIKEY válida com as capacidades prova de vida + validação 1:1 habilitadas.
Informações do usuário.
Identificador do processo que foi gerado durante a criação da transação biométrica, cuja foto será usada para comparação.
80371b2a-3ac7-432e-866d-57fe37896ac6
o ID da filial onde o processo será criado. Caso haja somente uma filial associada a conta de serviço, não há a necessidade de passar este parâmetro. Caso haja separação de processos por filial, você receberá os IDs das filiais do time Unico.
35d734c4-7fbb-4b2f-a1dc-7e1575514819
Arquivo encrypted gerado pelo SDK ou base64 (caso não utilize a Prova de vida).
/9j/4AAQSkZJR...
Endpoint para buscar os documentos de um usuário para serem reaproveitados no by Client.
Valor do identificador do usuário (ex: Valor do CPF). Deve conter 11 caracteres e ser enviado sem pontos ou traços.
12345678909
Tipo do documento (exemplo: BR_CPF).
BR_CPF
Access-token válido.
APIKEY válida com a capacidade reaproveitamento e captura de documentos habilitada.
Endpoint para criar um novo processo de documentos no by Client.
Access-token válido.
APIKEY válida com a capacidade reaproveitamento e captura de documentos habiitada.
Informações do usuário.
Informações sobre o documento que será capturado.
Endpoint para criar um novo processo de prova de vida + verificação de identidade + alerta de comportamento no by Client.
Access-token válido.
APIKEY válida com as capacidades prova de vida + verificação de identidade + alerta de comportamento habilitadas.
Informações do usuário.
Caso de uso da operação.
Onboarding
o ID da filial onde o processo será criado. Caso haja somente uma filial associada a conta de serviço, não há a necessidade de passar este parâmetro. Caso haja separação de processos por filial, você receberá os IDs das filiais do time Unico.
35d734c4-7fbb-4b2f-a1dc-7e1575514819
Arquivo encrypted gerado pelo SDK ou base64 (caso não utilize a Prova de vida).
/9j/4AAQSkZJR...
Endpoint para buscar o resultado de um processo de prova de vida + verificação de identidade + alerta de comportamento + score de risco no by Client.
ID do processo.
Access-token válido.
APIKEY válida com as capacidades prova de vida + verificação de identidade + alerta de comportamento + score de risco habilitadas.
Endpoint para criar um novo processo de prova de vida + verificação de identidade + alerta de comportamento + score de risco no by Client.
Access-token válido.
APIKEY válida com as capacidades prova de vida + verificação de identidade + alerta de comportamento + score de risco habilitadas.
Informações do usuário.
Caso de uso da operação.
Onboarding
o ID da filial onde o processo será criado. Caso haja somente uma filial associada a conta de serviço, não há a necessidade de passar este parâmetro. Caso haja separação de processos por filial, você receberá os IDs das filiais do time Unico.
35d734c4-7fbb-4b2f-a1dc-7e1575514819
Arquivo encrypted gerado pelo SDK ou base64 (caso não utilize a Prova de vida).
/9j/4AAQSkZJR...
Endpoint para criar um novo processo de prova de vida + validação 1:1 + Alerta de comportamento no by Client.
Access-token válido.
APIKEY válida com as capacidades prova de vida + validação 1:1 + alerta de comportamento habilitadas.
Informações do usuário.
Identificador do processo que foi gerado durante a criação da transação biométrica, cuja foto será usada para comparação.
80371b2a-3ac7-432e-866d-57fe37896ac6
o ID da filial onde o processo será criado. Caso haja somente uma filial associada a conta de serviço, não há a necessidade de passar este parâmetro. Caso haja separação de processos por filial, você receberá os IDs das filiais do time Unico.
35d734c4-7fbb-4b2f-a1dc-7e1575514819
Arquivo encrypted gerado pelo SDK ou base64 (caso não utilize a Prova de vida).
/9j/4AAQSkZJR...
false
Falha ao consultar o arquivo do documento.
Documento não existe.
O id do documento informado não existe
Endpoint para criar um novo processo no by Unico.
Define para onde o usuário será redirecionado ao fim do processo. Valores possíveis são: Uma URL https para redirecionar páginas web (ex: https://developers.unico.io/callback), uma URL Schema para redirecionamento em aplicações móveis nativas (ex: br.com.meupacote.app://callback - o callback precisa estar registrado em sua aplicação móvel) ou sem redireciomento (incluir apenas a '/').
/
Tipo de fluxo. Veja detalhes dos fluxos na seção 'Visão Geral' nesta mesma documentação (alguns fluxos foram depreciados e você pode consultá-los também na seção 'Visão Geral').
idunicosign
Available options: É o ID da filial onde o processo será criado. Caso haja somente uma filial associada a conta de serviço, não há a necessidade de passar este parâmetro. Caso haja separação de processos por filial, você receberá os IDs das filiais do time Unico.
60837cd3-ed3c-4038-ad7c-0a85ad64b03a
Identificação do token biométrico. Obrigatório para o flow "idtoken" e deve-se utilizar um id de um processo concluído de qualquer outro flow de verificação de identidade.
60837cd3-ed3c-4038-ad7c-0a85ad64b03a
Informações do usuário.
Propósito do processo.
creditprocess
Available options: É o tempo de expiração do processo em segundos a partir de sua criação. Deve ser passado um valor no padrão "10080s", com "s" no fim. Caso este parâmetro não seja informado, será usado o valor default de 7 dias.
3600s
Informações contextuais sobre o processo. Estes campos são apresentados na jornada para o usuário final, melhorando a conversão por contextualizá-lo do motivo da captura da biometria.
Array que contém as informações dos documentos. Todos os itens do array tornam-se obrigatórios caso utilize algum flow com assinatura eletrônica.
3
process id is invalid
Quando o id de processo é inválido.
5
error getting process: rpc error: code = NotFound desc = process not found
Quando o id do processo não foi encontrado
99999
Internal failure! Try again later
Quando há algum erro interno.
3
process id is invalid
Quando o id de processo é inválido.
7
no permission
Quando a conta de serviço não possui a permissão para obter a selfie
5
error getting process: rpc error: code = NotFound desc = process not found
Quando o id do processo não foi encontrado
99999
Internal failure! Try again later
Quando há algum erro interno.
3
process id is invalid
Quando o id de processo é inválido.
7
no permission
Quando a conta de serviço não possui a permissão para obter a selfie
5
error getting process: rpc error: code = NotFound desc = process not found
Quando o id do processo não foi encontrado
99999
Internal failure! Try again later
Quando há algum erro interno.
20900
O base64 informado não é válido.
O parâmetro base64 é inválido. Possíveis causas: Não é uma imagem ou é uma tentativa de injection.
20807
A imagem precisa estar no padrão HD ou possuir uma resolução superior a 640 x 480.
A resolução da imagem enviada é muito pequena.
20507
O parâmetro subject.code é inválido.
CPF fora do padrão ou inexistente.
20506
O base64 informado é muito grande. O tamanho máximo suportado é até 800kb.
Quando o e-mail informado não é vA imagem é muito grande. A imagem pode ser comprimida para JPEG92 sem perda de qualidade.
20505
O base64 informado não é suportado. Os formatos aceitos são png, jpeg e webp.
Quando o telefone informado não é válBase64 inválido. Possíveis causas: não é uma imagem válida ou prefixo inválido.
20009
O parâmetro imagebase64 não foi informado.
Falta o parâmetro imagebase64, que contém a selfie da pessoa.
20006
O parâmetro subject.name não foi informado.
Falta o parâmetro subject.name, que contém o nome da pessoa.
20005
O parâmetro subject.code não foi informado.
Falta o parâmetro subject.code, que contém o cpf da pessoa.
20004
O parâmetro subject não foi informado.
Falta o parâmetro subject, que contém os dados da pessoa (cpf, nome).
20003
The request body is missing or invalid.
Payload nulo ou inválido.
20002
O parâmetro APIKey não foi informado.
Falta o parâmetro APIKEY no cabeçalho da requisição.
20001
O parâmetro authtoken não foi informado
Falta o parâmetro do token de integração no cabeçalho da requisição.
10508
The JWT with the captured face has already been used.
O .jwt só pode ser usado uma única vez.
10507
The JWT with the captured face is expired.
JWT expirado. O .jwt deve ser enviado em até 10 minutos.
10506
The bundle is invalid.
Bundle inválido. APIKEY usa um método de segurança e esta solicitação não atende aos requisitos de segurança (SDK).
30017
Jwt header is an invalid JSON.
Quando o access-token utilizado contém caracteres errados.
10502
O token informado está expirado.
Quando o access-token utilizado expirou
10501
O token informado é inválido.
O token de autenticação é inválido.
10201
O AppKey informado é inválido.
O parâmetro APIKEY não foi informado ou não existe.
99999
Internal failure! Try again later
Quando há algum erro interno.
20023
O parâmetro processId não foi informado.
Falta o parâmetro id do processo.
20002
O parâmetro APIKey não foi informado.
Falta o parâmetro APIKEY no header da requisição.
20001
O parâmetro authtoken não foi informado.
QFalta o parâmetro do token de integração no header da requisição.
50001
O processo informado não foi encontrado.
O processo não existe na base de dados.
30017
O usuário não tem permissão para executar está ação.
Quando o access-token utilizado contém caracteres errados.
10502
O token informado está expirado.
Quando o access-token utilizado expirou.
10501
O token informado é inválido.
O token de autenticação é inválido.
10201
O AppKey informado é inválido.
O parâmetro APIKEY não foi informado ou não existe.
99999
Internal failure! Try again later
Quando há algum erro interno.
Not Found - Documento não existe
404
null
false
Falha ao consultar o arquivo do documento.
Documento não existe.
O id do documento informado não existe