
















好的,我们来分别看一下这两种实名认证方案的详细实现流程。
这个方案的核心在于比对,即验证用户自己输入的“姓名+身份证号”,是否与他们在开通微信支付时预留的实名信息一致。你可以将它理解为“核对答案”,而不是“获取答案”。
整个流程可以分为三个主要步骤,其中前端负责引导跳转,后端起关键作用:
sequenceDiagram participant User as 用户 participant MP as 小程序前端 participant WxServer as 微信城市服务 participant YourServer as 你的后台服务器 participant WxAPI as 微信后台API User->>MP: 1. 输入姓名、身份证号,点击认证 MP->>WxServer: 2. 跳转至微信城市服务授权页 Note over MP,WxServer: 携带你的小程序AppID等信息 WxServer-->>User: 3. 展示授权页,请求用户确认 User->>WxServer: 4. 用户点击“同意”授权 WxServer->>MP: 5. 回跳至你的小程序,并在URL中附带code MP->>YourServer: 6. 将姓名、身份证号、code发送给后端 YourServer->>WxAPI: 7. 调用 checkrealnameinfo 接口 Note over YourServer,WxAPI: 传入 openid, real_name, cred_id, code WxAPI-->>YourServer: 8. 返回校验结果(匹配/不匹配) YourServer-->>MP: 9. 返回最终认证结果 MP-->>User: 10. 展示认证成功或失败
前端:收集信息并获取授权码 (code)
你需要在小程序内放一个表单,让用户填写姓名和身份证号。提交时,不能直接调用后端接口,而是要先跳转到一个微信官方的授权页面。跳转时需指定微信城市服务小程序的 appid(固定值 wx308bd2aeb83d3345)和路径 subPages/city/wxpay-auth/main。用户同意后,微信会回跳到你的小程序,并在 extraData 中带上一个用于校验的 code 参数。
后端:调用核心校验接口
你的后端服务器收到前端传来的 code、real_name(姓名)、cred_id(证件号)后,需要调用微信官方接口 https://api.weixin.qq.com/intp/realname/checkrealnameinfo。请求体(Request Payload)需要包含:
openid: 当前用户的openid。real_name: 用户填写的姓名。cred_id: 用户填写的证件号。code: 刚从前端获取的授权码。处理校验结果
微信接口会返回两个关键字段:verify_openid 和 verify_real_name。
verify_openid。如果值是 V_OP_NA,说明该用户未在微信支付进行实名,流程终止。verify_openid 是 V_OP_NM_MA,再看 verify_real_name。若其值为 V_NM_ID_MA,代表“姓名与证件号匹配”,认证成功;若为 V_NM_ID_UM,则认证失败。这个方案更重、更安全,适用于强监管场景(如金融、支付)。它不仅要核对信息,还要通过活体检测确认“你是你”,并最终与权威公安库数据进行比对。
流程同样分为三步:活体检测、信息提交、权威比对。
sequenceDiagram participant User as 用户 participant MP as 小程序前端 participant ThirdPartySDK as 第三方服务SDK participant YourServer as 你的后台服务器 participant GovDB as 公安库/权威数据源 User->>MP: 1. 上传身份证照片/填写信息 MP->>MP: 2. 调用 wx.startFacialRecognitionVerify Note over MP: 引导用户完成眨眼、摇头等动作 MP-->>ThirdPartySDK: 3. 上传活体视频/特征码进行检测 ThirdPartySDK-->>MP: 4. 返回活体检测结果与凭证(token) MP->>YourServer: 5. 将用户信息与token一并提交 YourServer->>ThirdPartySDK: 6. 调用第三方API进行身份核验 ThirdPartySDK->>GovDB: 7. 请求权威库数据比对 GovDB-->>ThirdPartySDK: 8. 返回比对结果 ThirdPartySDK-->>YourServer: 9. 返回最终核验结果 YourServer-->>MP: 10. 返回认证成功或失败
前端:集成活体检测
你需要在小程序里调用微信官方的生物认证接口 wx.startFacialRecognitionVerify。在调用前,最好先用 wx.checkIsSupportFacialRecognition 检测一下当前设备是否支持人脸识别。调用时,需明确指定 verifyType,例如设置为 LIVENESS 或 POLICE 来执行包含活体检测的人脸核身。
后端:对接第三方服务商
前端完成活体检测后,会得到一个 token(或 verify_result)。你需要将这个凭证和用户填写的身份信息一并提交到自己的后台服务器。后台服务器负责调用第三方服务商(如腾讯云、阿里云)的API,完成两项核心任务:
处理最终结果
根据第三方服务商返回的比对分数或明确结论,由你的后端最终判断认证是否通过。整个过程中,你的后台服务器是数据交互的中枢,并负责最终的业务逻辑处理。
为了让你更清晰地选择,这里将两种方案的核心差异整理成了一张表:
| 对比维度 | 官方「实名信息校验」 | 第三方「人脸识别核身」 |
|---|---|---|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。