拒绝简历造假:基于天远API的全能入职背调报告接入指南(Java版)

41 阅读6分钟

一、 打造企业人力资源的数据护城河

在数字化转型的浪潮中,企业的人力资源管理(HRM)正从“经验驱动”向“数据驱动”转型。在高端人才引进灵活用工背调以及金融行业从业人员准入等应用场景中,如何快速、合规、精准地核验候选人背景,成为企业风控的核心痛点。全能入职背调报告API正是解决这一痛点的关键技术手段。

作为天远API旗下的核心数据产品,该接口聚合了学历学籍、司法涉诉、社会不良记录及金融风险等六大维度的权威数据源 。本文将面向Java开发者,详细介绍如何在企业级后端系统中集成此API,解析其复杂的“组合包”数据结构,助力企业构建自动化、智能化的入职风险预警系统。

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

本接口采用高安全性的加密传输模式,适合集成到Spring Boot等Java后端框架中。

1. 接口技术概览

  • 接口地址https://api.tianyuanapi.com/api/v1/COMBQN12?t=13位时间戳
  • 请求方式:POST 3
  • 数据交互:入参需加密后封装为Base64字符串,响应为JSON组合包。
  • 依赖库:本示例使用 OkHttp3 进行网络请求,Fastjson2 处理JSON(均为Java开发常用库)。

2. Curl 命令行测试

在编写Java代码前,建议先使用Curl验证环境连通性:

Bash

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

3. Java 完整调用代码示例Shutterstock

Java Spring Boot architecture的图片

Java

import okhttp3.*;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.JSONArray;
import java.io.IOException;
import java.util.Base64;
import java.util.concurrent.TimeUnit;

/**
 * 天远API - 全能入职背调报告接口调用工具类
 */
public class BackgroundCheckService {

    private static final String API_URL = "<https://api.tianyuanapi.com/api/v1/COMBQN12>";
    private static final OkHttpClient client = new OkHttpClient.Builder()
            .connectTimeout(10, TimeUnit.SECONDS)
            .readTimeout(30, TimeUnit.SECONDS)
            .build();

    /**
     * 模拟加密函数(实际对接请使用天远API提供的AES/RSA加密算法)
     */
    private static String encryptData(JSONObject params) {
        // 占位符:此处应实现具体的加密逻辑
        // 示例仅做Base64编码演示
        String jsonString = params.toJSONString();
        return Base64.getEncoder().encodeToString(jsonString.getBytes());
    }

