> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Verificação de identidade Salesforce: KYC e KYB

> Didit: app Salesforce de verificação de identidade, KYC e KYB sem código. Desde $0.33 por verificação KYC completa, $10 grátis/mês, sem contratos.

Adicione a verificação de identidade da Didit ao Salesforce Sales Cloud / Service Cloud com o nosso pacote gerido. O componente é colocado nas páginas de registo de Contacto e de Lead, cria sessões na sua organização através de Apex (a sua chave de API da Didit fica dentro do Salesforce) e escreve os resultados em campos padrão do registo, para que Flows e Reports possam agir sobre eles. Uma **Invocable Action** integrada permite ao Flow Builder acionar verificações automaticamente, por exemplo, quando é criado um novo lead.

## Pré-requisitos

* Uma organização Salesforce (edição Enterprise ou superior; Developer Edition para testes)
* Uma conta no [Didit Console](https://business.didit.me) com um fluxo configurado
* Permissão para instalar pacotes geridos e criar Sites em Setup

***

### Passo 1: Instalar a aplicação

A ligação abaixo instala o pacote **DiditVerifyManaged 1.0.0.2** publicado.
A instalação do pacote é separada da aprovação da listagem no marketplace.

1. Abra a ligação de instalação: [[https://login.salesforce.com/packaging/installPackage.apexp?p0=04td10000004M0LAAU](https://login.salesforce.com/packaging/installPackage.apexp?p0=04td10000004M0LAAU)](https://login.salesforce.com/packaging/installPackage.apexp?p0=04td10000004M0LAAU)
2. Selecione **Instalar apenas para administradores** enquanto configura e testa a integração.
   Conceda acesso aos utilizadores pretendidos depois de validar a sua configuração.

![Instalar a aplicação Didit no Salesforce](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/install-package.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=8758cc01110ca562d2e88b7cb76a9ab5)

3. Clique em **Instalar**

***

### Passo 2: Obter as suas credenciais da Didit

#### Obter a sua chave de API (para o modo API)

1. Inicie sessão na [Didit Business Console](https://business.didit.me)
2. Aceda a **API e webhooks** na barra lateral esquerda
3. Copie a sua chave de API

![Como obter a chave de API na Didit Business Console](https://mintcdn.com/didit-0f962782/gKLcMCmiLycklBol/images/shopify-how-to-get-api-key.jpg?fit=max\&auto=format\&n=gKLcMCmiLycklBol\&q=85\&s=9027ca685cc296a400e78d320a566453)

#### Obter o ID do fluxo

1. Na Didit Business Console, aceda a **Fluxos**
2. Selecione o fluxo que pretende usar (ou crie um novo)
3. Copie o **ID do fluxo** (um UUID como `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`)

![Como obter o ID do fluxo na Didit Business Console](https://mintcdn.com/didit-0f962782/gKLcMCmiLycklBol/images/shopify-how-to-get-workflow-id.jpg?fit=max\&auto=format\&n=gKLcMCmiLycklBol\&q=85\&s=529dc681169efc0a6cdc96d6c0e0a605)

***

### Passo 3: Configurar as definições da Didit

1. Clique no **App Launcher** (ícone de grelha, no canto superior esquerdo) e pesquise por **"Didit"**

![Como abrir a aplicação Didit](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/app-launcher-search-didit.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=1a2fb9eee64fa9735b29e4d64a20e56e)

2. Abra a aplicação **Didit**: ficará no separador **Definições da Didit**
3. Preencha as suas credenciais e preferências:

| Campo | Descrição | Predefinição |
| - | - | - |
| **Modo** | `api` (recomendado) ou `unilink` | `api` |
| **Chave de API da Didit** | A sua chave de API da Didit (apenas no modo API) | — |
| **ID do fluxo** | O seu ID de fluxo da Didit (apenas no modo API) | — |
| **Segredo do webhook** | Segredo HMAC do Didit Console → API e webhooks. Obrigatório para receber atualizações de verificação em tempo real. Se ficar vazio, todos os webhooks recebidos são rejeitados. | — |
| **URL do UniLink** | URL fixa de verificação (apenas no modo UniLink) | — |
| **Modo de apresentação** | `modal` (janela sobreposta) ou `embedded` (em linha) | `embedded` |
| **Dados do fornecedor** | `record_id`, `record_email`, `custom prefix + record id`, ou `none` | `record_id` |
| **Idioma** | Código do idioma (por exemplo, `en`, `es`, `fr`) | `Auto detect by browser` |
| **Enviar automaticamente dados do contacto** | Preencher a verificação com os dados do registo | `true` |
| **Mostrar botão de fechar** | Mostrar o botão X na janela | `true` |
| **Confirmação de saída** | Pedir confirmação antes de fechar a janela | `true` |
| **Fecho automático ao concluir** | Fechar a janela automaticamente após a conclusão | `false` |
| **Registo de depuração** | Ativar o registo na consola do navegador | `false` |
| **Texto do botão** | Texto do botão de verificação | `Verify Identity` |
| **Texto do botão após sucesso** | Texto apresentado após a verificação | `Identity Verified` |
| **Cor do botão** | Cor de fundo do botão em hexadecimal | `#2667ff` |

4. Clique em **Guardar definições**

### Passo 4: Adicionar o componente às páginas de registo

1. Aceda a um registo de **Contacto** ou de **Lead**

![Vista da página de contacto](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/contact-page-1.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=0a5d3676ade4b7d2e4334df2305ae050)

2. Clique no **ícone de engrenagem → Edit Page** (ou Setup → Object Manager → Contact/Lead → Lightning Record Pages)

![Vista dos detalhes do contacto](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/contact-page-2.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=68b8d16948761de61d5ee8a4c5dcc0f2)

3. No Lightning App Builder, arraste o **Didit Identity Verification** a partir do painel de componentes

![Arrastar o componente Didit](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/drag-didit-component.gif?s=f34880744041ffa63271a683a641b3ba)

4. Clique em **Guardar** e **Ativar** a página, selecione "Assign as Org Default" ao ativar, e veja o vídeo:

![Guardar e ativar a página com o componente Didit](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/save-and-activate.gif?s=2f9f3fffb2fed482ea524236b5ad910d)

5. O exemplo acima usa uma página de registo de Contacto; os passos são idênticos para as páginas de registo de Lead.

## Como funciona

### Modo API (recomendado)

1. O utilizador clica em **Verify Identity** num registo Contact/Lead
2. O Apex cria uma sessão através da API da Didit (a chave de API fica do lado do servidor)
3. O SDK da Didit abre o fluxo de verificação, como uma sobreposição modal ou uma vista incorporada na página, consoante a definição Display Mode
4. Quando a verificação termina, o registo é atualizado automaticamente:
   * `Verification Status` → o resultado da sessão (`Approved`, `Declined`, `In Review`, etc.)
   * `Identity Verified` → `true` em Approved; `false` em Declined
   * `Verified At` (carimbo temporal) e `Didit Session ID`
   * `Verified Document Type`, `Document Expiry Date`, `AML Check Status` (preenchidos através do webhook, ver abaixo)
5. O componente mostra o estado da verificação, o tipo de documento, a data de validade e o resultado AML diretamente na página, sem necessidade de configurar o esquema da página

### Modo UniLink

1. O utilizador clica em **Verify Identity**
2. Um URL UniLink fixo abre num modal ou iframe (sem necessidade de chamada à API)
3. Quando a verificação termina, o resultado é guardado no registo

### Atualizações automáticas da verificação (webhooks)

Quando uma sessão de verificação termina (quer o agente esteja a ver a página ou não), a Didit envia um webhook para a sua organização Salesforce para atualizar automaticamente o registo Contact/Lead. Isto exige uma configuração única do Salesforce Site.

#### Por que motivo é necessário?

O Salesforce não aceita pedidos HTTP recebidos de serviços externos sem um endpoint público. Um Salesforce Site cria este endpoint para que a Didit possa enviar os resultados da verificação diretamente para a sua organização, em tempo real.

#### Passo 1: aceda a Setup > Sites

No Salesforce, clique no **ícone de engrenagem > Setup**. Na caixa **Quick Find**, escreva **Sites** e clique nele em **Sites and Domains**.

![Passo 1 - Pesquisa de Sites](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step1-sites-search.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=07d8ca3804316538de6d15b6ccb39caf)

Se for a primeira vez, marque **"I have read and accepted the Salesforce Site Terms of Use"** e clique em **Register My Salesforce Site Domain**.

![Passo 1 - Página de Sites com domínio registado](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step1-sites-registered.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=9a89d50c21cfc4911cf707a111f963ad)

#### Passo 2: crie um novo Site

Clique no botão **Novo** na lista de Sites. Preencha:

* **Site Label**: `DiditWebhook`
* **Site Name**: preenche-se automaticamente com `DiditWebhook`
* **Default Web Address**: `didit`
* **Ativa**: marcada
* **Active Site Home Page**: `InMaintenance`

Deixe todos os outros campos com os valores predefinidos e clique em **Guardar**.

![Passo 2 - Formulário de novo Site](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step2-new-site-form.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=d5869ff430f4050ebde176ff6020c260)

#### Passo 3: confirme que o Site foi criado

Depois de guardar, verá a página de detalhe do Site. Anote o **Site URL**, que terá um aspeto semelhante a `https://your-org.develop.my.salesforce-sites.com/didit`. Vai precisar deste valor mais tarde.

![Passo 3 - Site criado](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step3-site-created.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=daa8ed30fedd1369d33abe13828ddb12)

#### Passo 4: conceda acesso ao Guest User à classe do webhook

Na página de detalhe do Site, clique em **Public Access Settings**. Abre-se o perfil do Guest User. Desloque-se para baixo até **Enabled Apex Class Access** e clique em **Editar**. Selecione **DiditWebhookReceiver** na lista Available e clique em **Adicionar** para o mover para a lista Enabled. Clique em **Guardar**.

![Passo 4 - Acesso à classe Apex](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step4-apex-class-access.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=8bcfbece75a5a7864e8e1ab8fc07db9d)

#### Passo 5: configure o webhook na Didit Console

1. Aceda a [business.didit.me](https://business.didit.me) > **API e Webhooks**
2. Defina o **URL do webhook** com o valor: `https://your-org.develop.my.salesforce-sites.com/didit/services/apexrest/didit/webhook/`

> **Nota:** O formato exato do domínio depende do tipo de organização. As organizações Developer Edition incluem `.develop` no URL. As organizações de produção usam `https://your-org.my.salesforce-sites.com/didit/services/apexrest/didit/webhook/`. Copie sempre o URL da página de detalhe do Site (Passo 3) para ter a certeza.

3. Copie a **Chave secreta do webhook**
4. No Salesforce, aceda a **Didit Settings** e cole a chave no campo **Webhook Secret**
5. Clique em **Save Settings**

Está feito. A partir de agora, cada resultado de verificação atualizará automaticamente o registo Contact/Lead, mesmo que ninguém tenha a página do Salesforce aberta.

#### O que o webhook guarda

Quando a Didit envia um webhook, o registo Contact ou Lead é atualizado automaticamente.

**Atualizado sempre, independentemente do tipo de fluxo:**

| Campo | O que guarda |
| - | - |
| **Verification Status** | `Approved`, `Declined`, `In Review`, `In Progress`, `Abandoned` |
| **Identity Verified** | `true` em Approved; `false` em Declined ou Abandoned |
| **Verified At** | Carimbo temporal do resultado Approved |
| **Didit Session ID** | O UUID da sessão |

**Atualizado apenas quando a funcionalidade faz parte do seu fluxo:**

| Campo | Requer |
| - | - |
| **Verified Document Type** | Verificação de identidade no seu fluxo |
| **Document Expiry Date** | Verificação de identidade no seu fluxo |
| **AML Check Status** | Triagem AML no seu fluxo |
| **Verification Decline Reasons** | Verificação de identidade no seu fluxo |

Se uma funcionalidade não estiver ativada no seu fluxo na Didit, os campos correspondentes ficam simplesmente vazios, sem que nada deixe de funcionar.

É também criado um registo subordinado **Didit Verification** (`Didit_Verification__c`) para cada sessão, o que lhe dá um registo de auditoria completo com mais detalhe (número do documento, país emissor, nome no documento, data de nascimento, pontuação de correspondência facial, pontuação de prova de vida, número de ocorrências AML), mais uma vez apenas para as funcionalidades incluídas no fluxo.

Pode adicionar a lista relacionada **Didit Verifications** ao esquema de página do Contact/Lead para ver o histórico.

### Automatização com Flows (ação invocável)

O plugin inclui uma ação Apex invocável que os Flows do Salesforce podem chamar para iniciar a verificação automaticamente:

1. No Flow Builder, adicione um elemento **Ação**
2. Pesquise **"Create Didit Verification Session"**
3. Transmita o ID de um registo Contact ou Lead
4. A ação devolve `url`, `sessionId`, `success` e `error`
5. Utilize o URL numa ação **Send Email** ou **Send Notification** para o enviar ao cliente

**Exemplos de utilização:**

* **Na criação de um Lead**: envie automaticamente uma ligação de verificação a cada novo Lead
* Monitorização da validade de documentos: crie um Scheduled Flow que corre diariamente, encontra todos os Contacts em que `Document Expiry Date ≤ TODAY + 90 days` e envia uma ligação de reverificação. Isto funciona de imediato com o campo `Document Expiry Date` preenchido pelo webhook.

## Resolução de problemas

### O botão não faz nada ao ser clicado

* Certifique-se de que guardou a sua chave de API e o Workflow ID em **Didit Settings**
* Verifique se o Workflow ID pertence à mesma aplicação que a sua chave de API
* Ative o **Debug Logging** em **Didit Settings** e consulte a consola do navegador para ver se existem erros

### "Received a non-JSON response from the Didit API"

* Verifique se o Remote Site Setting para `https://verification.didit.me` está ativo: Setup → Remote Site Settings
* Confirme que a sua chave de API é válida e não expirou na [Didit Business Console](https://business.didit.me)

### O webhook devolve 401 — "Webhook secret not configured"

* Aceda a **Didit Settings**, cole a sua Webhook Secret Key (copiada da Didit Console → API & Webhooks) no campo **Webhook Secret** e clique em **Save Settings**

### O webhook devolve 401 — "Invalid signature" ou "Request timestamp is stale"

* Assinatura inválida: certifique-se de que a Webhook Secret em Didit Settings é exatamente igual à que está na Didit Console, sem espaços nem caracteres extra
* Marca temporal desatualizada: os webhooks têm de chegar até 5 minutos após o envio. Se o relógio da sua organização Salesforce estiver desfasado, isto pode gerar falsos positivos, mas é muito raro

### A janela de verificação não abre (erro de CSP na consola do navegador)

* O CSP Trusted Site para `https://verify.didit.me` está incluído no pacote gerido e é implementado automaticamente. Se estiver a implementar a partir do código-fonte, certifique-se de que `cspTrustedSites/Didit_Verify_Frontend.cspTrustedSite-meta.xml` está incluído na sua implementação

## Suporte (24/7)

A nossa equipa está disponível para o ajudar a pôr tudo a funcionar.

> [card] [E-mail](mailto:hello@didit.me)
>
> Envie-nos um e-mail para [hello@didit.me](mailto:hello@didit.me).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.