金融借贷信用风险探查API集成指南:深度解析用户逾期行为与履约状态数据

38 阅读7分钟

1. 让信用风险“看得见”

在金融科技领域,风控是业务的生命线。无论是消费金融App的秒级授信汽车金融的按揭审批,还是小额贷后的动态额度管理,核心痛点往往是一致的:如何在保护隐私的前提下,快速看清一个用户的“信用健康度”?

传统的征信查询往往数据庞杂,需要耗费大量算力进行清洗和特征工程。而天远数据推出的金融借贷信用风险探查API(接口代码:JRZQ2F8A),则提供了一种更高效的思路:它不仅仅返回原始数据,而是直接生成一份类比“体检报告”的结构化数据。

通过整合用户在多平台的历史还款行为,该API能用通俗易懂的结果编码(如A/U/N)和关键风险指标区间(如逾期金额、时长),帮助业务方直观判断用户的逾期情况与履约状态。对于开发者而言,这意味着可以极大地降低风控模型的冷启动门槛,快速上线贷前筛查与贷中监控功能。

本文将深入解析该接口的调用流程、AES加密机制以及核心返回参数的业务含义。

2. API 调用示例:安全与效率并重

为了保障数据安全,天远API采用了严格的AES-128-CBC加密机制。这意味着我们在请求时不能直接发送明文的敏感信息(如身份证、手机号),必须先进行加密处理。

2.1 核心对接信息

  • 接口地址https://api.tianyuanapi.com/api/v1/JRZQ2F8A
  • 请求方式:POST
  • 鉴权方式:Header中需携带 Access-Id,Body中传输加密后的 data

2.2 Python 对接代码示例

以下代码展示了如何处理“IV随机生成+AES加密+Base64编码”的完整流程,并封装了异常处理逻辑。

Python

import requests
import json
import base64
import time
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes

# 配置您的 API 凭证
ACCESS_ID = "您的Access-Id"
ACCESS_KEY = "您的16位Access-Key"  # 必须是16字节
API_URL = "<https://api.tianyuanapi.com/api/v1/JRZQ2F8A>"

class TianyuanClient:
    def __init__(self, access_id, access_key):
        self.access_id = access_id
        self.key = access_key.encode('utf-8')

    def encrypt_data(self, data_dict):
        """
        加密逻辑:
        1. 生成16字节随机IV
        2. AES-CBC 加密 (PKCS7填充)
        3. 拼接 IV + 密文
        4. Base64 编码
        """
        iv = get_random_bytes(16)
        cipher = AES.new(self.key, AES.MODE_CBC, iv)
        
        # 将字典转换为JSON字符串并编码
        raw_data = json.dumps(data_dict).encode('utf-8')
        encrypted_bytes = cipher.encrypt(pad(raw_data, AES.block_size))
        
        # 拼接 IV 和 密文
        combined = iv + encrypted_bytes
        return base64.b64encode(combined).decode('utf-8')

    def decrypt_data(self, encrypted_b64):
        """
        解密逻辑:
        1. Base64 解码
        2. 提取前16字节作为 IV
        3. AES-CBC 解密
        """
        try:
            encrypted_data = base64.b64decode(encrypted_b64)
            iv = encrypted_data[:16]
            ciphertext = encrypted_data[16:]
            
            cipher = AES.new(self.key, AES.MODE_CBC, iv)
            decrypted_bytes = unpad(cipher.decrypt(ciphertext), AES.block_size)
            return json.loads(decrypted_bytes.decode('utf-8'))
        except Exception as e:
            print(f"解密失败: {e}")
            return None

    def query_risk_info(self, name, id_card, mobile):
        # 构造请求参数
        payload = {
            "name": name,
            "id_card": id_card,
            "mobile_no": mobile,
            "authorized": "1" # 必须获得用户授权
        }

        # 加密参数
        encrypted_payload = self.encrypt_data(payload)
        
        # 发送请求(带上时间戳防止缓存)
        url = f"{API_URL}?t={int(time.time() * 1000)}"
        headers = {"Access-Id": self.access_id}
        body = {"data": encrypted_payload}

        try:
            response = requests.post(url, headers=headers, json=body)
            res_json = response.json()
            
            if res_json.get("code") == 0: # 业务成功
                # 解密响应数据
                encrypted_resp = res_json.get("data")
                return self.decrypt_data(encrypted_resp)
            else:
                print(f"API请求错误: Code {res_json.get('code')}, Msg {res_json.get('message')}")
                return None
                
        except Exception as e:
            print(f"网络请求异常: {e}")
            return None

# 调用示例
if __name__ == "__main__":
    client = TianyuanClient(ACCESS_ID, ACCESS_KEY)
    result = client.query_risk_info("张三", "110101199001011234", "13800138000")
    
    if result:
        print("风控探查结果:")
        print(json.dumps(result, indent=4, ensure_ascii=False))