    /**
     * 发起背调请求
     */
    public static void queryReport(String name, String idCard, String mobile) {
        // 1. 构建业务参数 
        JSONObject bizParams = new JSONObject();
        bizParams.put("authorized", "1"); // 必须获得授权 0-未授权 1-已授权
        bizParams.put("name", name);
        bizParams.put("id_card", idCard);
        bizParams.put("mobile_no", mobile);

        // 2. 加密参数并封装请求体
        String encryptedData = encryptData(bizParams);
        JSONObject requestBodyJson = new JSONObject();
        requestBodyJson.put("data", encryptedData); // 字段名为data // 3. 构造HTTP请求
        long timestamp = System.currentTimeMillis();
        String finalUrl = API_URL + "?t=" + timestamp;

        RequestBody body = RequestBody.create(
                requestBodyJson.toJSONString(), 
                MediaType.parse("application/json; charset=utf-8")
        );

        Request request = new Request.Builder()
                .url(finalUrl)
                .post(body)
                .build();

        // 4. 发送请求并处理响应
        try (Response response = client.newCall(request).execute()) {
            if (response.isSuccessful() && response.body() != null) {
                String responseStr = response.body().string();
                JSONObject result = JSONObject.parseObject(responseStr);
                
                // 解析组合包响应 if (result.containsKey("responses")) {
                    parseResponses(result.getJSONArray("responses"));
                } else {
                    System.out.println("API调用异常: " + responseStr);
                }
            } else {
                System.out.println("网络请求失败: " + response.code());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 解析子产品响应数据
     */
    private static void parseResponses(JSONArray responses) {
        for (int i = 0; i < responses.size(); i++) {
            JSONObject subProduct = responses.getJSONObject(i);
            String apiCode = subProduct.getString("api_code");
            boolean success = subProduct.getBooleanValue("success");
            JSONObject data = subProduct.getJSONObject("data");

            if (!success) {
                System.out.println("子产品[" + apiCode + "]查询失败: " + subProduct.getString("error"));
                continue;
            }

            // 根据不同的API Code处理业务逻辑
            switch (apiCode) {
                case "IVYZ3P9M": // 学历核验 
                    System.out.println("【学历信息】毕业院校代码: " + data.getString("schoolName"));
                    break;
                case "FLXGDEA9": // 公安不良 
                    System.out.println("【不良记录】风险等级: " + data.getString("level"));
                    break;
                case "JRZQ09J8": // 社保评级 
                    System.out.println("【社保评级】等级: " + data.getString("level"));
                    break;
                default:
                    System.out.println("【其他维度】代码: " + apiCode);
            }
        }
    }

    public static void main(String[] args) {
        // 测试调用
        queryReport("李四", "110101199003071234", "13812345678");
    }
}

三、 核心数据结构解析

天远API的“全能入职背调”接口采用了组合模式(Composite Pattern)设计。对于Java对象建模而言,这意味着你需要创建一个包含 List<SubResponse> 的根对象。

核心响应结构层级如下:

  1. Root Object: 包含 responses 列表。
  2. Responses List: 包含多个子产品对象,每个对象由 api_code(唯一标识)、success(状态)、data(业务数据)组成 。

关键子产品代码映射:

  • IVYZ3P9M: 学籍学历核验(实时版)- 用于核实教育背景。
  • FLXG7E8F: 个人司法涉诉查询 - 用于核实法律纠纷。
  • JRZQ7F1A: 全景雷达 - 用于核实借贷与财务风险。

四、 字段详解

为了方便Java开发者定义POJO(Plain Old Java Object),以下列出主要业务模块的核心字段定义。

1. 学籍学历核验模块 (IVYZ3P9M)Shutterstock

Database Schema for Education Records的图片

字段名 (JSON)Java类型含义备注/枚举
educationLevelString学历层次1:专科, 2:本科, 3:硕士, 4:博士
graduationDateString毕业时间格式 yyyyMMdd
schoolNameString学校名称/代码需对照学校字典表
specialtyNameString专业名称/代码需对照专业字典表
learningFormString学习形式1:脱产, 2:普通全日制, 6:函授

2. 全景雷达风险模块 (JRZQ7F1A)

此模块数据量大,建议使用 Map<String, String> 或特定的大型POJO接收。

字段名 (JSON)Java类型含义备注
B22170026String近12个月M0+逾期笔数衡量还款意愿与能力
B22170034String正常还款比例如 "70%"
A22160001String申请准入分1-1000分,越低风险越高
C22180001String网贷授信额度预估值

3. 司法与不良记录模块 (FLXG7E8F / FLXGDEA9)

字段名 (JSON)Java类型含义备注
breachCaseListList失信被执行人列表包含 concreteDetails(具体情形)
consumptionRestrictionListList限制高消费记录包含 executiveCourt(执行法院)
levelString不良人员风险等级0:正常, A:侵犯人身, B:经济犯罪等

五、 应用价值分析

在企业级应用集成中,API的全能背调接口展现了极高的实用价值:

  1. 自动化入职审批流

    在企业的OA或HR SaaS系统中,可以编写Java定时任务或事件监听器。当候选人状态变更为“待背调”时,系统自动调用天远API。如果FLXGDEA9(公安不良)返回非0值,或IVYZ3P9M(学历)核验失败,系统可自动驳回流程,无需人工干预。

  2. 供应链准入审核

    对于涉及敏感数据或资金操作的外包人员,企业可利用API中的FLXG7E8F(司法涉诉)和JRZQ7F1A(全景雷达)数据。若发现人员存在大量未结案的债务纠纷或失信记录 ,可提前预警潜在的舞弊或利益输送风险。

  3. 精细化定薪参考

    结合JRZQ09J8(社保评级)返回的等级(如A级-J级),HR部门可以侧面印证候选人过往的薪资水平真实性,辅助做出更科学的定薪决策,避免薪资倒挂或虚高。

六、 总结

通过本文的Java代码示例与数据解析,我们可以看到全能入职背调报告API为企业提供了一个标准、高效、全面的风险数据接口。对于Java开发者而言,只需处理好“组合包”的解析逻辑,即可将天远API强大的数据能力无缝注入到企业的业务系统中。

开发建议:

  • 建议在数据库设计时,采用JSON类型字段存储原始响应数据,以便应对未来可能的字段扩展。
  • 针对educationLevellearningForm等字典型字段,建议在代码中建立枚举类(Enum)进行映射,提高代码可读性。
  • 注意处理 responses 数组中的 success 状态,确保在部分子产品查询失败(如渠道维护)时,系统仍能正常处理其他维度的有效数据 。