Pular para o conteúdo principal

👤 Fluxo de Primeiro Acesso

Este guia apresenta o fluxo completo para cadastro de novos usuários no sistema.

📋 Visão Geral

O fluxo de primeiro acesso permite que novos usuários criem sua conta no sistema, passando por validações de segurança e aceitando termos de uso.

Pré-requisitos

Antes de iniciar o fluxo, certifique-se de ter:

  • CPF e data de nascimento do cliente
  • Informações do dispositivo (ID, modelo, sistema operacional)
  • Nome do aplicativo configurado no sistema

URLs Base:

  • Homologação: https://apihml.credsystem.com.br/api/v1
  • Produção: https://api.credsystem.com.br/api/v1
📚 Recursos Adicionais

1️⃣ Validar Dados do Cliente

Valide os dados básicos do cliente para iniciar o processo de cadastro.

Endpoint

POST {baseUrl}/identificacao/dados
Content-Type: application/json

Request Body

{
"app": "APP_NAME",
"fluxo": "PRIMEIRO_ACESSO",
"cliente": {
"cpf": "12345678909",
"dataNascimento": "1990-01-01"
},
"dispositivo": {
"dispositivoId": "device123",
"idSistemaOperacional": "2",
"versaoSistemaOperacional": "12",
"modelo": "Samsung Galaxy",
"versaoApp": "1.0.0"
}
}

Parâmetros

CampoTipoObrigatórioDescrição
appstringNome do aplicativo configurado
fluxostringFixo: "PRIMEIRO_ACESSO"
cliente.cpfstringCPF do cliente (apenas números)
cliente.dataNascimentostringData de nascimento (YYYY-MM-DD)
dispositivo.dispositivoIdstringID único do dispositivo
dispositivo.idSistemaOperacionalstring1=iOS, 2=Android, 3=Outros
dispositivo.versaoSistemaOperacionalstringVersão do SO (ex: "12", "17.2")
dispositivo.modelostringModelo do dispositivo
dispositivo.versaoAppstringVersão do aplicativo

Resposta de Sucesso

A API retorna um access_token temporário (token de sessão do cliente) que deve ser usado nos próximos passos do fluxo.

200 OK
{
"access_token": "eyJhbGci...",
"token_type": "Bearer",
"expires_in": 900
}
⏱️ Atenção

Este token expira em 15 minutos. Complete o fluxo dentro deste prazo.

Exemplos de Código

curl -X POST "{baseUrl}/identificacao/dados" \
-H "Content-Type: application/json" \
-d '{
"app": "meu-app-private-label",
"fluxo": "PRIMEIRO_ACESSO",
"cliente": {
"cpf": "12345678909",
"dataNascimento": "1990-01-01"
},
"dispositivo": {
"dispositivoId": "device123",
"idSistemaOperacional": "2",
"versaoSistemaOperacional": "12",
"modelo": "Samsung Galaxy",
"versaoApp": "1.0.0"
}
}'

Problemas com este endpoint?

Consulte o 🔧 Troubleshooting - Validar Dados para detalhes de erros e soluções.

2️⃣ Solicitar Link de Biometria

Solicite o link de captura biométrica que será aberto no WebView do aplicativo para validação facial do usuário.

🔐 Motor de Biometria Credsystem

O link retornado por este endpoint deve ser integrado via WebView usando o Motor de Biometria Credsystem. Consulte a documentação por plataforma:

Acesse a Visão Geral do Motor de Biometria para entender o fluxo completo de captura.

Endpoint

POST {baseUrl}/identificacao/biometria
Authorization: Bearer {token-sessao-cliente}
Content-Type: application/json

Request Body

{
"consumidor": "CONSUMIDOR_ID",
"loja": 123456
}

Exemplos de Código

curl -X POST "{baseUrl}/identificacao/biometria" \
-H "Authorization: Bearer {token-sessao-cliente}" \
-H "Content-Type: application/json" \
-d '{"consumidor": "CONSUMIDOR_ID", "loja": 123456}'
📸 Próximo passo após receber o link

Abra o link retornado em um WebView e aguarde o callback de conclusão da captura biométrica antes de avançar para o próximo passo do fluxo.


