手机分期生产 KYC 与 OTP 跳过流程支持

目标:为手机分期生产环境增加受控的 KYC、OTP 跳过能力,便于已获授权的业务场景继续完成 PocketBuy SA 代客办单。

本文为增量需求,不改变两个开关关闭时的现有流程;正常流程仍按现有 OTP、BVN/NIN、活体/人脸核验规则执行。

1. 业务目标与范围

1.1 业务目标

  • 在生产环境按产品、商户主体和生效时间启用 KYC 跳过或 OTP 跳过。
  • 开关开启后,流程不因被跳过的三方能力阻塞,但仍保留订单、客户、门店和最终风险审批的正常业务边界。
  • KYC 跳过对 SA 无感:页面沿用正常已完成样式,但不展示不存在的 KYC 返回资料;跳过来源只保留在订单审计和风险侧。
  • 所有跳过行为可追溯到订单快照、开关版本、操作者、启用原因和生效时间。

1.2 适用范围

范围说明
产品手机分期
前端PocketBuy SA App 的 Verify OTP(Step 2)、Identity(Step 3)、Order Detail 与 Sign/Group Photo
KYC 跳过主动开关跳过时 BVN/NIN 核验、活体/人脸三方校验均不发起;正常 KYC 流程出现连续技术异常时,按异常跳过规则处理
OTP 跳过客户手机号验证页不发送 SMS/Voice,不调用 OTP 三方能力
不在范围SA 登录 OTP、注册 OTP、重置密码 OTP、还款 OTP、绑卡 OTP

2. 开关与默认规则

开关默认值开启后的业务结果关闭时
phone_installment_kyc_skip_enabledfalseKYC 步骤直接记为 PASS_BY_BYPASS;不发起 BVN/NIN、活体或人脸三方校验;页面不展示三方返回姓名、生日、照片或其他资料按现有 KYC 流程校验并展示可信返回结果
phone_installment_otp_skip_enabledfalse系统仍生成本次验证专属的 6 位动态验证码,但不发送 SMS/Voice;前端自动取得并填写该值,再按原有验证和建单流程继续按现有 OTP 发码、倒计时、输入和校验流程

规则:

  1. 两个开关相互独立,可分别开启;某一开关未开启时,不得因另一开关开启而跳过该步骤。
  2. 开关默认关闭;未取到配置、配置超时、配置格式错误或无法判断配置版本时,按关闭处理。
  3. 开关状态、配置版本和生效时间必须在订单进入流程时固化到订单快照;流程中途修改配置不得改变本单已固化的口径。
  4. 跳过结果只表示对应步骤完成,不等同于最终授信或放款通过;最终风险审批、反欺诈、额度、门店和商品准入规则仍然生效。
  5. OTP 跳过不使用固定码。每次进入验证都生成仅对当次手机号、订单草稿和有效期生效的动态验证码;前端自动取得并填写,SA 无需等待、查看或输入验证码。
  6. 动态验证码不得进入普通日志、埋点属性、错误提示、客服视图、页面文案或截图;只能由受控的 OTP 验证流程消费。
  7. 后台可为 KYC 配置“同一证件号连续技术异常阈值”。配置缺失、超时、格式错误、阈值小于 1 或无法识别配置版本时,异常跳过关闭;不得自动放行。
  8. 异常跳过只适用于三方技术异常(如超时、服务不可用或无法判定结果);证件号格式错误、未查到、资料不匹配、活体/人脸业务不通过及风险拒绝不计入阈值,也不得触发跳过。

3. 主流程

3.1 KYC 跳过开启

  1. SA 在 Verify OTP 完成后进入 Identity/KYC 页面。
  2. 页面读取本单已固化的 KYC 跳过状态。
  3. 系统不调用任何 BVN/NIN、活体或人脸三方校验。
  4. 系统将 KYC 步骤记为 PASS_BY_BYPASS,并允许进入下一步资料采集。
  5. 页面沿用正常的“BVN verified”完成态,不出现“跳过”“bypass”“无 KYC”等提示;不展示供应商返回的姓名、生日、照片、供应商名称、供应商原始结果或错误信息。
  6. SA 手工填写客户姓名和出生日期;该两项是本单采集资料,不是 KYC/供应商验证结果,页面不得标注为 Verified。
  7. 风险系统需要拉取该数据。

