降本增效:PHP如何封装全能入职背调报告API接口(含完整代码)

34 阅读6分钟

一、 赋能HR系统,实现秒级自动化背调

在企业人力资源管理(HRM)与招聘SaaS系统中,背景调查通常是流程中最耗时、成本最高的环节。传统的线下背调周期长达3-5天,且费用昂贵。全能入职背调报告API为HR软件开发商与企业IT部门提供了一种颠覆性的解决方案。

作为天远API的数据旗舰产品,该接口(代码 COMBQN12)通过一次调用即可聚合学历学籍、不良记录、司法涉诉、社保评级及全景雷达等核心数据。本文将面向PHP开发者(特别是使用Laravel、ThinkPHP框架的工程师),详细演示如何将此API封装为标准服务,解析其多维度的返回数据,帮助企业在招聘流程中实现“一键背调”,大幅降低用人风险与决策成本。


二、 API接口调用示例(PHP版)

本接口采用标准的POST请求,数据通过Base64加密传输,非常适合PHP的 cURL 扩展进行处理。

1. 接口配置概览

  • 接口地址https://api.tianyuanapi.com/api/v1/COMBQN12?t=13位时间戳
  • 请求方式:POST
  • 内容类型application/json
  • 核心参数:业务参数需先转JSON,加密后Base64编码,放入 data 字段 。

2. Curl 命令行快速验证

Bash

curl -X POST "<https://api.tianyuanapi.com/api/v1/COMBQN12?t=1715068800000>" \
-H "Content-Type: application/json" \
-d '{
    "data": "eyJhdXRob3JpemVkIjoiMSIsIm5hbWUiOiLlvKDku0kiLCJpZF9jYXJkIjoiNDUyMTIyMjAwMDA4Mjc0MjNYIiwibW9iaWxlX25vIjoiMTM4MDAxMzgwMDAifQ=="
}'

3. PHP 完整服务类封装示例

以下代码展示了一个独立的PHP Service类,可直接集成到 ThinkPHP 或 Laravel 的 Service 层中。

PHP

<?php

class BackgroundCheckService
{
    // API地址
    private $apiUrl = "<https://api.tianyuanapi.com/api/v1/COMBQN12>";

    /**
     * 加密处理函数(模拟)
     * 实际对接请替换为天远API官方提供的加密算法(如AES/RSA)
     * * @param array $data 原始业务参数
     * @return string Base64编码后的字符串
     */
    private function encryptData($data)
    {
        $jsonStr = json_encode($data, JSON_UNESCAPED_UNICODE);
        // TODO: 在此处加入AES加密逻辑
        // $encrypted = OpenSSL::encrypt($jsonStr, ...);
        // 此处仅做Base64编码演示
        return base64_encode($jsonStr);
    }

    /**
     * 发起背调请求
     * * @param string $name 姓名
     * @param string $idCard 身份证号
     * @param string $mobile 手机号
     * @return array|null 解析后的响应数据
     */
    public function queryReport($name, $idCard, $mobile)
    {
        // 1. 准备时间戳
        $timestamp = round(microtime(true) * 1000);
        $url = $this->apiUrl . "?t=" . $timestamp;

        // 2. 构建请求载荷
        $payload = [
            "authorized" => "1", // 必须字段:1-已授权 "name" => $name,
            "id_card" => $idCard,
            "mobile_no" => $mobile
        ];

        // 3. 加密参数
        $encryptedData = $this->encryptData($payload);
        $body = json_encode(["data" => $encryptedData]);

        // 4. 初始化CURL
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 设置超时

        // 5. 执行请求
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        
        if (curl_errno($ch)) {
            // 记录日志:curl_error($ch)
            return null;
        }
        curl_close($ch);

        if ($httpCode === 200) {
            $result = json_decode($response, true);
            // 6. 解析组合包数据
            if (isset($result['responses'])) {
                return $this->parseResponses($result['responses']);
            }
        }

        return null;
    }

    /**
     * 格式化输出关键数据,便于前端展示
     */
    private function parseResponses($responses)
    {
        $report = [
            'education' => null,     // 学历
            'risk_level' => '正常',   // 综合风险
            'social_level' => '-',   // 社保评级
            'legal_count' => 0       // 涉诉数量
        ];

        foreach ($responses as $item) {
            if (!$item['success']) continue; // 跳过失败的子产品 $data = $item['data'];
            switch ($item['api_code']) {
                case 'IVYZ3P9M': // 学历核验 // 仅取第一条学历信息
                    if (!empty($data) && is_array($data)) {
                        $info = $data[0] ?? [];
                        $report['education'] = [
                            'school' => $info['schoolName'] ?? '', // 对应学校代码 'level' => $this->mapEduLevel($info['educationLevel'] ?? ''),
                            'date' => $info['graduationDate'] ?? ''
                        ];
                    }
                    break;
                case 'FLXGDEA9': // 公安不良 if (isset($data['level']) && $data['level'] !== '0') {
                        $report['risk_level'] = "存在风险(代码:{$data['level']})";
                    }
                    break;
                case 'FLXG7E8F': // 司法涉诉 $report['legal_count'] = $data['judicial_data']['count']['count_total'] ?? 0;
                    break;
                 case 'JRZQ09J8': // 社保评级 $report['social_level'] = $data['level'] ?? '-';
                    break;
            }
        }
        return $report;
    }

    // 辅助字典映射
    private function mapEduLevel($code) {
        $map = ['1'=>'专科', '2'=>'本科', '3'=>'硕士', '4'=>'博士']; // return $map[$code] ?? '未知';
    }
}

