跳转到主要内容

概述

NFC 报告中的警告会标记 Didit 在读取和验证芯片时观察到的所有情况。它们会记录在 nfc_verifications[] 每个条目的 warnings[] 数组中(参见 NFC 报告),且 feature 设置为 "NFC"。每个条目均遵循通用的警告对象结构:feature、risk、additional_data、log_type、short_description、long_description、node_id。 每个警告包含三个层级:
  1. risk 代码:您可以在代码中进行匹配的稳定标识符(如下列代码所示)。
  2. log_type:information、warning 或 error 之一。它取决于您在工作流中为该风险配置的操作:无操作 → information,审核 → warning,拒绝 → error。
  3. 决策影响:相同的配置操作还会决定 NFC 报告的 status:审核操作会将其变更为 In Review,拒绝操作会将其变更为 Declined。
有四个 NFC 风险支持以此方式配置(SKIPPED_NFC_VALIDATION、NFC_CHIP_NOT_VERIFIED、NFC_TRUST_ANCHOR_MISSING、NFC_AND_OCR_DATA_NOT_SAME),再加上五个 Japan My Number Card 风险,每个风险都有其单独的设置。两项证书风险(DSC_CERTIFICATE_REVOKED、DSC_CERTIFICATE_EXPIRED)仅提供信息:它们始终带有 log_type: "information",且绝不会单独更改 NFC 状态。 以下是 NFC 模块生成的完整风险代码集。不存在其他 NFC 风险代码。

产生的警告

SKIPPED_NFC_VALIDATION 与 NFC_CHIP_NOT_VERIFIED 和 NFC_TRUST_ANCHOR_MISSING 互斥:只有在未跳过芯片读取时,才会评估芯片验证警告。这两个芯片验证警告之间也相互排斥。

精确描述字符串

API 会针对每种风险返回以下精确的 short_description 和 long_description 字符串:

跳过原因

SKIPPED_NFC_VALIDATION 警告包含 additional_data.skip_reason,即七个固定代码之一,明确指出未运行 NFC 的具体原因(在存在跳过原因之前记录的会话中,additional_data 可能为 null — 处理历史决策时请将该字段视为可选)。相同的分类体系以 nfc_skip_reason 形式出现在决策 payload 的会话级别 — 包括根本无法运行 NFC 的会话(无芯片证件、Web 端集成),因此不存在任何 NFC 报告或警告。
只有当客户端到达 NFC 步骤并明确跳过该步骤时(通常为 USER_SKIPPED,或在扫描时发现读取器不可用而导致的 DEVICE_WITHOUT_NFC),才会存在 NFC 报告及其 SKIPPED_NFC_VALIDATION 警告。如果 NFC 步骤在提供之前就已被绕过 — 无芯片证件、缺少证书、未报告 NFC 功能、无法读取 MRZ 密钥、JPKI 不可用 — 则不会创建任何报告或警告,原因仅显示在会话级别的 nfc_skip_reason 字段中,不会影响会话状态。

配置

三项工作流设置控制 NFC 警告的路由方式。每一项都可以设置为无操作、审核或拒绝:
  1. 跳过 NFC 操作(skip_nfc_action)— 适用于 SKIPPED_NFC_VALIDATION。仅在启用 allow_nfc_skip 时才会向用户提供跳过选项。
  2. 未验证芯片操作(unverified_chip_action)— 同时适用于 NFC_CHIP_NOT_VERIFIED 和 NFC_TRUST_ANCHOR_MISSING,因此会话状态行为保持一致,同时风险代码说明验证失败的原因。
  3. 数据不一致操作(inconsistent_data_action)— 适用于 NFC_AND_OCR_DATA_NOT_SAME。这是身份证件验证所使用的同一数据不一致设置。
两个 DSC_CERTIFICATE_* 风险没有操作设置 — 它们始终仅提供信息。日本个人编号卡风险还有另外五项设置,列在下一节中。

日本个人编号卡 (JPKI)

日本个人编号卡通过 JPKI 而不是 ICAO 9303 读取(chip_protocol: "jpki"),因此上述 ICAO 风险绝不会针对该卡触发。其读取操作会引发以下五种风险,每种风险在 NFC 节点上都有对应的设置: 跳过个人编号卡读取会引发 SKIPPED_NFC_VALIDATION 并遵循 skip_nfc_action,与其他芯片一样。有关读取工作原理,请参阅日本个人编号卡 (JPKI)。
通过 JPKI 读取个人编号卡的功能尚未在生产环境中启用。在该功能启用之前,个人编号卡将跳过 NFC 步骤,跳过原因为 JPKI_UNAVAILABLE,且不会引发这些风险中的任何一种。

示例

审核中 — 芯片无法验证

在此处,未验证芯片操作被设置为 Review,因此 NFC_CHIP_NOT_VERIFIED 带有 log_type: "warning",且 NFC 报告的状态为 In Review。DSC 已过期的条目仅供参考。

已拒绝 — 芯片 / OCR 不一致

在此处,数据不一致操作被设置为 Decline,因此该警告带有 log_type: "error",且 NFC 报告的状态为 Declined。请注意,ocr_mrz 是 MRZ 行数组,而 nfc_mrz 是芯片中单个拼接的 MRZ 字符串。

审核中: 无吊销结果的个人编号卡

在此处,jpki_revocation_unchecked_action 保持其默认值 Review,因此该警告带有 log_type: "warning",且 NFC 报告的状态为 In Review。卡片本身已通过验证:jpki.chain_valid 和 jpki.signature_valid 均为 true。

警告类型

每项风险都会根据您应用的配置分配严重程度。这三种严重程度分别为:

相关内容

  • NFC 报告 — 完整的报告架构及状态。
  • Webhook — 会话状态发生变化时触发 status.updated;当会话进入 Approved、Declined、In Review 或 Abandoned 状态时,会附加决策 payload(包括 NFC 警告)。
  • 数据模型 — NFC 验证 — 规范的逐字段架构。
  • 数据模型 — 警告对象 — warnings[] 中每个条目的结构。
最后修改于 2026年11月7日