3.2 OTP 跳过开启

  1. SA 从 Calculate 页进入 Verify OTP 页面。
  2. 页面保留客户手机号输入和隐私政策确认;手机号仍须符合现有格式规则。
  3. 系统为本次验证生成动态验证码,前端自动取得并填写;该验证码不固定、不可由 SA 查看或修改。
  4. 不发送或触发 SMS/Voice、冷却倒计时、重发和通道失败提示;页面仍沿用正常 OTP 已就绪的视觉结构。
  5. SA 点击 Verify & Continue 后,系统消费本次动态验证码完成手机号验证,继续查询 30 天内活跃订单。
  6. 没有活跃订单时,按现有规则创建 Drafting 订单并进入 Identity;有活跃订单时,继续展示 View Existing / Continue New Application 弹层。

3.3 两个开关同时开启

OTP 页面自动取得动态验证码完成手机号验证;进入 Identity 后按普通 BVN 已验证样式完成但不展示 KYC 信息;之后按现有资料采集、提交审批和结果处理继续。

3.4 KYC 连续技术异常自动跳过

  1. 本规则只在 KYC 主动跳过开关关闭、SA 正常提交同一 BVN 或 NIN 核验时生效。
  2. 每次 SA 提交后,系统先完成本次初始核验;发生可重试技术异常时,系统自动重试最多 3 次(即本次提交最多 4 次核验尝试)。重试期间页面保持验证中,SA 不看到重试次数、供应商名称、异常原文或跳过提示。
  3. 同一 BVN/NIN 在同一配置有效期内的一次提交,无论发生多少次系统自动重试,只累计为一次连续技术异常失败;核验成功、SA 更换证件号,或证件号命中非技术业务失败时,按后台配置的连续失败计数规则重置或隔离。
  4. 累计达到本单已固化的异常阈值后,系统将本次 KYC 记为 PASS_BY_EXCEPTION_BYPASS,不再就该证件号继续调用三方,并进入与 KYC 主动跳过一致的手工 Customer name、Date of birth 采集页面。
  5. 手工资料校验通过后继续后续流程;最终风险审批、反欺诈、额度、门店与商品准入仍可拒绝、转人工或要求补充真实核验。

4. 页面要求

4.1 Verify OTP 页面

状态页面要求
OTP 跳过开启OTP 输入框自动填写当次动态验证码;Get Code、Voice OTP、倒计时和重发入口不展示;主按钮显示可提交状态
手机号未填或格式错误保持现有格式校验;不得因为 OTP 跳过而放宽手机号格式
隐私政策未勾选主按钮保持不可提交;沿用现有提示
提交处理中主按钮 loading,防止重复提交
有活跃订单沿用现有订单摘要弹层和两个动作,不因跳过 OTP 改变订单决策
OTP 跳过关闭完全沿用现有 SMS/Voice 发码、倒计时、错误和重试体验

页面不得出现“短信已发送”“语音呼叫中”“验证码校验成功”“跳过 OTP”或任何验证码值。对 SA 而言,该页面只表现为验证码已就绪、可继续验证。

4.2 Identity/KYC 页面

状态页面要求
KYC 跳过开启参照现有“15 身份信息_BVN已验证”页面,展示普通 BVN 已验证完成态;在已验证输入框下增加 Customer name 与 Date of birth 两项手工输入,提供 Next 进入下一步
KYC 跳过开启Customer name 去首尾空格后不得为空、不得仅包含数字;Date of birth 必须为真实日历日期、不得晚于当前日期,并继续适用既有产品年龄策略
KYC 跳过开启不展示三方返回姓名、生日、照片、匹配状态、供应商名称、供应商错误原因或原始报文;手工姓名和出生日期不得使用 Verified、供应商或 KYC 回显标签
KYC 跳过开启两项手工资料未填写或格式不合法时,Next 不可提交并在对应字段展示本地校验提示;不得因为缺少三方回显阻止继续
KYC 跳过关闭沿用现有 BVN/NIN 输入、Verify、成功回显、失败重试和必填规则
配置读取失败按关闭处理,进入正常 KYC 流程;不得静默按跳过处理

4.3 Order Detail 无 KYC 信息样式

