以网站、app应用实名认证为背景,详细介绍一下实名认证的必要性以及认证示例
在当今数字化时代,实名认证越来越成为网站、App应用必不可少的一部分。
本文将以聚合数据的相关接口数据:三网手机实名认证、身份证实名认证、活体视频认证、活体人脸实名认证H5版、银行卡三四要素,详细的说明实名认证的方法
条条大路通罗马,相信总有一种实名认证的方法是适合您的
一、实名认证的必要性:
- 提高用户安全性和可靠性
- 实名认证可以有效防止账号被盗用、冒充等行为,保护用户隐私和财产安全。
- 用户身份真实可验证,有助于建立信任关系,提高用户对产品/服务的信心。
- 规范平台秩序
- 实名认证可以阻止恶意注册、发布违法违规内容等行为,维护平台秩序。
- 有助于追查责任主体,增强平台的社会责任感和公信力。
- 满足监管要求
- 很多行业和领域都有实名制的监管政策和法规要求,如金融、电信等。
- 平台必须落实实名认证机制,否则可能面临处罚或关停风险。
二、实名认证的常见方法(综合难度、可靠,5⭐️为例):
- 1、 三网手机实名认证 3⭐️
- 要求用户使用本人真实的手机号码进行注册并对身份证进行核验。
- 通过手机号码与身份证信息的绑定,验证用户身份的真实性。
- 2、 身份证实名认证 3⭐️
- 让用户提供身份证号码并上传身份证照片进行核验。
- 通过身份证信息的直接验证,确认用户身份。
- 3、 活体视频认证 4⭐️
- 要求用户进行实时视频自拍,传入视频和身份信息。
- 先判断视频中是否为真人,再判断视频中的人与公安权威库的证件照是否属于同一个人。
- 结合视觉识别和权威数据核验,提高认证的可靠性。
- 4、 活体人脸实名认证H5版 5⭐️
- 通过真人活体检测和人脸比对等生物识别技术,配合权威数据源验证,可快速校验自然人的真实身份。
- 可快速、准确地校验自然人的真实身份。
- 生物识别技术更加智能和安全可靠。
- 5、 三方认证:银行卡三元素检测、银行卡四元素检测 4⭐️
- 银行卡三要素(姓名、身份证号码、银行卡号)信息是否一致
- 银行卡四元素检测(姓名、手机号码、身份证号码、银行卡号)信息是否一致
三、各种实名认证方法示例详解:
下面将通过简单易懂的代码方式,详细分析和说明以上5种实名认证方法的使用
首先我们需要获取接口调用的秘钥:注册并登录聚合,在用户中心-》我的数据-》我的接口里面可以看到已申请的接口appkey
以下下代码默认已有appkey,并以go语言为例,其他语言可到相关文档查看(支持语言:curl、python、php、node、go、objectc、java、c#)
- 所有请求header 都是:Content-Type application/x-www-form-urlencoded
1、三网手机实名认证 3⭐️
该方式需要用户的:姓名、身份证、手机号(这里要注意,手机号必须是该身份证办理的,如果只是使用者,是不同不过的)
三要素比对一致即可完成实名认证
必填参数:
参数 | 类型 | 描述 |
---|---|---|
key | string | 在个人中心->我的数据,接口名称上方查看 |
realname | string | 姓名 |
idcard | string | 身份证号码 |
mobile | string | 手机号码 |
示例:
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
func main() {
// 基本参数配置
apiUrl := "https://v.juhe.cn/telecom/query"
apiKey := "您申请的调用APIkey"
// 接口请求入参配置
requestParams := url.Values{}
requestParams.Set("key", apiKey)
requestParams.Set("realname", "李聚合")
requestParams.Set("idcard", "370121xxxxxxxx1040")
requestParams.Set("mobile", "18988888888")
// 发起接口网络请求
resp, err := http.Get(apiUrl + "?" + requestParams.Encode())
if err != nil {
fmt.Println("网络请求异常:", err)
return
}
defer resp.Body.Close()
var responseResult map[string]interface{}
err = json.NewDecoder(resp.Body).Decode(&responseResult)
if err != nil {
fmt.Println("解析响应结果异常:", err)
return
}
fmt.Println(responseResult)
}
结果
{
"reason":"成功",
"result":{
"realname":"****",
"mobile":"************",
"idcard":"********************",
"res":1, // 1:三要素核验一致,2:三要素核验不一致
"resmsg":"三要素身份验证一致",
},
"error_code":0
}
2、身份证实名认证 3⭐️
核验身份证二要素(姓名和身份证号码)信息是否一致。
简单粗暴:根据res判断是否通过:1:匹配 , 2:不匹配
必填参数:
参数 | 类型 | 描述 |
---|---|---|
key | string | 在个人中心->我的数据,接口名称上方查看 |
realname | string | 姓名 |
idcard | string | 身份证号码 |
示例
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
func main() {
// 基本参数配置
apiUrl := "http://op.juhe.cn/idcard/query"
apiKey := "您申请的调用APIkey"
// 接口请求入参配置
requestParams := url.Values{}
requestParams.Set("key", apiKey)
requestParams.Set("idcard", "370121xxxxxxxx1040")
requestParams.Set("realname", "李聚合")
requestParams.Set("orderid", "")
// 发起接口网络请求
resp, err := http.Get(apiUrl + "?" + requestParams.Encode())
if err != nil {
fmt.Println("网络请求异常:", err)
return
}
defer resp.Body.Close()
var responseResult map[string]interface{}
err = json.NewDecoder(resp.Body).Decode(&responseResult)
if err != nil {
fmt.Println("解析响应结果异常:", err)
return
}
fmt.Println(responseResult)
}
结果
{
"reason": "成功",
"result": {
"realname": "***",
"idcard": "******************",
"orderid":"J103202010151450419556",
"res": 1 // 1:匹配 , 2:不匹配
},
"error_code": 0
}
3、 活体视频认证 4⭐️
传入视频和身份信息,先判断视频中是否为真人,判断为真人后,再判断该视频中的人与公安权威库的证件照是否属于同一个人
自行根据res相似度进行适合的取值,判断是否认证通过
必填参数:
参数 | 必填 | 类型 | 描述 |
---|---|---|---|
key | 是 | string | 在个人中心->我的数据,接口名称上方查看 |
realname | 是 | string | 姓名 |
idcard | 是 | string | 身份证号码 |
videoBase64 | 二选一 | string | 用于活体检测的视频,视频的BASE64值;BASE64编码后的大小不超过8M,支持mp4、avi、flv格式。 |
videoUrl | 二选一 | string | 用于活体检测的视频Url 地址。视频下载后经Base64编码不超过 8M,视频下载耗时不超过4S,支持mp4、avi、flv格式。视频的 videoUrl、videoBase64必须提供一个,如果都提供,只使用 videoBase64。 |
示例
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
"strings"
)
func main() {
// 基本参数配置
apiUrl := "http://apis.juhe.cn/antiFaceId/query"
apiKey := "您申请的调用APIkey"
// 接口请求入参配置
requestParams := url.Values{}
requestParams.Set("key", apiKey)
requestParams.Set("idcard", "370121xxxxxxxx1040")
requestParams.Set("realname", "李聚合")
requestParams.Set("videoBase64", "")
requestParams.Set("videoUrl", "")
// 发起接口网络请求
resp, err := http.Post(apiUrl, "application/x-www-form-urlencoded", strings.NewReader(requestParams.Encode()))
if err != nil {
fmt.Println("网络请求异常:", err)
return
}
defer resp.Body.Close()
var responseResult map[string]interface{}
err = json.NewDecoder(resp.Body).Decode(&responseResult)
if err != nil {
fmt.Println("解析响应结果异常:", err)
return
}
fmt.Println(responseResult)
}
结果
{
"reason": "成功",
"result":{
"res":{
"score": 100
// 属score,相似度,取值范围 [0.00, 100.00]。推荐相似度大于等于70时可判断为同一人,可根据具体场景自行调整阈值(阈值70的误通过率为千分之一,阈值80的误通过率是万分之一)
},
"orderid": "J675202203211119151305"
},
"error_code": 0
}
4、 活体人脸实名认证H5版 5⭐️
通过真人检测和人脸比对等生物识别技术,配合权威数据源验证,可快速校验自然人的真实身份。
该方法需要向获取实人认证链接,进行活体认证扫描
回调认证扫码任务订单号,用户通过订单号,查下认证结果
同样也可以传递一个异步通知地址,等待结果推送
1、获取认证地址
https://apis.juhe.cn/faceid/query
参数:
参数 | 必填 | 类型 | 描述 |
---|---|---|---|
key | 是 | string | 在个人中心->我的数据,接口名称上方查看 |
certName | 是 | string | 姓名 |
certNo | 是 | string | 身份证号码 |
orderId | 是 | string | 自定义的8-32位字母数字组合标识。 |
model | 否 | string | 活体检测的类型。 |
returnUrl | 是 | string | 您的业务页面回跳的目标地址URL。 |
notifyUrl | 否 | string | 认证结果的回调通知地址URL。仅当认证完成(包含认证通过和认证未通过)时才会触发回调,若认证中放弃、异常中断或未进行认证均不会通知。建议您收到回调通知时,若有需要可通过查询接口获取认证详情信息。 |
deviceType | 否 | string | 取值WEB或者H5 (默认H5)。 |
形迹判断是一种动作活体的检测方式,按规则移动鼻尖完成指定动作。形迹判断通过增加随机性,提升了安全能力。
- model选择
- 1 默认,眨眼动作活体检测。
- 2 多动作活体检测,眨眼+任意摇头检测(顺序随机)。
- 3 多动作活体检测,眨眼+形迹判断(顺序随机)。
- 4 多动作活体检测,眨眼+炫彩活体双重检测。
- 5 多动作活体检测,远近动作+眨眼动作检测。
示例
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
"strings"
)
func main() {
// 基本参数配置
apiUrl := "https://apis.juhe.cn/faceid/query"
apiKey := "您申请的调用APIkey"
// 接口请求入参配置
requestParams := url.Values{}
requestParams.Set("key", apiKey)
requestParams.Set("certName", "姓名")
requestParams.Set("certNo", "370121xxxxxxxx1040")
requestParams.Set("orderId", "OD2024052012121212")
requestParams.Set("model", "1")
requestParams.Set("returnUrl", "https://local.example.cn/return")
requestParams.Set("notifyUrl", "")
requestParams.Set("deviceType", "")
// 发起接口网络请求
resp, err := http.Post(apiUrl, "application/x-www-form-urlencoded", strings.NewReader(requestParams.Encode()))
if err != nil {
fmt.Println("网络请求异常:", err)
return
}
defer resp.Body.Close()
var responseResult map[string]interface{}
err = json.NewDecoder(resp.Body).Decode(&responseResult)
if err != nil {
fmt.Println("解析响应结果异常:", err)
return
}
fmt.Println(responseResult)
}
结果
{
"reason":"SUCCESS",
"result":{
"jh_order_id":"JH79320240513145425BLEnR",
"verify_url":"http://m.alyms.cn/F4.bTPyEV" // 重定向打开该认证地址,完成认证
},
"error_code":0
}
2、认证结果查询
https://apis.juhe.cn/faceid/search
参数:
参数 | 必填 | 类型 | 描述 |
---|---|---|---|
key | 是 | string | 在个人中心->我的数据,接口名称上方查看 |
jhOrderId | 是 | string | 聚合订单号。即发起认证请求接口返回的jh_order_id字段。 |
示例
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
"strings"
)
func main() {
// 基本参数配置
apiUrl := "https://apis.juhe.cn/faceid/search"
apiKey := "您申请的调用APIkey"
// 接口请求入参配置
requestParams := url.Values{}
requestParams.Set("key", apiKey)
requestParams.Set("jhOrderId", "JH79320240517095231mUzn9")
// 发起接口网络请求
resp, err := http.Post(apiUrl, "application/x-www-form-urlencoded", strings.NewReader(requestParams.Encode()))
if err != nil {
fmt.Println("网络请求异常:", err)
return
}
defer resp.Body.Close()
var responseResult map[string]interface{}
err = json.NewDecoder(resp.Body).Decode(&responseResult)
if err != nil {
fmt.Println("解析响应结果异常:", err)
return
}
fmt.Println(responseResult)
}
结果
{
"reason": "SUCCESS",
"result": {
"passed": "T", // 认证通过
"message": "身份证号与姓名匹配,且比对成功",
"jh_order_id": "JH79320240517095231mUzn9",
"detail": {
"live_passed": "T",
"live_code": "200",
"live_message": "活体检测通过",
"live_score": "91.11730",
"certify_passed": "T",
"certify_code": "200",
"certify_message": "身份证号与姓名匹配,且比对成功",
"certify_res": "1",
"certify_score": "87",
"img": "" // 实人认证图片
}
},
"error_code": 0
}
5、 三方认证:银行卡三元素检测、银行卡四元素检测 4⭐️
这里就只介绍四元素检测,其他一样
可以根据res判断实名认证是否通过
必填参数:
参数 | 类型 | 描述 |
---|---|---|
key | string | 在个人中心->我的数据,接口名称上方查看 |
realname | string | 姓名 |
idcard | string | 身份证号码 |
bankcard | string | 银行卡卡号 |
mobile | string | 手机号码 |
示例
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
func main() {
// 基本参数配置
apiUrl := "http://v.juhe.cn/verifybankcard4/query"
apiKey := "您申请的调用APIkey"
// 接口请求入参配置
requestParams := url.Values{}
requestParams.Set("key", apiKey)
requestParams.Set("realname", "李聚合")
requestParams.Set("idcard", "370121xxxxxxxx1040")
requestParams.Set("bankcard", "6321xxxxxxxx432")
requestParams.Set("mobile", "18988888888")
requestParams.Set("bankinfo", "")
// 发起接口网络请求
resp, err := http.Get(apiUrl + "?" + requestParams.Encode())
if err != nil {
fmt.Println("网络请求异常:", err)
return
}
defer resp.Body.Close()
var responseResult map[string]interface{}
err = json.NewDecoder(resp.Body).Decode(&responseResult)
if err != nil {
fmt.Println("解析响应结果异常:", err)
return
}
fmt.Println(responseResult)
}
结果
{
"reason": "成功",
"result": {
"jobid": "JH2131191113105116991630Np", // 本次查询流水号
"realname": "****", // 姓名
"bankcard": "************", // 银行卡卡号
"idcard": "************", // 身份证号码
"mobile": "***********", // 预留手机号码
"res": "2", // 验证结果,1:匹配 2:不匹配
"message": "认证信息不匹配" // 描述
},
"error_code": 0
}
总结
标签:requestParams,Set,err,示例,fmt,认证,实名 From: https://blog.csdn.net/nbplus_007/article/details/144536591总的来说,这5种实名认证方法(三网手机实名认证、身份证实名认证、活体视频认证、活体人脸实名认证H5版、银行卡三四要素)各有特点,从简单的手机号码和身份证验证,到更加智能和可靠的生物识别和三方认证,满足不同场景和需求。平台可根据自身情况选择合适的认证方式,以确保用户身份的真实性和安全性。
可以根据具体的场景和需求选择不同的认证方式