Integração Embedded
Integre o fluxo de empréstimo consignado diretamente no seu site ou aplicativo. O widget embedded oferece uma experiência nativa para o seu usuário sem redirecionamentos externos.
Como funciona
Ao integrar o widget, o fluxo completo de empréstimo consignado é renderizado dentro do seu ambiente — seja em uma página web via iframe ou dentro de um app nativo via WebView.
O widget:
Exibe apenas o fluxo de originação (sem menus, headers ou footers extras)
Comunica eventos de ciclo de vida ao seu sistema (conclusão, erro, expiração)
Delega a abertura de URLs externas (assinatura digital, termos) ao seu app
Pré-requisitos
baseUrl
URL base do webapp fornecida durante o onboarding (ex: https://cliente.consignado.giro.tech). Cada originador possui uma URL dedicada com sua identidade visual.
publicId (opcional)
Identificador público do colaborador. Se informado, o widget inicia o fluxo direto para o colaborador. Se omitido, o widget exibe o formulário de cadastro.
Domínio autorizado
Seu domínio precisa estar liberado no CSP do servidor — solicite à equipe de integração
Como funciona a identificação
Originador — cada originador possui um deploy exclusivo com URL, logotipo, cores e marca próprios. O originador é identificado automaticamente pela
baseUrl.Colaborador (
publicId) — identificador único do colaborador no sistema.
Recomendado: cadastre o colaborador previamente via API server-to-server (POST /v1/origination/employees) e abra o widget já com o publicId. Isso oferece a melhor experiência ao usuário — ele entra direto no fluxo sem precisar preencher cadastro.
Se não for possível obter o publicId antecipadamente, o widget também funciona sem ele. Nesse caso, o próprio widget exibirá o formulário de cadastro (CPF, nome, telefone) e, após o registro, seguirá o fluxo normalmente.
Integração Web (iframe)
Opção 1 — Usando o SDK (recomendado)
O SDK gt-embed.js abstrai a criação do iframe e o gerenciamento de eventos.
1. Adicione um container na sua página:
2. Carregue o SDK e inicialize o widget:
3. Para remover o widget quando necessário:
Parâmetros do SDK
containerId
string
Sim
ID do elemento HTML onde o iframe será inserido
baseUrl
string
Sim
URL base do webapp
publicId
string
Não
Identificador público do colaborador. Se omitido, o widget exibe o cadastro.
style
object
Não
Estilos CSS customizados para o iframe
onReady
function
Não
Callback quando o widget está pronto
onFlowComplete
function
Não
Callback quando o fluxo é concluído
onFlowError
function
Não
Callback quando ocorre erro
onAuthExpired
function
Não
Callback quando a sessão expira
onOpenUrl
function
Não
Callback para abertura de URLs externas
onNavigate
function
Não
Callback para solicitação de navegação
Métodos retornados
destroy()
Remove o iframe e limpa os event listeners
getIframe()
Retorna o elemento <iframe> DOM
Opção 2 — Integração manual (sem SDK)
Se preferir controle total, monte o iframe e escute os eventos diretamente.
Com publicId (colaborador existente):
Sem publicId (novo colaborador — exibe cadastro):
Sempre valide a origem (event.origin) das mensagens recebidas via postMessage para evitar processamento de mensagens de terceiros.
Integração Mobile (WebView)
Android — Kotlin
O nome do bridge deve ser AndroidBridge. O widget detecta automaticamente essa interface.
iOS — Swift (WKWebView)
O nome do message handler deve ser gtBridge. O widget detecta automaticamente o webkit.messageHandlers.gtBridge.
React Native
O widget detecta automaticamente o bridge ReactNativeWebView e envia mensagens via window.ReactNativeWebView.postMessage().
Referência de Eventos
O widget comunica mudanças de estado via eventos. Todos seguem o formato:
Eventos emitidos pelo widget
gt:ready
{ timestamp }
Widget carregou e está pronto para uso
gt:flow_complete
{ publicId, requestNumber, status }
Fluxo concluído com sucesso
gt:flow_error
{ publicId, reason, message? }
Erro durante o fluxo
gt:auth_expired
{ timestamp }
Token JWT expirou (HTTP 401)
gt:open_url
{ url, target }
Widget solicita abertura de URL externa
gt:navigate
{ url }
Widget solicita navegação do parent
Detalhes dos payloads
gt:flow_complete
gt:flow_completepublicId
string
Identificador público do colaborador
requestNumber
string
Número da proposta/contrato gerado
status
string
Status final do fluxo
gt:flow_error
gt:flow_errorpublicId
string
Identificador público do colaborador
reason
string
Código do erro
message
string?
Mensagem legível (opcional)
gt:open_url
gt:open_urlurl
string
URL a ser aberta
target
string?
_blank, _top ou _parent (padrão: _blank)
É obrigatório implementar o handler de gt:open_url. Sem ele, etapas como assinatura digital não funcionam em ambientes embedded.
Fluxo do Usuário
O widget conduz o colaborador por todas as etapas do empréstimo consignado:
CPF
Identificação do colaborador
Cadastro
Coleta de dados básicos (nome, telefone, e-mail)
Autorização
Autorização de consulta via assinatura digital
Margem
Consulta de margem consignável disponível
Simulação
Seleção de valor e condições do empréstimo
Proposta
Revisão dos termos
Contrato
Assinatura digital do contrato (CCB)
Conclusão
Confirmação — evento gt:flow_complete é emitido
Personalização Visual
O widget herda a identidade visual configurada para o convênio. Elementos como logotipo, cores e nome da marca são configurados pela equipe de integração durante o onboarding.
Não é necessária nenhuma personalização via código na integração embedded.
Resolução de Problemas
iframe em branco ou erro de CSP no console
Domínio não autorizado no frame-ancestors
Solicite a liberação do seu domínio à equipe de integração
window.open bloqueado
Popup blocker em iframe cross-origin
Implemente o handler onOpenUrl / gt:open_url
Assinatura digital não carrega
Provedor de assinatura rejeita iframe aninhado
Use onOpenUrl para abrir em janela/aba separada
Sessão perdida ao reabrir
sessionStorage não persiste entre abas
Comportamento esperado — o usuário refaz a autenticação
Eventos não chegam ao parent
Validação de origin incorreta
Confirme que está filtrando por event.origin === 'https://cliente.consignado.giro.tech'
Widget não detecta modo embedded
URL sem ?embedded=true
Use a rota /origination/embedded ou adicione ?embedded=true na URL
Para suporte técnico na integração, entre em contato com a equipe pelo canal fornecido durante o onboarding.
Checklist de Integração
Use este checklist para validar sua integração antes de ir para produção:

Atualizado