订单详情参照现有“22 订单详情”的 Identity 区块处理:当本单 KYC 跳过且无 KYC 返回资料时,保留该区块的位置、标题和正常已完成视觉,不展示空白照片框、BVN/NIN 值、供应商名称、三方返回状态或“跳过”说明。手工姓名与出生日期如需在详情展示,必须明确为“Customer-provided”,不得带 Verified 标识、不得与 KYC 返回资料混排;本次默认不在该区块回显。页面仍可展示不依赖 KYC 返回的订单信息、现场自拍/活体结果与合照证据(如已完成)。

5. 状态、数据归属与审计

5.1 业务状态

步骤正常结果跳过结果说明
OTPOTP_VERIFIEDOTP_VERIFIED_BY_BYPASS两者均可进入后续订单处理,但来源必须可区分
KYCKYC_PASSPASS_BY_BYPASS / PASS_BY_EXCEPTION_BYPASS两类跳过均不携带三方返回资料,且必须与供应商通过区分

5.2 订单快照与审计

订单至少需要能够追溯以下业务信息:

  • OTP 跳过是否生效、KYC 跳过是否生效;
  • 对应配置版本、生效时间和固化时间;
  • 跳过原因和授权操作者;
  • OTP 验证来源、KYC 结果来源;
  • KYC 跳过时手工采集的姓名、出生日期及其填写/校验完成时间;
  • 异常跳过阈值、配置版本、同一证件号的异常累计次数、每次自动重试结果及异常跳过触发时间;
  • 订单后续风险审批是否仍通过。

完整 OTP、BVN/NIN、生日、账户号、人脸素材和供应商原始报文不得进入普通日志、前端埋点或页面展示。

6. 异常与边界

场景处理规则
配置不存在、超时或格式错误按开关关闭处理,并记录配置异常;不得自动放行
开关在流程中途关闭已固化为跳过的订单继续按订单快照完成;新订单按最新配置执行
OTP 跳过开启但手机号不合法仍阻止提交并提示手机号格式错误
OTP 跳过开启但订单创建失败沿用现有订单创建失败提示和可重试路径,不重复创建订单
KYC 跳过开启但后续风险要求真实 KYC风险节点可拒绝、转人工或要求补充核验;不得由前端自行改写为通过
KYC 跳过开启但手工姓名或出生日期缺失/格式无效停留在 Identity 页面;仅提示对应字段补充或修正,不披露跳过状态或供应商信息
正常 KYC 的单次提交发生技术异常系统在后台自动重试最多 3 次;SA 页面保持验证中,不展示尝试次数或供应商异常信息
自动重试后仍为技术异常但未达阈值按既有通用核验失败提示引导稍后重试;本次只累计一次异常失败,不跳过
同一证件号异常累计达阈值自动进入手工姓名、出生日期采集;页面不展示异常跳过原因,订单审计和风险侧可追溯来源
证件号格式错误、未查到、资料不匹配、活体/人脸业务失败沿用既有业务失败处理;不自动重试、不累计技术异常、不触发异常跳过
页面刷新或从 Applications 继续以订单快照恢复跳过状态;不重新调用已跳过的三方能力
误将跳过结果当作供应商成功视为阻断性缺陷:状态来源、审计和页面文案必须可区分

7. 合照与自拍比对

7.1 目的与边界

审批通过后的 Sign/Group Photo 环节,仍要求 SA 与客户同框、现场拍摄、店内背景。合照中的客户脸不再与 BVN/NIN 系统照片比对,改为与本单客户已留存、当天有效的自拍照比对。该自拍照来自客户活体采集,不复用历史订单或相册照片。

该逻辑是签约现场证据判断,不向 SA 展示人脸分数、底层照片、KYC 结果、比对阈值或“跳过 KYC”信息。

7.2 判断规则

  1. 合照须为现场相机拍摄,且检测到恰好两张清晰人脸。
  2. 系统以本单当天有效的 selfie_ref 作为客户基准照片,在合照中定位与自拍匹配的一张脸;另一张脸按 SA 身份处理。
  3. 不再使用 BVN/NIN 系统照、证件照或 KYC 返回照片作为合照比对的基准。
  4. 自拍不存在、已过期、质量不合格、合照人脸不足/超过两张,或无法唯一定位客户脸时,合照不通过,SA 仅收到可执行的重拍/重新完成人脸采集引导。
  5. KYC 跳过不等于跳过合照现场证据判断。若签约仍要求合照,必须先具备有效自拍;否则不得进入签约确认。
  6. 重拍合照或重新采集自拍后,废弃旧的合照比对结论并对最新材料重新判断;签约中断或跨日沿用现有规则,需重新采集自拍和合照。

