欢迎使用本系统。本文档将指导您如何通过 API 快速集成金融级人脸实名认证功能。
在您的服务器端调用此接口,创建一个人脸认证会话并获取认证链接。
| 请求方式 | POST |
|---|---|
| 接口地址 | face/api.php?action=create_auth |
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| api_key | String | 是 | 您在后台分配的 API Key |
| name | String | 是 | 用户真实姓名(需与身份证一致) |
| id_card | String | 是 | 用户 18 位身份证号码 |
| callback_url | String | 否 | 认证完成后的异步通知地址 |
{
"success": true,
"message": "认证成功会话已创建",
"data": {
"token": "a1b2c3d4e5f6...",
"auth_url": "https://gulangvision.cn/face/liveness_check.html?token=a1b2c3d4e5f6...",
"expire_in": 300
}
}
<?php
// 在服务器端调用 API
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://gulangvision.cn/face/api.php?action=create_auth');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'api_key' => 'YOUR_API_KEY',
'name' => '张三',
'id_card' => '110101199001011234',
'callback_url' => 'https://gulangvision.cn/callback.php'
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
if ($result['success']) {
// 重定向用户到认证页面
header('Location: ' . $result['data']['auth_url']);
} else {
echo '错误: ' . $result['message'];
}
?>
如果您没有配置回调地址,可以通过此接口主动查询认证状态。
| 请求方式 | GET |
|---|---|
| 接口地址 | face/api.php?action=query_status |
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| token | String | 二选一 | 认证令牌(从创建会话时获取) |
| id_card | String | 二选一 | 身份证号 |
{
"success": true,
"data": {
"is_finished": true,
"name": "张*",
"id_card": "110***********1234",
"result_code": 1001,
"score": 95,
"result_text": "成功",
"time": "2026-04-30 12:30:45"
}
}
<?php
// 查询认证状态
$token = $_SESSION['auth_token']; // 之前保存的 token
$url = "https://gulangvision.cn/face/api.php?action=query_status&token=" . urlencode($token);
$response = file_get_contents($url);
$result = json_decode($response, true);
if ($result['success'] && $result['data']['is_finished']) {
if ($result['data']['result_code'] == 1001) {
echo "认证成功!相似度: " . $result['data']['score'];
} else {
echo "认证失败: " . $result['data']['result_text'];
}
} else {
echo "认证尚未完成";
}
?>
当用户完成认证后,系统会向您的 callback_url 发送 POST 请求。
| 参数名 | 类型 | 说明 |
|---|---|---|
| key | String | API Key |
| token | String | 认证令牌 |
| name | String | 用户姓名 |
| id_card | String | 身份证号 |
| result_code | Integer | 1001: 成功, 1002: 存疑, 1003: 失败, 其他: 错误 |
| message | String | 结果描述 |
<?php
// callback.php
$key = $_POST['key'] ?? '';
$resultCode = intval($_POST['result_code'] ?? 0);
$message = $_POST['message'] ?? '';
// 验证来源
if ($key !== 'YOUR_API_KEY') {
http_response_code(403);
exit('Invalid key');
}
// 处理不同认证结果
if ($resultCode == 1001) {
// 认证成功 - 更新用户状态
update_user_verification_status('verified');
log_success("认证成功");
} elseif ($resultCode == 1002) {
// 认证存疑 - 需要人工审核
flag_for_manual_review();
log_warning("认证存疑,需要人工审核");
} elseif ($resultCode == 1003) {
// 信息比对不匹配
log_failure("信息比对不匹配");
} else {
// 其他错误
log_failure("认证失败: $message");
}
// 返回成功响应
echo 'OK';
?>
| 错误信息 | 原因及解决方案 |
|---|---|
| 无效的 API Key | Key 不存在,请检查是否正确。 |
| API Key 已被禁用 | 该 Key 已被管理员封禁。 |
| 余额不足 | 账户余额为 0,请登录后台充值。 |
| 操作过于频繁,请稍后再试 | 同一身份证号 5 秒内只能认证一次。 |
| 缺少必要参数 | 缺少 api_key、name 或 id_card 参数。 |
| 无效的认证令牌或已过期 | Token 不存在或超过 5 分钟有效期。 |
| 该认证已完成 | Token 已被使用,每个 Token 只能使用一次。 |
| 认证服务暂时不可用 | 认证服务 API 调用失败,请稍后重试。 |
| 当前IP未被授权访问 | IP不在白名单中,用户设置白名单 |
为了提高系统安全性,系统支持设置IP白名单,只允许特定的IP地址调用API。
如何设置:
示例:
192.168.1.100 10.0.0.50 172.16.0.1
如果您需要更换API Key(例如Key泄露),可以在线更换,无需联系管理员。
更换步骤: