> ## 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.

# Salesforce 身份验证应用：KYC 与 KYB

> Didit 提供即装即用的 Salesforce 托管包，支持身份验证、KYC 和 KYB。无需编码即可设置，完整 KYC 每次检查 $0.33 起，每月免费 $10，无合同约束。

使用我们的托管包，将 Didit 身份验证添加到 Salesforce Sales Cloud / Service Cloud 中。该组件可放置在联系人和潜在客户记录页面上，通过 Apex 在您的组织中创建会话（您的 Didit API 密钥始终保留在 Salesforce 内部），并将结果写回记录上的标准字段，以便流程和报表据此执行操作。内置的 **Invocable Action** 允许 Flow Builder 自动触发验证，例如在创建新潜在客户时。

## 前提条件

* 一个 Salesforce 组织（Enterprise 版或更高版本；测试可使用 Developer Edition）
* 一个已配置工作流的 [Didit Console](https://business.didit.me) 账户
* 在设置中安装托管包和创建站点的权限

***

### 步骤 1: 安装应用

以下链接将安装已发布的 **DiditVerifyManaged 1.0.0.2** 包。
包安装与应用市场上架审核是分开的。

1. 打开安装链接：[[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. 在配置和测试集成时，选择 **Install for Admins Only**。
   在验证配置后，再向目标用户授予访问权限。

![在 Salesforce 中安装 Didit 应用](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/install-package.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=8758cc01110ca562d2e88b7cb76a9ab5)

3. 点击 **Install**

***

### 步骤 2: 获取 Didit 凭证

#### 获取 API 密钥（用于 API 模式）

1. 登录 [Didit Business Console](https://business.didit.me)
2. 在左侧边栏中进入 **API 和 Webhook**
3. 复制您的 API 密钥

![如何从 Didit Business Console 获取 API 密钥](https://mintcdn.com/didit-0f962782/gKLcMCmiLycklBol/images/shopify-how-to-get-api-key.jpg?fit=max\&auto=format\&n=gKLcMCmiLycklBol\&q=85\&s=9027ca685cc296a400e78d320a566453)

#### 获取工作流 ID

1. 在 Didit Business Console 中，进入 **工作流**
2. 选择要使用的工作流（或新建一个）
3. 复制 **工作流 ID**（格式为 UUID，例如 `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`）

![如何从 Didit Business Console 获取工作流 ID](https://mintcdn.com/didit-0f962782/gKLcMCmiLycklBol/images/shopify-how-to-get-workflow-id.jpg?fit=max\&auto=format\&n=gKLcMCmiLycklBol\&q=85\&s=529dc681169efc0a6cdc96d6c0e0a605)

***

### 步骤 3: 配置 Didit 设置

1. 点击 **App Launcher**（左上角的网格图标），搜索 **"Didit"**

![如何进入 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. 打开 **Didit** 应用，您将进入 **Didit Settings** 标签页
3. 填写凭证和偏好设置：

| 字段 | 说明 | 默认值 |
| - | - | - |
| **Mode** | `api`（推荐）或 `unilink` | `api` |
| **Didit API Key** | 您的 Didit API 密钥（仅限 API 模式） | — |
| **Workflow ID** | 您的 Didit 工作流 ID（仅限 API 模式） | — |
| **Webhook Secret** | Didit Console → API 和 Webhook 中的 HMAC 密钥。接收实时验证更新时必填。若留空，所有传入的 Webhook 都将被拒绝。 | — |
| **UniLink URL** | 固定验证 URL（仅限 UniLink 模式） | — |
| **Display Mode** | `modal`（弹窗）或 `embedded`（嵌入式） | `embedded` |
| **Vendor Data** | `record_id`、`record_email`、`custom prefix + record id` 或 `none` | `record_id` |
| **Language** | 语言代码（例如 `en`、`es`、`fr`） | `Auto detect by browser` |
| **Auto Send Contact Data** | 使用记录数据预填验证信息 | `true` |
| **Show Close Button** | 在弹窗上显示 X 按钮 | `true` |
| **Exit Confirmation** | 关闭弹窗前进行确认 | `true` |
| **Auto-close on Complete** | 完成后自动关闭弹窗 | `false` |
| **Debug Logging** | 启用浏览器控制台日志记录 | `false` |
| **Button Text** | 验证按钮标签 | `Verify Identity` |
| **Button Success Text** | 验证完成后的标签 | `Identity Verified` |
| **Button Color** | 按钮背景的十六进制颜色 | `#2667ff` |

4. 点击 **Save Settings**

### 步骤 4: 将组件添加到记录页面

1. 进入 **联系人** 或 **潜在客户** 记录

![联系人页面视图](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/contact-page-1.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=0a5d3676ade4b7d2e4334df2305ae050)

2. 点击 **齿轮图标 → Edit Page**（或依次进入设置 → Object Manager → 联系人/潜在客户 → Lightning Record Pages）

![联系人详情视图](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/contact-page-2.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=68b8d16948761de61d5ee8a4c5dcc0f2)

3. 在 Lightning App Builder 中，从组件面板拖动 **Didit Identity Verification**

![拖动 Didit 组件](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/drag-didit-component.gif?s=f34880744041ffa63271a683a641b3ba)

4. 点击 **保存**，然后启用该页面，启用时选择 "Assign as Org Default"，并观看视频：

![保存并启用带有 Didit 组件的页面](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/save-and-activate.gif?s=2f9f3fffb2fed482ea524236b5ad910d)

5. 上面的示例使用的是联系人记录页面，潜在客户记录页面的步骤完全相同。

## 工作原理

### API 模式 (推荐)

1. 用户在联系人/潜在客户记录上点击 **Verify Identity**
2. Apex 通过 Didit API 创建会话 (API 密钥始终保留在服务器端)
3. Didit SDK 打开验证流程，以弹窗覆盖层或内嵌视图呈现，具体取决于您的 Display Mode 设置
4. 验证完成后，记录会自动更新：
   * `Verification Status` → 会话结果 (`Approved`、`Declined`、`In Review` 等)
   * `Identity Verified` → Approved 时为 `true`；Declined 时为 `false`
   * `Verified At` 时间戳和 `Didit Session ID`
   * `Verified Document Type`、`Document Expiry Date`、`AML Check Status` (通过 Webhook 填充，见下文)
5. 组件会直接显示验证状态、证件类型、到期日期和 AML 结果，无需配置页面布局

### UniLink 模式

1. 用户点击 **Verify Identity**
2. 固定的 UniLink URL 在弹窗或 iframe 中打开 (无需调用 API)
3. 验证完成后，结果保存到记录中

### 自动验证更新 (Webhooks)

验证会话完成时 (无论代理是否正在查看页面)，Didit 都会向您的 Salesforce 组织发送 Webhook，自动更新联系人/潜在客户记录。此项需要一次性的 Salesforce Site 设置。

#### 为什么需要这样做

Salesforce 不接受来自外部服务的传入 HTTP 请求，除非存在公共端点。Salesforce Site 会创建此端点，使 Didit 能够将验证结果实时直接推送到您的组织。

#### 步骤 1 - 前往 Setup > Sites

在 Salesforce 中，点击 **齿轮图标 > Setup**。在 Quick Find 框中输入 **Sites**，然后点击 **Sites and Domains** 下的 **Sites**。

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

如果这是您第一次操作，请勾选 "I have read and accepted the Salesforce Site Terms of Use"，然后点击 **Register My Salesforce Site Domain**。

![步骤 1 - 已注册域名的 Sites 页面](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step1-sites-registered.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=9a89d50c21cfc4911cf707a111f963ad)

#### 步骤 2 - 创建新的 Site

在 Sites 列表中点击 **New** 按钮。填写以下内容：

* **Site Label**: `DiditWebhook`
* **Site Name**: 自动填充为 `DiditWebhook`
* **Default Web Address**: `didit`
* **Active**: 勾选
* **Active Site Home Page**: `InMaintenance`

其他字段保持默认值，然后点击 **Save**。

![步骤 2 - 新建 Site 表单](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step2-new-site-form.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=d5869ff430f4050ebde176ff6020c260)

#### 步骤 3 - 确认 Site 已创建

保存后，您会看到 Site 详情页。记下 **Site URL**，它的格式类似 `https://your-org.develop.my.salesforce-sites.com/didit`。稍后您会用到它。

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

#### 步骤 4 - 授予 Guest User 对 Webhook 类的访问权限

在 Site 详情页上，点击 **Public Access Settings**。这会打开 Guest User 配置文件。向下滚动到 **Enabled Apex Class Access**，点击 **Edit**。从 Available 列表中选择 **DiditWebhookReceiver**，点击 **Add**，将其移到 Enabled 列表。点击 **Save**。

![步骤 4 - Apex 类访问权限](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step4-apex-class-access.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=8bcfbece75a5a7864e8e1ab8fc07db9d)

#### 步骤 5 - 在 Didit Console 中配置 Webhook

1. 前往 [business.didit.me](https://business.didit.me) > **API & Webhooks**
2. 将 **Webhook URL** 设置为：`https://your-org.develop.my.salesforce-sites.com/didit/services/apexrest/didit/webhook/`

> **注意：** 具体域名格式取决于您的组织类型。Developer Edition 组织的 URL 中包含 `.develop`。生产环境组织使用 `https://your-org.my.salesforce-sites.com/didit/services/apexrest/didit/webhook/`。请务必从您的 Site 详情页 (步骤 3) 复制 URL 以确保正确。

3. 复制 **Webhook Secret Key**
4. 在 Salesforce 中进入 **Didit Settings**，将密钥粘贴到 **Webhook Secret** 字段中
5. 点击 **Save Settings**

至此设置完成。此后，每个验证结果都会自动更新联系人/潜在客户记录，即使没有人打开 Salesforce 页面也不受影响。

#### Webhook 会保存哪些内容

当 Didit 发送 Webhook 时，联系人或潜在客户记录会自动更新。

**始终更新，与工作流类型无关：**

| 字段 | 存储内容 |
| - | - |
| **Verification Status** | `Approved`、`Declined`、`In Review`、`In Progress`、`Abandoned` |
| **Identity Verified** | Approved 时为 `true`；Declined 或 Abandoned 时为 `false` |
| **Verified At** | Approved 结果的时间戳 |
| **Didit Session ID** | 会话 UUID |

**仅在该功能属于您的工作流时更新：**

| 字段 | 要求 |
| - | - |
| **Verified Document Type** | 工作流中包含身份证件验证 |
| **Document Expiry Date** | 工作流中包含身份证件验证 |
| **AML Check Status** | 工作流中包含 AML 筛查 |
| **Verification Decline Reasons** | 工作流中包含身份证件验证 |

如果 Didit 工作流中未启用某项功能，对应字段将保持空白，不会影响其他功能。

系统还会为每个会话创建一条 **Didit Verification** 子记录 (`Didit_Verification__c`)，提供完整的审计追踪，并包含更多详细信息 (证件号码、签发国家/地区、证件上的姓名、出生日期、人脸比对分数、活体检测分数、AML 命中次数)，同样仅限工作流中包含的功能。

您可以将 **Didit Verifications** 相关列表添加到联系人/潜在客户页面布局中，以查看历史记录。

### Flow 自动化 (可调用操作)

此插件包含一个可调用 Apex 操作，Salesforce Flow 可以调用它来自动发起验证：

1. 在 Flow Builder 中添加 **Action** 元素
2. 搜索 **"Create Didit Verification Session"**
3. 传入联系人或潜在客户记录 ID
4. 该操作返回 `url`、`sessionId`、`success` 和 `error`
5. 在 **Send Email** 或 **Send Notification** 操作中使用该 URL，将其发送给客户

**示例用例：**

* **创建潜在客户时** - 自动向每位新潜在客户发送验证链接
* **证件到期监控** - 构建一个每天运行的定时流，查找所有满足 `Document Expiry Date ≤ TODAY + 90 days` 的联系人，并发送重新验证链接。这一功能开箱即用，直接使用由 Webhook 填充的 `Document Expiry Date` 字段

## 故障排除

### 点击按钮后没有反应

* 请确保您已在 Didit Settings 中保存 API 密钥和 Workflow ID
* 检查 Workflow ID 是否与您的 API 密钥属于同一个应用
* 在 Didit Settings 中启用 **Debug Logging**，然后在浏览器控制台中查看错误

### 收到来自 Didit API 的非 JSON 响应

* 确认 `https://verification.didit.me` 的远程站点设置已激活：Setup → Remote Site Settings
* 检查您的 API 密钥是否有效且未过期，可在 [Didit Business Console](https://business.didit.me) 中查看

### Webhook 返回 401，"Webhook secret not configured"

* 前往 **Didit Settings**，将您的 Webhook 密钥（从 Didit Console → API & Webhooks 复制）粘贴到 **Webhook Secret** 字段中，然后点击 **Save Settings**

### Webhook 返回 401，"Invalid signature" 或 "Request timestamp is stale"

* Invalid signature：请确保 Didit Settings 中的 Webhook Secret 与 Didit Console 中的完全一致，不能包含多余的空格或字符
* Stale timestamp：Webhook 必须在发送后 5 分钟内送达。如果您的 Salesforce 组织时钟不同步，可能会引发误报，但这种情况非常罕见

### 验证窗口无法打开，浏览器控制台出现 CSP 错误

* `https://verify.didit.me` 的 CSP 受信站点已包含在托管包中，并会自动部署。如果您是从源代码部署，请确保部署内容中包含 `cspTrustedSites/Didit_Verify_Frontend.cspTrustedSite-meta.xml`

## 支持 (24/7)

我们的团队随时为您提供帮助，助您顺利上手。

> [card] [邮箱](mailto:hello@didit.me)
>
> 请发送邮件至 [hello@didit.me](mailto:hello@didit.me)。


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