7.3 SA 页面反馈

判断结果SA 可见反馈后续动作
合照符合要求正常照片预览与 Next 可用进入签署协议
未检测到两张清晰人脸“Make sure both you and the customer are clearly in the photo.”重拍
无有效自拍或无法定位客户“Please complete customer face capture, then retake the photo.”返回/引导完成人脸采集后重拍
比对未通过“Please retake the photo with the customer facing the camera.”重拍;按既有风险策略处理超限

8. 前端埋点要求(忽略)

页面 owner 为 PocketBuy SA App;事件名和页面名保持稳定,不拼接订单号、手机号、验证码、BVN/NIN、供应商返回值或错误文本。

页面/场景事件名事件类型唯一触发时机关键属性及来源衡量指标
Verify OTPverify_enterpage_enter页面首次进入otp_skip_enabled:订单快照;merchant_id:当前办单上下文OTP 页面进入量、跳过开关覆盖量
Verify OTPverify_otp_autofill_resultresult动态验证码自动填写结果确定时otp_skip_enabled=true:订单快照;result:success/failed;不记录验证码OTP 自动填写成功率
Verify OTPverify_continue_resultresult业务结果已确定时verification_source:provider/bypass;result:success/invalid/order_create_failed;业务结果来源于服务端OTP 到订单创建转化率、失败率
Identity/KYCidentity_enterpage_enterIdentity 页面首次进入kyc_skip_enabled:订单快照;merchant_id:当前办单上下文KYC 页面进入量、跳过覆盖量
Identity/KYCidentity_verification_retry_resultresult本次验证的自动重试流程结束且可信业务结果已确定时result:success/retry_exhausted/non_retriable; retry_count:0–3; 不记录 BVN/NIN、供应商错误原文或异常明细自动重试成功率、技术异常率
Identity/KYCidentity_exception_bypass_resultresult同一证件号达到已固化异常阈值,异常跳过业务结果确定时result=triggered; threshold_reached=true; verification_source=exception_bypass; 不记录证件号、姓名、出生日期或供应商错误异常跳过量、异常跳过后手工资料完成率
Identity/KYCidentity_manual_profile_validation_resultresultSA 点击 Next 后,本地姓名与出生日期校验结果确定时result:success/name_invalid/dob_invalid/age_policy_failed;kyc_skip_enabled:订单快照;不记录姓名、出生日期或任何身份号码跳过 KYC 订单的手工资料一次校验通过率
Identity/KYCidentity_complete_resultresult身份步骤业务状态已完成时verification_source:仅服务端审计关联,不展示给 SA;result=pass;不记录三方资料Identity 到 Personal 转化率
Identity/KYCidentity_next_clickclickSA 点击 Next 时verification_source:页面业务状态;result:success/validation_failedIdentity 到 Personal 转化率
Order Detaildetail_identity_section_viewviewIdentity 区块进入可视区域时kyc_info_present:页面业务状态;不记录身份号码、姓名或照片无 KYC 信息订单的详情浏览覆盖率
Group Photogroup_photo_selfie_match_resultresult合照判断结果由可信业务结果返回时result:pass/retake_required/selfie_required;不记录照片、分数或身份信息合照一次通过率、重拍率

9. 验收标准

9.1 OTP 跳过

  • 开关关闭时,现有 SMS/Voice 流程、倒计时、错误提示和活跃订单弹层不发生变化。
  • 开关开启时,Verify 页面不发送 SMS/Voice,不触发倒计时和重发;每次验证由前端自动取得并填写当次动态验证码,禁止使用固定 123456。
  • 手机号不合法或隐私政策未确认时仍不能提交。
  • 点击 Verify & Continue 后,单无活跃订单时按现有规则创建 Drafting 订单并进入 Identity;有活跃订单时仍展示两个既有动作。
  • 埋点记录 verification_source=bypass,不记录 OTP 值。

