洞察履历背后的真相:重塑企业人才准入数字防线
在企业招聘与团队组建的高频流转中,候选人履历造假、隐瞒严重法律纠纷或背负高危信用债务等问题,始终是悬在人力与业务部门头顶的达摩克利斯之剑。传统的背景调查不仅依赖第三方机构的繁琐人工核验,时间周期长且成本高昂,更难以穿透信息壁垒,获取实时的多维底层数据。一旦将带有严重违约倾向或潜在欺诈风险的人员引入核心业务线,企业将面临巨大的运营风险与声誉反噬。
天远入职背调报告API 提供了一套直连权威数据的全景核验方案 。该接口以“组合包”模式,一次性输出学籍学历真伪、婚姻状态、劳动争议、涉赌涉诈预警及法院失信执行等多维度核心指标 。
PHP 后端加密通信管道构建
由于该接口涉及多维度的个人敏感履历与权威数据,为确保数据在公共网络传输中的绝对安全,天远API 在通信层设计了严格的加解密标准 。同时,为满足合规要求,请求体中必须携带电子授权书链接。
1. 核心加密规范与端点配置
- 请求端点:
https://api.tianyuanapi.com/api/v1/COMBTY17?t=13位时间戳 - 通信协议: POST
- 加密策略: AES-CBC 模式,128位密钥,PKCS7填充 。每次加密需随机生成 16 字节 IV(初始化向量),加密后将 IV 和密文拼接在一起,最后通过 Base64 编码进行传输 。
- 关键入参:
name(姓名)、id_card(身份证号)、mobile_no(手机号码) 与authorization_url(授权书URL地址,必填以证明合规) 。
2. 标准化 PHP 客户端集成代码 (PHP 7.4+)
在 PHP 环境中,我们可以利用原生的 openssl 扩展高效实现 AES 加解密逻辑。以下类封装了完整的网络请求管道,并针对组合包查询的特性放宽了 cURL 的超时限制:
PHP
<?php
class BackgroundCheckClient
{
private string $baseUrl = 'https://api.tianyuanapi.com/api/v1/COMBTY17';
private string $accessId;
private string $accessKeyRaw;
/**
* 初始化背调 API 客户端
* @param string $accessId 账号的 Access-Id
* @param string $hexAccessKey 16进制的 Access Key
*/
public function __construct(string $accessId, string $hexAccessKey)
{
$this->accessId = $accessId;
// 转换 16 进制的 Key 为二进制流,长度应为 16 字节
$this->accessKeyRaw = hex2bin($hexAccessKey);
}
/**
* 加密载荷:AES-128-CBC + PKCS7 + Base64
*/
private function _encryptData(string $rawData): string
{
// 1. 随机生成 16 字节的初始化向量 (IV)
$iv = openssl_random_pseudo_bytes(16);
// 2. 执行加密 (OPENSSL_RAW_DATA 会自动处理 PKCS7 填充)
$cipherText = openssl_encrypt(
$rawData,
'aes-128-cbc',
$this->accessKeyRaw,
OPENSSL_RAW_DATA,
$iv
);
if ($cipherText === false) {
throw new RuntimeException("AES 载荷加密失败");
}
// 3. 将 IV 和密文拼接,并进行 Base64 编码
return base64_encode($iv . $cipherText);
}
/**
* 解密响应数据
*/
private function _decryptData(string $encryptedBase64): array
{
$decoded = base64_decode($encryptedBase64);
if ($decoded === false || strlen($decoded) <= 16) {
throw new RuntimeException("Base64 解码异常或载荷长度有误");
}
// 1. 提取前 16 字节作为 IV,剩余部分为密文
$iv = substr($decoded, 0, 16);
$cipherText = substr($decoded, 16);
// 2. 执行 AES 解密
$plainText = openssl_decrypt(
$cipherText,
'aes-128-cbc',
$this->accessKeyRaw,
OPENSSL_RAW_DATA,
$iv
);
if ($plainText === false) {
throw new RuntimeException("AES 响应数据解密失败");
}
return json_decode($plainText, true) ?? [];
}
/**
* 发起综合入职背调查询
*/
public function fetchReport(string $name, string $idCard, string $mobileNo, string $authUrl): array
{
// 构造明文业务参数,必须携带电子授权书 URL
$payload = json_encode([
'name' => $name,
'id_card' => $idCard,
'mobile_no' => $mobileNo,
'authorization_url' => $authUrl
]);
$encryptedBody = json_encode(['data' => $this->_encryptData($payload)]);
// 拼装 13 位毫秒级时间戳
$timestamp = (int)(microtime(true) * 1000);
$url = $this->baseUrl . '?t=' . $timestamp;
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $encryptedBody,
CURLOPT_RETURNTRANSFER => true,
// 组合包下发包含多个子产品,建议将超时放宽至 15 秒
CURLOPT_TIMEOUT => 15,
CURLOPT_HTTPHEADER => [
'Access-Id: ' . $this->accessId,
'Content-Type: application/json'
]
]);
try {
$response = curl_exec($ch);
if (curl_errno($ch)) {
throw new RuntimeException("cURL 管道阻塞: " . curl_error($ch));
}
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode !== 200) {
throw new RuntimeException("API 通信异常,HTTP状态码: " . $httpCode);
}
$resJson = json_decode($response, true);
if (isset($resJson['data'])) {
return $this->_decryptData($resJson['data']);
}
throw new RuntimeException("业务层异常: " . ($resJson['message'] ?? '未知响应'));
} finally {
curl_close($ch);
}
}
}
// 联调示例
try {
$client = new BackgroundCheckClient('YOUR_ACCESS_ID', 'YOUR_HEX_KEY');
$result = $client->fetchReport(
'王五',
'11010519900101XXXX',
'13800138000',
'https://your-domain.com/auth_files/signed_doc.pdf'
);
if (isset($result['responses'])) {
echo "背调组合包获取成功,子产品数量: " . count($result['responses']) . "\n";
}
} catch (Exception $e) {
echo "查询中断:" . $e->getMessage() . "\n";
}
3. 网关连通性探活 (cURL)
Bash
curl -X POST "https://api.tianyuanapi.com/api/v1/COMBTY17?t=1710123456789" \
-H "Access-Id: YOUR_ACCESS_ID" \
-H "Content-Type: application/json" \
-d '{"data": "经过AES加密且包含授权书URL的Base64编码字符串"}'
拆解组合包矩阵:深层 JSON 嵌套清洗映射
每个数组元素代表一个独立子产品的查询结果(包含 api_code、success、data 等) 。PHP 开发者在消费这些数据时,必须首先检查 $item['success'] 的布尔值,而后针对不同的 $item['api_code'] 实施降维与清洗策略 。
| 核心核验维度 | 子产品定位节点 | 业务释义 | 开发者注意 (业务清洗与映射策略) |
|---|---|---|---|
| 学历真伪与含金量 | data.educationLevel | ||
data.learningForm | 学历层次与学习形式 | 强拦截逻辑:注意区分 learningForm 中 2(普通全日制) 与 6(函授)、8(非全日制) 的区别 。对于要求统招学历的岗位,若解析出非全日制代码,系统应直接降权或挂起审核。 | |
| 公安重点违纪违规 | data.securityInfo.escape | ||
data.securityInfo.drug | 涉毒、在逃等公安预警 | 硬性阻断项:司南报告中的 securityInfo 模块代表极高风险 。一旦 $item['data']['securityInfo']['drug'] 大于 0,必须配置抛出极高危异常,无条件终止录用流程。 | |
| 职场隐患与劳资关系 | data.labor_disputes.non_compete | ||
data.personnel_disputes.dismissal_dispute | 竞业限制与辞退纠纷 | 辅助协同核查:若状态返回 2(命中纠纷),PHP 系统可自动生成内审工单,指派 HR 要求候选人提供上家公司的《离职证明》及《竞业解约协议》 。 | |
| 涉赌涉诈防线 | data.antiFraudInfo.deceiver | 欺诈风险等级 | 洗钱防范:返回值分为 0(无)、A、B、C、D 四级 。针对 C(中风险) 与 D(高风险) 人群,特别是涉及核心财务、资金划拨的岗位,必须重点拦截并转交合规部门复审 。 |
赋能人力资源中台:自动化核查机制落地
通过 PHP 高效解析接口反馈的高维标签,研发团队可将孤立的风险数据织成一张动态防护网,直接嵌入企业的各类用人场景中:
-
大规模基础岗位自动化秒批
针对地推人员、流水线工人或物流骑手等招聘量大、流失率高的基础岗,将 API 集成在扫码入职小程序后端。候选人签署线上电子授权后,PHP 协程或队列异步调用接口。只要未命中“法院执行人名单”、“在逃涉毒”及“频繁劳动碰瓷”等底线红线,系统即可在数秒内自动放行,极大减轻 HR 团队的人力审核损耗。
-
关键敏感岗位深度尽职调查对于财务出纳、高阶技术研发等易发内部欺诈的岗位,企业中台除了比对学历外,需重点提取司南报告中的
overdueRecord(逾期记录) 和creditDetail(授信详情) 。如果候选人名下长期存在大量的 M1+ 逾期或高额网贷记录,其面临的财务压力极易转化为职务犯罪动机,风控引擎应果断发出预警。 -
零工经济与劳务外包平台准入滤网外包派单平台在审核家政、代驾等众包服务商时,可以调用该 API 排查其是否有隐匿的民事/刑事执行记录(
judiciaRiskInfos)或身份冒用风险 。剔除高危分子,维护平台终端客户的生命与财产安全,构建良性业务生态。
坚守隐私底线与数据安全规范
在充分享受天远入职背调报告API带来的高效核查红利时,开发团队必须坚守数据合规与隐私保护的生命线。本接口在协议层强制要求的 authorization_url 字段,即明确规定开发者与业务线在发起任何背调请求前,必须确保已获取当事人的明确知情同意及合法电子授权书 。绝不允许在非授权、无合法业务依托的灰色地带私自爬取或滥用公民隐私数据。
同时,PHP 架构在落库处理时,应严格落实“可用不可见”的安全策略。对于接收到的婚姻、学历及司法涉诉等高度敏感信息,应实施字段层面的强加密(如国密或 AES 加密落库),并配备严格的权限管控与日志溯源机制。请牢记,API 返回的风险快照与特征标签仅应作为企业人工决策的风控辅助依据。科技向善,在防范用人风险的同时尊重并保护每一位候选人的合法隐私权益,才是打造企业合规护城河的终极准则。