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

Item
Descrição

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.

circle-check
circle-info

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

Parâmetro
Tipo
Obrigatório
Descrição

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

Método
Descrição

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):

circle-exclamation

Integração Mobile (WebView)

Android — Kotlin

circle-info

O nome do bridge deve ser AndroidBridge. O widget detecta automaticamente essa interface.


iOS — Swift (WKWebView)

circle-info

O nome do message handler deve ser gtBridge. O widget detecta automaticamente o webkit.messageHandlers.gtBridge.


React Native

circle-info

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

Evento
Payload
Quando é disparado

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

Campo
Tipo
Descrição

publicId

string

Identificador público do colaborador

requestNumber

string

Número da proposta/contrato gerado

status

string

Status final do fluxo

gt:flow_error

Campo
Tipo
Descrição

publicId

string

Identificador público do colaborador

reason

string

Código do erro

message

string?

Mensagem legível (opcional)

gt:open_url

Campo
Tipo
Descrição

url

string

URL a ser aberta

target

string?

_blank, _top ou _parent (padrão: _blank)

circle-exclamation

Fluxo do Usuário

O widget conduz o colaborador por todas as etapas do empréstimo consignado:

Etapa
Descrição

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

Sintoma
Causa provável
Solução

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

circle-info

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