9.2 KYC 跳过

  • 开关关闭时,BVN/NIN、活体/人脸的现有三方调用和页面回显保持不变。
  • 开关开启时,不发起任何 KYC、活体或人脸三方校验,KYC 状态为 PASS_BY_BYPASS。
  • KYC 主动跳过开关关闭时,同一 BVN/NIN 发生可重试技术异常后,系统自动重试最多 3 次;重试期间 SA 不看到次数、供应商信息、异常原文或跳过提示。
  • 同一 BVN/NIN 的一次提交最多计为一次连续技术异常失败;达到本单固化阈值后,KYC 状态为 PASS_BY_EXCEPTION_BYPASS 并进入手工姓名、出生日期采集。
  • 格式错误、未查到、资料不匹配、活体/人脸业务失败、风险拒绝均不得自动重试、累计技术异常或触发异常跳过。
  • Identity 页面展示可编辑的 Customer name 与 Date of birth;两项填写值不带 Verified 标签,且不作为供应商回显。
  • 姓名为空、仅数字,出生日期无效/晚于当前日期或不符合既有年龄策略时,Next 不可提交;姓名和出生日期本身不得写入日志或埋点。
  • Identity 页面不展示供应商返回的姓名、生日、照片、供应商名称、供应商返回状态或错误信息。
  • KYC 跳过时,SA 看到的是现有 BVN 已验证样式,不出现“跳过”“bypass”或“无 KYC”提示。
  • Order Detail 的 Identity 区块在无 KYC 信息时不显示空照片、身份信息或跳过说明,整体样式与“22 订单详情”保持一致。
  • Identity 页面可以继续进入下一步,后续提交仍进入最终风险审批。
  • 配置读取失败按关闭处理,不得默认通过。

9.3 生产安全与追溯

  • 两个开关默认关闭,且按订单固化;流程中途改配置不改变已开始订单的口径。
  • 订单和审计记录能区分 provider 通过与 bypass 通过。
  • 普通日志、埋点和页面不出现 OTP、BVN/NIN、生日、完整手机号、供应商原始资料或人脸素材。

9.4 合照与自拍比对

  • 合照只接受现场相机拍摄,且必须检测到恰好两张清晰人脸。
  • 系统以本单当天有效自拍作为客户基准,在合照中唯一定位客户;不使用 BVN/NIN 系统照或证件照。
  • 自拍缺失/过期、合照不满足两人、无法定位客户或比对未通过时,阻止进入签署协议并给出可执行的重拍或补采集引导。
  • KYC 跳过订单如仍要求合照,仍必须通过自拍基准的合照判断;SA 页面不展示比对底图、分数或跳过原因。

10. Figma 页面同步范围

在用户提供的 PocketBuy SA App Figma 文件中新增同一 App 设计页面,建议页面名:Phone Installment · Production Bypass。

页面至少包含以下四个画板/状态:

  1. Verify OTP · SMS Bypass:保留普通 Verify OTP 页面结构;不展示发码/Voice/倒计时/重发;验证码由前端自动填写,页面不显示固定码或跳过提示。
  2. 15 Identity Information · BVN Verified · Manual Profile:参照现有 BVN 已验证页面,保留正常已验证输入态和 Next;增加 Customer name、Date of birth 手工输入及本地校验态;不出现跳过提示、供应商返回卡或 Verified 姓名/出生日期。
  3. 22 Order Detail · No KYC Info:参照现有订单详情页面,保留 Identity 区块的布局和完成态;移除身份照片、BVN/NIN、供应商返回与跳过说明;本次不回显手工姓名和出生日期,可保留现场自拍/合照证据。
  4. Sign · Group Photo · Selfie Reference:在合照预览/失败状态中补充两人脸、自拍基准和重拍引导,不展示任何底层比对信息。
  5. 15 Identity Information · KYC Retrying:参照现有 Identity 验证中状态,展示普通验证中反馈;不显示重试次数、供应商异常或异常跳过原因。达到阈值后转入 Manual Profile 画板。

视觉沿用 PocketBuy SA App 现有组件、字体、颜色、间距、圆角和底部合规信息;新页面只增加跳过状态,不重做正常流程页面。