Problemas com este endpoint?

Consulte o 🔧 Troubleshooting - Solicitar Biometria para detalhes de erros e soluções.

3️⃣ Enviar Token SMS

Solicite o envio de um código de verificação por SMS para o telefone cadastrado do usuário.

Endpoint

POST {baseUrl}/identificacao/token-sms/envio
Authorization: Bearer {token-sessao-cliente}

Exemplos de Código

curl -X POST "{baseUrl}/identificacao/token-sms/envio" \
-H "Authorization: Bearer {token-sessao-cliente}"
📱 SMS

O código enviado tem 6 dígitos e é válido por 5 minutos.


Problemas com este endpoint?

Consulte o 🔧 Troubleshooting - Enviar SMS para detalhes de erros e soluções.

4️⃣ Validar Token SMS

Valide o código de 6 dígitos recebido por SMS.

Endpoint

POST {baseUrl}/identificacao/token-sms
Authorization: Bearer {token-sessao-cliente}
Content-Type: application/json

Request Body

{
"pinCode": "123456",
"analise": {
"userID": "12345678909",
"origem": "APP_NAME",
"deviceID": "device123",
"integrationName": "app-login-pl",
"dadosMaquina": {
"ip": "192.168.0.1",
"fingerPrint": "{fingerprint}"
}
}
}

Parâmetros

CampoTipoObrigatórioDescrição
pinCodestringCódigo de 6 dígitos recebido por SMS
analise.userIDstringCPF do usuário
analise.origemstringNome do aplicativo
analise.deviceIDstringID do dispositivo
analise.integrationNamestringNome da integração
analise.dadosMaquina.ipstringEndereço IP do dispositivo
analise.dadosMaquina.fingerPrintstringFingerprint do dispositivo

Exemplos de Código

curl -X POST "{baseUrl}/identificacao/token-sms" \
-H "Authorization: Bearer {token-sessao-cliente}" \
-H "Content-Type: application/json" \
-d '{
"pinCode": "123456",
"analise": {
"userID": "12345678909",
"origem": "APP_NAME",
"deviceID": "device123",
"integrationName": "app-login-pl",
"dadosMaquina": {"ip": "192.168.0.1", "fingerPrint": "{fingerprint}"}
}
}'
🛡️ Análise de Fraude

O objeto analise contém informações para análise de fraude. Certifique-se de enviar dados precisos do dispositivo.


Problemas com este endpoint?

Consulte o 🔧 Troubleshooting - Validar SMS para detalhes de erros e soluções.

5️⃣ Validar Perguntas de Segurança (Se Aplicável)

Alguns fluxos podem exigir resposta a perguntas de segurança para validação adicional.

Endpoint

POST {baseUrl}/identificacao/perguntas
Authorization: Bearer {token-sessao-cliente}
Content-Type: application/json

Request Body

{
"respostas": [
{
"codigoPergunta": 1,
"resposta": "resposta1"
},
{
"codigoPergunta": 2,
"resposta": "resposta2"
}
]
}

Exemplos de Código

curl -X POST "{baseUrl}/identificacao/perguntas" \
-H "Authorization: Bearer {token-sessao-cliente}" \
-H "Content-Type: application/json" \
-d '{"respostas": [{"codigoPergunta": 1, "resposta": "resposta1"}, {"codigoPergunta": 2, "resposta": "resposta2"}]}'
📋 Condicional

Este passo só é exigido se a API retornar status indicando necessidade de validação adicional.


Problemas com este endpoint?

Consulte o 🔧 Troubleshooting - Validar Perguntas para detalhes de erros e soluções.

6️⃣ Buscar Termo de Aceite

Obtenha o texto completo do termo de uso e política de privacidade que o usuário deve aceitar.

Endpoint

GET {baseUrl}/contratos/termo-aceite
Authorization: Bearer {token-sessao-cliente}

Exemplo de Resposta

{
"termo": {
"id": 123,
"versao": "2.1",
"titulo": "Termos de Uso e Política de Privacidade",
"conteudo": "Texto completo do termo...",
"dataPublicacao": "2025-01-01T00:00:00Z"
}
}

Exemplos de Código

