SDK web
Exiba uma verificação da Certivant dentro do seu próprio site com uma única tag de script — em modal ou inline, com eventos ready, step, complete, cancel e error, verificação estrita de origem e suporte a câmera.
O SDK web da Certivant é um pequeno script, sem dependências, que abre uma verificação dentro da sua página — em um modal ou inline em um contêiner — e informa ao seu código quando o solicitante chega a cada etapa e quando termina. O solicitante nunca sai do seu site, e nenhum dado pessoal passa pela sua página: o SDK informa apenas o nome de uma etapa, um status final e um id público.
Ele incorpora as mesmas páginas hospedadas que você já pode enviar por link:
| Você informa | Abre | Página |
|---|---|---|
token | a verificação hospedada | /verify/<token> |
formSlug | um formulário público | /forms/<slug> |
liveIdToken | a página de captura do Live ID | /live-id/<token> |
url | qualquer um dos anteriores, como link completo | deve estar em uma origem confiável |
1. Permita o seu site
Os navegadores só exibem uma página em um frame quando o responsável pela página concorda. Em Configurações → KYC → Incorporação, adicione as origens dos sites que vão incorporá-la — uma por linha:
https://app.example.com
https://*.example.org
http://localhost:3000
- Uma origem é
https://hostmais uma porta opcional, sem caminho. - Um
*.no início permite todos os subdomínios (https://*.example.org), nunca o domínio puro e nunca um sufixo isolado como*.com. httpsimples é aceito apenas paralocalhost,127.0.0.1e[::1].- Até 20 origens. Qualquer outro site verá a mensagem de erro do navegador (
refused to connect).
A lista se aplica apenas aos links da sua organização. A Certivant a lê a partir do token ou do slug do formulário do link, então uma organização nunca pode permitir a exibição das páginas de outra.
2. Crie a verificação
Crie a verificação com a API REST e obtenha o token hospedado dela (kvs_…) — veja Sessões. Faça isso no seu servidor: nunca coloque uma chave de API no navegador.
3. Adicione o script e abra-o
<script src="https://app.certivant.com/embed/certivant.js"></script>
<button id="verify">Verify my identity</button>
<script>
document.getElementById("verify").addEventListener("click", function () {
var flow = Certivant.open({
token: "kvs_…", // from your server
onReady: function () { console.log("loaded"); },
onStep: function (e) { console.log("step", e.step); },
onComplete: function (e) { console.log("done", e.status, e.requestId); },
onCancel: function () { console.log("closed"); },
onError: function (e) { console.error(e.code, e.message); }
});
});
</script>
A origem do script é a origem da Certivant que ele enquadra. Se você usar um domínio personalizado, carregue o script a partir dele ou passe origin: "https://id.yourbrand.com".
Inline
<div id="verification"></div>
<script>
Certivant.open({
mode: "inline",
container: "#verification", // element or selector
formSlug: "customer-onboarding",
locale: "fr",
minHeight: 640
});
</script>
O frame cresce conforme o conteúdo (eventos resize) e nunca fica menor que minHeight.
Opções
| Opção | Tipo | Observações |
|---|---|---|
token / formSlug / liveIdToken / url | string | Um deles é obrigatório. |
formKey | string | Chave de acesso para formulários que exigem uma. |
origin | string | Origem da Certivant a ser enquadrada. Padrão: de onde o script foi carregado. |
trustedOrigins | string[] | Origens extras para as quais url pode apontar. |
mode | "modal" ou "inline" | Padrão modal. |
container | Element ou string | Obrigatório para inline. |
locale | string | Idioma de um link de formulário público (fr, de…). Verificações hospedadas seguem o idioma do navegador do solicitante. |
theme | "light" ou "dark" | Apenas para o frame do modal. |
title, closeLabel | string | Rótulos de acessibilidade (traduza-os para o seu site). |
closeOnBackdrop | boolean | Fecha ao clicar no fundo. Padrão false. |
minHeight | number | Altura mínima inline em px. Padrão 600. |
loadTimeoutMs | number | Tempo de espera antes de informar not_ready. Padrão 20000. |
Certivant.open() retorna um handle: close() (informa cancel, a menos que o fluxo já tenha sido concluído), destroy() (silencioso), on(event, fn), off(event, fn), além de iframe e origin.
Eventos
| Evento | Callback | Payload |
|---|---|---|
ready | onReady | nenhum — a página carregou e exibe o fluxo. |
step | onStep | { step, index?, total? } — por exemplo intro, upload, review; formulários informam page-1… |
complete | onComplete | { status, requestId? } — status é approved, rejected, escalated, submitted ou pending-review. |
cancel | onCancel | nenhum — o solicitante fechou o modal antes de terminar. |
error | onError | { code, message } — link_expired, link_cancelled, unavailable, invalid_options, untrusted_origin, not_ready. |
resize | onResize | { height } — o modo inline cuida disso para você. |
complete significa que o solicitante concluiu a parte dele. Uma verificação hospedada informa submitted: a decisão é tomada depois, então confie nos webhooks kyc.request.approved / kyc.request.rejected no seu servidor, nunca em um evento do navegador. A página de captura do Live ID é a exceção — ela responde imediatamente com approved (com correspondência) ou rejected.
not_ready é disparado quando a página não informou ready após 20 segundos. A causa comum é que a origem do seu site não está em Incorporação, ou que o token já foi usado.
Modelo de segurança
- Quem pode enquadrar uma página. O proxy define
Content-Security-Policy: frame-ancestors 'self' <suas origens>(e removeX-Frame-Options) nos seus links hospedados, formulários e páginas do Live ID. Um token desconhecido, um erro ou uma lista vazia deixam essas páginas impossíveis de enquadrar. Páginas do painel e de login nunca podem ser enquadradas. - Em quem o SDK confia. A URL do frame é construída apenas a partir da origem do próprio SDK, de
originou detrustedOrigins. Uma mensagem só é aceita se vier da janela desse iframe, da origem exata que foi enquadrada, e for um envelope versionado{ "source": "certivant", "version": 1, … }. Todo o resto é ignorado. - Com quem a página conversa. A página enquadrada envia mensagens apenas para a origem pai que o SDK anunciou (
?parentOrigin=), e somente quando essa origem está na sua lista permitida (ou é igual à origem da própria página) e, quando o navegador expõe a informação, corresponde alocation.ancestorOrigins. Nunca envia com destino*. - Nenhum dado pessoal. Os eventos nunca incluem nomes, dados de documentos, pontuações ou imagens.
Câmera, microfone e localização
O SDK define allow="camera; microphone; geolocation; clipboard-write" no iframe, o que delega essas permissões à página incorporada. O Permissions-Policy da própria Certivant as permite para as suas páginas (camera=(self)…), então os dois lados concordam. Seu site precisa ser servido por HTTPS (ou localhost) e não pode enviar um cabeçalho Permissions-Policy que bloqueie camera ou microphone.
Iframe simples
Sem o SDK, você pode usar um iframe comum — permita primeiro a sua origem e adicione o atributo allow:
<iframe
src="https://app.certivant.com/verify/kvs_…?embed=1&parentOrigin=https%3A%2F%2Fyour-site.example"
allow="camera; microphone; geolocation; clipboard-write"
style="width:100%;height:760px;border:0"
></iframe>
Os eventos são enviados ao parentOrigin que você anunciar, se ele estiver permitido; escute com window.addEventListener("message", …) e verifique você mesmo event.origin, event.source e o envelope.
Solução de problemas
| Sintoma | Correção |
|---|---|
"refused to connect" / frame em branco | Adicione a origem do seu site em Configurações → KYC → Incorporação (confira o esquema e a porta). |
Erro not_ready | Mesma correção acima, ou o token já foi consumido ou expirou. |
| A câmera não inicia | Sirva a sua página por HTTPS; verifique se nenhum cabeçalho Permissions-Policy do seu site bloqueia camera; mantenha o atributo allow. |
| Nenhum evento chega | A página só envia mensagens quando a sua origem está permitida e ?embed=1&parentOrigin=… está presente — use o SDK ou adicione os parâmetros você mesmo. |
| Domínio personalizado | Carregue o script a partir dele ou passe origin. |
Versionamento
O script informa a sua versão em Certivant.version e no cabeçalho de resposta X-Certivant-SDK-Version. O envelope de mensagem traz version: 1; acréscimos dentro da versão 1 são retrocompatíveis, e uma mudança incompatível será publicada como versão 2, mantendo a versão anterior disponível. O carregador fica em cache por alguns minutos.
Para aplicativos nativos, veja WebView móvel.
Gatilhos
Referência completa de cada gatilho dos Fluxos de automação da Certivant — quando cada evento é disparado, seu contexto de dados, payloads de exemplo, configuração de assunto e escopo e padrões de filtro DSL.
WebView móvel
Exiba uma verificação da Certivant em um aplicativo React Native ou Flutter — configurações do WebView, permissões de câmera e os mesmos eventos do SDK web, com código de exemplo.