跳转到主要内容

静默验证

静默验证让此前已通过验证的回访身份能够完成无卡验证交易,无需显示可见的捕获界面。系统不会要求用户重新拍摄自拍照,而是由 Unico 的技术在后台评估信号和复现规律,判断该笔交易是否可以静默通过。

静默验证并非一个独立的产品——而是在支付交易信用卡 Onboarding中所述同一交易创建流程之上增加的一个步骤。通过 SDK 采集上下文信号,并在创建交易时发送相同的外部标识,正是这一操作使静默批准成为可能。

适用条件
  • 当有足够的历史记录、使 Unico 的技术能够通过信号评估该身份时,静默验证即可适用。
  • 当由于历史记录不足或其他原因而无法完成评估时,交易将改为回退到标准可视化流程。例如,当某个身份首次在网络中被识别到时,就可能出现这种情况。
1. 使用 SDK 采集设备元数据

按常规方式为您的平台安装并初始化 Capture SDK——静默验证不会改变这一设置流程。请遵循相应平台的监控数据采集指南来发送 externalUserId

信息

静默验证目前尚不支持 Flutter。

这里它不仅仅是可观测性元数据

监控数据采集指南将 externalUserId 描述为一个可选的遥测字段,"不会改变 SDK 的捕获行为或 API 响应"。这一说法对单独使用的 SDK 而言是成立的。但在无卡验证中,后端正是使用这同一字段来决定该笔交易是否可以被静默批准。 发送它正是为该笔交易启用静默验证的关键——在这里它并非无关紧要的字段。

要让流程保持静默,需要对标准的捕获设置做两项调整:

  • 移动端(Android / iOS): 使用接收带有 externalUserIdPrepareInfo 对象的 prepareCamera / prepareSelfieCamera 重载方法,并且不要在成功回调中调用打开相机的方法——除非您确实希望该次会话走完整的可视化流程。
unicoCheckCamera.prepareCamera(unicoConfig, object : CameraListener {
override fun onCameraReady(cameraOpener: UnicoCheckCameraOpener.Camera?) {
// 这里无需调用 cameraOpener?.open() ——后台采集已经开始。
}
override fun onCameraFailed(message: String?) { /* handle error */ }
}, PrepareInfo("YOUR_EXTERNAL_USER_ID"))
  • Web: 在调用 prepareCamera / prepareSelfieCamera 之前,在 UnicoCheckBuilder 实例上调用 setSilentInfo(externalUserId, useCase),同样也要跳过在成功回调中打开相机的步骤。
unicoCamera.setSilentInfo("YOUR_EXTERNAL_USER_ID");
await unicoCamera.prepareSelfieCamera(config, SelfieCameraTypes.SMART);
// 这里无需打开相机——后台采集已经开始。
时间窗口

SDK 在后台采集数据,因此在您创建交易之前必须留出一个最短的时间间隔:

  • 在调用交易 API 之前,至少提前 4 秒启动 SDK 的准备工作——太早调用,采集可能尚未完成。
  • 采集到的数据在 最长 5 分钟内有效——如果间隔太久,等到创建交易时数据可能已经过期。
2. 使用相同的 externalUserID 创建交易

externalUserID 是可选的——但如果没有它,该笔交易将无法触发静默验证。在创建交易时——无论是通过支付交易还是信用卡 Onboarding——请在 additionalInfo 中发送与 SDK 中使用的 完全相同externalUserID

{
"additionalInfo": {
"externalUserID": "YOUR_EXTERNAL_USER_ID"
}
}

省略它不会引发任何错误——交易仍会正常创建,只是始终遵循带有可视化摩擦的标准流程。

3. 处理响应

如果该笔交易符合条件并被静默批准,则无需进一步操作:

{
"id": "6ab1771e-dfab-4e47-8316-2452268e5481",
"status": "approved"
}

否则,响应中会包含一个用于完成标准可视化流程的 link,与未启用静默验证时创建的交易完全相同:

{
"id": "6ab1771e-dfab-4e47-8316-2452268e5481",
"status": "waiting",
"link": "https://aces.so/example",
"token": "eyJhbGciOiJIUzI1NiIsInR5cC[...]Ok6yJV_adQssw5c"
}

对于其他任何状态,请使用返回的 link 遵循标准流程——有关完整的状态列表,请参阅控制体验枚举