curl -X GET "{baseUrl}/contratos/termo-aceite" \
-H "Authorization: Bearer {token-sessao-cliente}"

Problemas com este endpoint?

Consulte o 🔧 Troubleshooting - Termo de Aceite para detalhes de erros e soluções.

7️⃣ Aceitar Termo

Registre a aceitação do termo pelo usuário na interface do app.

Endpoint

PUT {baseUrl}/contratos/termo-aceite
Authorization: Bearer {token-sessao-cliente}
Content-Type: application/json

Request Body

{
"aceite": true
}

Exemplos de Código

curl -X PUT "{baseUrl}/contratos/termo-aceite" \
-H "Authorization: Bearer {token-sessao-cliente}" \
-H "Content-Type: application/json" \
-d '{"aceite": true}'
⚖️ Legal

Certifique-se de apresentar o termo completo ao usuário e obter consentimento explícito antes de enviar o aceite.


Problemas com este endpoint?

Consulte o 🔧 Troubleshooting - Termo de Aceite para detalhes de erros e soluções.

8️⃣ Criar Senha de Acesso

Finalize o cadastro criando a senha do usuário. Este é o último passo do fluxo.

Endpoint

POST {baseUrl}/usuario/acesso
Authorization: Bearer {token-sessao-cliente}
Content-Type: application/json

Request Body

{
"senha": "SenhaSegura123"
}

Exemplos de Código

curl -X POST "{baseUrl}/usuario/acesso" \
-H "Authorization: Bearer {token-sessao-cliente}" \
-H "Content-Type: application/json" \
-d '{"senha": "SenhaSegura123!"}'
✅ Cadastro Concluído!

Após este passo, o usuário terá seu acesso criado e poderá fazer login normalmente usando CPF e a senha cadastrada.

🔐 Política de Senhas

Recomendações para senhas seguras:

  • Mínimo de 8 caracteres
  • Pelo menos 1 letra maiúscula
  • Pelo menos 1 letra minúscula
  • Pelo menos 1 número
  • Pelo menos 1 caractere especial

Problemas com este endpoint?

Consulte o 🔧 Troubleshooting - Criar/Atualizar Senha para detalhes de erros e soluções.

🔄 Fluxo Completo - Exemplo

async function fluxoPrimeiroAcessoCompleto(dadosCliente, dadosDispositivo) {
try {
// Passo 1: Validar dados
const sessionToken = await iniciarPrimeiroAcesso(
dadosCliente.cpf,
dadosCliente.dataNascimento,
dadosDispositivo
);

// Passo 2: Biometria (opcional)
// const linkBiometria = await solicitarBiometria(sessionToken, consumidorId, lojaId);

// Passo 3: Enviar SMS
await enviarSMS(sessionToken);

// Aguardar usuário digitar código
const pinCode = await aguardarCodigoSMS();

// Passo 4: Validar SMS
await validarSMS(sessionToken, pinCode, dadosDispositivo);

// Passo 5: Perguntas de segurança (se aplicável)
// await validarPerguntas(sessionToken, respostas);

// Passo 6: Buscar termo
const termo = await buscarTermo(sessionToken);

// Exibir termo ao usuário
await exibirTermo(termo);

// Aguardar aceite
const aceitou = await aguardarAceite();

if (!aceitou) {
throw new Error('Usuário recusou o termo de aceite');
}

// Passo 7: Aceitar termo
await aceitarTermo(sessionToken);

// Passo 8: Criar senha
const senha = await solicitarSenha();
await criarSenha(sessionToken, senha);

console.log('✅ Cadastro concluído com sucesso!');

// Redirecionar para tela de login
navegarParaLogin();

} catch (error) {
console.error('Erro no cadastro:', error);
exibirErro(error.message);
}
}

⚠️ Tratamento de Erros

CódigoDescriçãoAção Recomendada
400Dados inválidosVerifique CPF, data de nascimento e dados do dispositivo
401Token expiradoReinicie o fluxo do início
404Cliente não encontradoVerifique se o CPF está correto
409Cliente já cadastradoRedirecione para tela de login
422Código SMS inválidoSolicite novo código ou permita reenvio

🎓 Recursos Adicionais

📚 Recursos Relacionados