跳转到主要内容

模拟结果(Test Mock)

MarkdownChatGPTClaude

在沙箱环境中,你可以在不依赖真实生物识别采集的情况下模拟流程结果。在创建流程的请求体中添加 expected_result 字段——集成的其余部分(SDK 渲染、生物识别采集、获取流程)与真实流程完全相同。

该模拟机制不会跳过生物识别采集步骤。用户(或你的测试脚本)仍然需要完成正常流程——发生变化的是,流程完成后,会返回 expected_result 中定义的值,而不是真实的评估结果。

每个 flow 只接受以下两种格式中的一种,具体取决于其配置方式:

格式使用场景
id_cloud_one_result返回单一结果的流程(通过、拒绝、高风险等)
authentication_info返回独立信号的流程(UnicoId、Trust、Liveness、IdAge、IdFace...)

发送与你的 flow 不匹配的格式,或同时发送两种格式,都会导致错误——参见错误。

端点​

环境URL
沙箱环境POST https://api.idcloud.uat.unico.app/client/v1/process

该模拟机制仅在沙箱环境中可用。在生产环境中,expected_result 字段会被拒绝。

单一结果 — id_cloud_one_result

当你的 flow 返回单一的批准类结果时,使用此格式。

请求体参数

字段类型是否必填描述
expected_result.​id_cloud_one_resultstring是要模拟的单一结果。必须是你的 flow 实际会产生的结果——请检查你的流程配置以了解其可识别的结果。

示例​

curl -X POST https://api.idcloud.uat.unico.app/client/v1/process \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"expected_result": {
"id_cloud_one_result": "PROCESS_RESULT_APPROVED"
}
// ...其余参数与真实创建流程请求相同
}'

响应(200 OK)​

{
"process": {
"id": "53060f52-f146-4c12-a234-5bb5031f6f5b",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_OK",
"flow": "your-sandbox-flow",
"simulated": true,
"capacities": ["PROCESS_CAPACITY_IDCHECK"],
"person": { "duiType": "DUI_TYPE_BR_CPF", "duiValue": "12345678909" }
}
}

simulated: true 表示该流程具有模拟结果,而非真实评估结果。

id_cloud_one_result 的可能取值与解读结果中记录的流程结果值相同——只发送你的 flow 实际能识别的结果。

Brazil独立信号 — authentication_info

当你的 flow 返回独立信号而非单一结果时,使用此格式。

你的 flow 通常返回的每个信号都必须出现在 authentication_info 中。 只发送其中一部分会被拒绝——你不能只模拟一个信号,而让其余信号交由真实评估处理。

trust_result 与 identity_fraudsters_result

trust_result 和 identity_fraudsters_result 代表同一个信号(身份欺诈指示):trust_result 表示负面情况,identity_fraudsters_result 表示正面情况。请使用与你想要模拟的结果相匹配的字段。

关于每个字段的可能取值,请参见authenticationInfo 中的能力结果。

无摩擦流程不支持此格式——参见不支持的信号。

示例​

curl -X POST https://api.idcloud.uat.unico.app/client/v1/process \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"expected_result": {
"authentication_info": {
"authentication_result": "AUTHENTICATION_RESULT_POSITIVE",
"liveness_result": "LIVENESS_RESULT_LIVE",
"id_age_result": "ID_AGE_RESULT_POSITIVE"
}
}
// ...其余参数与真实创建流程请求相同
}'

响应(200 OK)​

{
"process": {
"id": "53060f52-f146-4c12-a234-5bb5031f6f5b",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_OK",
"flow": "your-sandbox-flow",
"simulated": true,
"capacities": ["PROCESS_CAPACITY_IDUNICO", "PROCESS_CAPACITY_IDAGE"],
"authenticationInfo": {
"authenticationResult": "AUTHENTICATION_RESULT_POSITIVE",
"livenessResult": "LIVENESS_RESULT_LIVE",
"idAgeResult": "ID_AGE_RESULT_POSITIVE"
},
"person": { "duiType": "DUI_TYPE_BR_CPF", "duiValue": "12345678909" }
}
}

不支持的信号​

以下信号在两种格式中均不受模拟机制支持:

  • multi_accounts
  • data_mismatch
  • serial_fraudster
  • smart_revalidation_result
  • passkey_result(已弃用)

无摩擦流程(无需生物识别采集的身份验证)仅在 id_cloud_one_result 格式中受支持——它们不适用于 authentication_info。

关于响应的说明​

只有在身份结果无法判定时才会返回分数。 只有当 authentication_result 为 AUTHENTICATION_RESULT_INCONCLUSIVE 时,score_engine_result 字段才会反映一个值。如果你将 authentication_result 模拟为 POSITIVE 或 NEGATIVE,同时提供非零的 score_engine_result,最终响应会返回 score_enabled: SCORE_ENABLED_FALSE 和 score: 0,无论发送的值是什么。

这是该 API 的正常行为——同样的规则也适用于真实流程,并非模拟机制所特有。如果你要测试的场景依赖于响应中出现分数,请使用 authentication_result: AUTHENTICATION_RESULT_INCONCLUSIVE。

错误​

情形错误
在沙箱环境之外使用 expected_resultPERMISSION_DENIED
同时发送 id_cloud_one_result 和 authentication_infoINVALID_ARGUMENT
空的 authentication_info: {}INVALID_ARGUMENT
authentication_info 缺少流程会返回的某个信号校验错误——需包含每个信号
id_cloud_one_result 的值不被流程识别校验错误
flow 不支持模拟校验错误

后续步骤​

创建模拟流程后,请正常完成生物识别采集,然后使用获取流程来获取模拟结果。