Skip to main content

Visão Geral

Este guia mostra como integrar o fluxo de verificação KYC da Gu1 em seus aplicativos móveis (Android, iOS, React Native, Flutter) e aplicações web (React, Vue, vanilla JS). A verificação é executada em um WebView/iframe apontando para uma URL segura gerada pelo seu backend.
Este guia assume que você já configurou a integração do seu backend com a API da Gu1. Caso contrário, comece com a Visão Geral da API KYC.

Visão Geral da Arquitetura

Pontos-Chave:
  • Seu backend gera a URL de verificação (nunca exponha chaves de API no cliente)
  • Seu frontend abre a URL no WebView/iframe
  • A Gu1 envia webhooks para seu backend quando a verificação é concluída
  • Seu frontend faz polling no seu backend para detectar a conclusão

Melhores Práticas de Segurança

CRÍTICO: Nunca exponha as credenciais da API da Gu1 ou IDs de workflow no código do lado do cliente. Sempre gere URLs de verificação a partir do seu backend seguro.

✅ FAZER

Gere URLs de verificação que expirem rapidamente (15-30 minutos). Se o usuário não iniciar dentro desse tempo, gere uma nova.
Ao receber webhooks da Gu1:
  1. Extrair apenas os dados necessários
  2. Atualizar o status do usuário no seu BD
  3. Não armazenar dados sensíveis de verificação a longo prazo
Sempre verifique se os webhooks são da Gu1 usando assinaturas HMAC.Saiba mais sobre segurança de webhooks →

❌ NÃO FAZER

Por que é perigoso:
  • Chaves de API expostas em bundles de app podem ser extraídas
  • Qualquer pessoa pode criar validações em seu nome
  • Impossível rotacionar chaves comprometidas sem atualizações do app
Em vez disso: Sempre solicite uma URL nova do seu backend quando necessário.
Em vez disso: Confie apenas em webhooks recebidos pelo seu backend.

Integração Móvel

Android (Kotlin)

Permissões (AndroidManifest.xml):

iOS (Swift)

Permissões (Info.plist):

Kotlin Multiplatform (KMP)

Perfeito para compartilhar lógica entre Android e iOS:

React Native

Permissões:
  • Adicione permissões de câmera ao AndroidManifest.xml e Info.plist
  • Instalar: npm install react-native-webview

Flutter

Dependências (pubspec.yaml):
Permissões:
  • Android: Adicione permissão de câmera ao AndroidManifest.xml
  • iOS: Adicione descrição de uso de câmera ao Info.plist

Integração Web

React


Vue 3


Plain HTML/JavaScript (Vanilla)


Detecção de Conclusão do Fluxo

O WebView/iframe não pode notificar diretamente seu app quando a verificação é concluída. A UI de verificação da Gu1 é executada em isolamento por razões de segurança.

Padrão Recomendado: Polling ao Backend

Seu frontend faz polling no seu backend, que recebe webhooks da Gu1: Exemplo de endpoint do backend:
Polling do frontend (todas as plataformas):

Alternativa: WebSockets (Avançado)

Para melhor UX, use WebSockets para enviar atualizações em vez de polling:

Manipulação de Webhooks

Seu backend recebe webhooks da Gu1 quando a verificação é concluída.

Guia de Integração de Webhooks

Veja o guia completo de integração de webhooks com exemplos de código, segurança e estruturas de payload

Eventos-Chave de Webhook

Manipulador mínimo de webhook:

Exemplo de Fluxo Completo

Vamos ver um exemplo completo de ponta a ponta:

1. Backend: Gerar URL

2. Frontend: Abrir Verificação

3. Backend: Receber Webhook

4. Frontend: Detectar Conclusão


Testes

Ambiente Sandbox

Use o modo sandbox para testes:
No modo sandbox:
  • Nenhum documento real é necessário
  • Você pode simular diferentes resultados
  • Webhooks ainda disparam normalmente

Testando Diferentes Resultados

Para testar cenários de rejeição/expiração, use diferentes dados de teste no modo sandbox.

Solução de Problemas

Possíveis causas:
  • URL expirou (gerar uma nova)
  • JavaScript desabilitado no WebView
  • Problemas de conectividade de rede
Soluções:
  • Habilitar JavaScript: settings.javaScriptEnabled = true
  • Verificar se a URL é válida e não expirou
  • Testar URL em navegador normal primeiro
Possíveis causas:
  • Permissões de câmera faltando
  • Reprodução de mídia requer gesto do usuário
Soluções:Android:
iOS:
Web:
Possíveis causas:
  • Webhook não recebido pelo backend
  • Verificação de assinatura de webhook falhou
  • Banco de dados não está sendo atualizado
Soluções:
  • Verificar logs de webhook no painel da Gu1
  • Verificar implementação de assinatura de webhook
  • Adicionar logging ao manipulador de webhook
  • Testar endpoint de webhook manualmente
Possíveis causas:
  • Iluminação fraca para fotos de documentos
  • Tipo de documento não suportado
  • Problemas técnicos
Soluções:
  • Fornecer instruções claras antes de começar
  • Mostrar exemplos de fotos boas vs ruins
  • Implementar timeout (15-20 minutos)
  • Permitir ao usuário sair e tentar novamente

Resumo de Melhores Práticas

Segurança em Primeiro Lugar

  • Nunca expor chaves de API no cliente
  • Sempre gerar URLs a partir do backend
  • Verificar assinaturas de webhook
  • Usar HTTPS em todos os lugares

Experiência do Usuário

  • Mostrar estados de carregamento
  • Fornecer instruções claras
  • Tratar erros com elegância
  • Permitir nova tentativa em caso de falha

Confiabilidade

  • Implementar polling com intervalos razoáveis
  • Tratar falhas de rede
  • Definir timeouts apropriados
  • Testar todas as plataformas completamente

Conformidade

  • Não armazenar dados sensíveis de verificação
  • Usar padrão Process-and-Purge
  • Respeitar políticas de retenção de dados
  • Documentar sua integração

Próximos Passos

Visão Geral da API KYC

Aprenda sobre a API KYC e integração do backend

Integração de Webhooks

Configure webhooks para receber resultados de verificação

Guia de Fluxo Completo

Veja o fluxo completo de verificação KYC

Guia de Segurança

Implemente segurança de webhooks e verificação HMAC