// 调用演示
$service = new BackgroundCheckService();
$report = $service->queryReport("张三", "110101199001011234", "13912345678");
print_r($report);

三、 核心数据结构解析

天远API 的返回结构非常适合PHP的关联数组处理。根节点包含 responses 数组,每个元素对应一个子产品的查询结果。

主要子产品索引:

  1. IVYZ3P9M (学历核验) :返回数组结构,包含候选人的教育历史。
  2. FLXGDEA9 (不良人员) :返回对象结构,核心是 level 字段。
  3. JRZQ7F1A (全景雷达) :返回复杂的嵌套对象,包含借贷申请与还款行为。
  4. FLXG7E8F (司法涉诉) :返回深层嵌套对象,包含 judicial_data 及其下的案件详情 cases

四、 字段详解

在HR系统中,我们通常只关注影响录用的“红线”指标。以下表格列出了PHP后端需要重点解析的字段。

1. 风险与合规类 (FLXGDEA9 & FLXG7E8F)

字段名 (JSON key)对应PHP处理含义业务逻辑建议
level (FLXGDEA9)$data['level']不良记录等级若值不为 0,建议直接触发“红灯”预警。
breachCaseList$data['judicial_data']['breachCaseList']失信被执行人列表检查数组是否为空,若有值,说明是“老赖”。
concreteDetails...['concreteDetails']失信行为详情如“有履行能力而拒不履行”,需展示给HR。
consumptionRestrictionList...['consumptionRestrictionList']限制高消费影响员工出差购票,需提示。

2. 履历核验类 (IVYZ3P9M)

字段名 (JSON key)对应PHP处理含义业务逻辑建议
schoolName$data[0]['schoolName']学校名称/代码需对照天远提供的学校字典转换中文名称。
specialtyName$data[0]['specialtyName']专业名称/代码需对照专业字典。
educationLevel$data[0]['educationLevel']学历层次对比候选人简历,如API返回1(专科)而简历写本科,则为造假。

3. 全景雷达 (JRZQ7F1A) - 财务稳定性

字段名 (JSON key)对应PHP处理含义业务逻辑建议
A22160001$data['apply_report_detail']['A22160001']申请准入分1-1000分,分数过低可能存在多头借贷风险。
B22170026$data['behavior_report_detail']['B22170026']近12个月逾期笔数频繁逾期可能影响员工工作专注度。

五、 应用价值分析

对于使用PHP开发的HRMS或OA系统,接入天远API可带来显著的业务增值:

  1. 构建候选人“诚信黑名单”库

    利用FLXGDEA9(公安不良)和FLXG7E8F(失信名单)返回的数据,企业可以建立内部的黑名单数据库。当API返回“在逃”、“吸毒”(level 为 A, C) 或“失信被执行”状态时,系统自动拦截录用流程,保障企业资产安全。

  2. 简历自动清洗与校验

    在招聘量大的蓝领或校招场景,HR面临海量简历。通过集成IVYZ3P9M(学历核验),PHP脚本可以批量比对简历中的学历字段与API返回的educationLevel。仅需几行代码,即可自动筛选出学历造假的候选人,释放HR 80%的初筛精力。

  3. 员工背调报告自动化生成

    基于PHP强大的模板引擎(如Blade或Smarty),开发者可以将API返回的JSON数据渲染成精美的PDF背调报告。将JRZQ09J8(社保评级)映射为可视化的收入能力图表,将JRZQ7F1A(全景雷达)映射为财务风险仪表盘,为用人部门提供直观的决策依据。


六、 总结

通过PHP集成全能入职背调报告API,企业能够以极低的开发成本实现专业级的背景调查功能。该接口的“一站式”特性消除了对接多个单一数据源(如单独接学信网、法院接口)的繁琐工作。

开发者提示:

  • 字典维护:由于接口返回的学校和专业多为代码(如 10001 代表北京大学),建议将文档中的长字典存储到本地数据库或Redis中,以提高页面渲染速度。
  • 数据缓存:背调数据具有时效性,但对于短时间内的重复查询(如HR误操作),建议在PHP端设置简短的缓存策略,节省API调用费用。
  • 安全合规:务必在后台记录每一次API调用的授权凭证,以备审计。