2.3 cURL 示例(用于调试)

如果您习惯使用命令行测试,需先手动生成Base64加密字符串,然后执行:

Bash

curl -X POST "<https://api.tianyuanapi.com/api/v1/JRZQ2F8A?t=1734661234567>" \
     -H "Content-Type: application/json" \
     -H "Access-Id: 您的AccessId" \
     -d '{
           "data": "生成好的Base64加密字符串"
         }'

3. 核心数据结构解析:读懂“体检报告”

调用成功后,金融借贷信用风险探查API返回的数据是经过高度提炼的。相比于杂乱的流水,它提供的是结构化的决策依据。

以下是解密后的 JSON 核心结构分析:

3.1 响应概览

JSON

{
    "result_code": "1",                // 探查结果编码
    "max_overdue_amt": "(1000~2000]",  // 最大逾期金额区间
    "max_overdue_days": "16-30",       // 最长逾期天数区间
    "latest_overdue_time": "2023-05",  // 最近逾期时间
    "currently_overdue": "2",          // 当前逾期机构数
    "currently_performance": "12",     // 当前正常履约机构数
    "acc_sleep": "14",                 // 睡眠机构数
    "acc_exc": "0"                     // 异常还款机构数
}

3.2 关键字段详解

开发者在解析数据时,应重点关注以下三个维度:结果定性风险程度活跃程度

字段模块字段名类型业务含义与说明
结果定性result_codeString决策的“红绿灯”
1 (A): 展现用户行为画像,有明细数据(数据最全)。
4 (U): 用户数据不充分,无法画像(可能是白户)。
N: 查无此人。
注意: 代码为1时,后续字段才有分析意义。
风险程度max_overdue_amtString最大逾期金额区间
采用左开右闭格式,如 (1000~2000]。金额越大,违约成本越高,风险等级越高。
风险程度max_overdue_daysString逾期深度
返回如 1-15, >180 等区间。M3(90天以上)通常是坏账的关键分界线。
风险程度latest_overdue_timeString风险时效性
精确到月(YYYY-MM)。如果时间久远(如2年前),可能不影响当前授信;如果是上个月,则需警惕。
多头/活跃度currently_overdueString当前逾期机构数。也就是常说的“多头借贷且违约”,数值>0需重点拦截。
多头/活跃度currently_performanceString当前履约机构数。侧面反映用户的借贷活跃度和还款能力。

4. 应用价值分析:数据如何驱动业务?

在实际开发中,直接将 API 数据展示给操作员是不够的,我们需要将天远API返回的数据转化为业务逻辑。以下是几个典型的落地策略:

场景一:贷前“熔断”机制

利用 max_overdue_dayscurrently_overdue 设置硬性门槛。

  • 逻辑:如果 max_overdue_days 包含 ">180" 或者 currently_overdue > 1。
  • 动作:系统自动拒单,无需进入人工审核环节,节省审核成本。

场景二:用户分层与差异化定价

利用 max_overdue_amt(金额)和 currently_performance(履约记录)。

  • 逻辑:用户 result_code 为 1,无当前逾期,且 currently_performance 数值较高(说明借贷活跃且还款良好)。
  • 动作:标记为优质老客,给予更高的初始额度或更低的利率。
  • 反之:如果 max_overdue_amt 较小(如1000以内)但偶有发生,可标记为次级用户,降低额度试探。

场景三:存量客户预警

定期对存量借贷用户调用金融借贷信用风险探查API

  • 逻辑:监控 latest_overdue_time
  • 动作:如果发现用户在其他平台最近一个月出现了新增逾期(即使在自家平台尚正常),应立即触发风控预警,停止复贷或提前介入催收。

5. 总结与开发建议

金融借贷信用风险探查API(JRZQ2F8A)以其标准化的数据输出,极大地简化了金融风控系统的构建难度。它不仅提供了逾期金额、天数等硬指标,还通过“机构数”维度描绘了用户的共债情况。

给开发者的最后几点建议:

  1. 妥善处理“白户” :当 result_code 返回 4 (U) 或 N 时,并不代表用户一定有风险,只是缺乏数据。建议结合其他天远数据接口(如身份验证、运营商数据)进行交叉验证。
  2. 注重异常处理:在网络波动或解密失败(如错误码1002)时,应有降级策略,而不是直接阻断业务。
  3. 成本控制:由于接口是付费调用,建议在业务系统中对同一用户短时间内的重复查询做缓存处理(Cache),避免无效的API消耗。

通过合理集成这一工具,您的应用将能像经验丰富的信贷员一样,快速看透用户的信用本质。