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_code | String | 决策的“红绿灯” 。 |
• 1 (A): 展现用户行为画像,有明细数据(数据最全)。 | |||
• 4 (U): 用户数据不充分,无法画像(可能是白户)。 | |||
• N: 查无此人。 | |||
| 注意: 代码为1时,后续字段才有分析意义。 | |||
| 风险程度 | max_overdue_amt | String | 最大逾期金额区间。 |
采用左开右闭格式,如 (1000~2000]。金额越大,违约成本越高,风险等级越高。 | |||
| 风险程度 | max_overdue_days | String | 逾期深度。 |
返回如 1-15, >180 等区间。M3(90天以上)通常是坏账的关键分界线。 | |||
| 风险程度 | latest_overdue_time | String | 风险时效性。 |
| 精确到月(YYYY-MM)。如果时间久远(如2年前),可能不影响当前授信;如果是上个月,则需警惕。 | |||
| 多头/活跃度 | currently_overdue | String | 当前逾期机构数。也就是常说的“多头借贷且违约”,数值>0需重点拦截。 |
| 多头/活跃度 | currently_performance | String | 当前履约机构数。侧面反映用户的借贷活跃度和还款能力。 |
4. 应用价值分析:数据如何驱动业务?
在实际开发中,直接将 API 数据展示给操作员是不够的,我们需要将天远API返回的数据转化为业务逻辑。以下是几个典型的落地策略:
场景一:贷前“熔断”机制
利用 max_overdue_days 和 currently_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)以其标准化的数据输出,极大地简化了金融风控系统的构建难度。它不仅提供了逾期金额、天数等硬指标,还通过“机构数”维度描绘了用户的共债情况。
给开发者的最后几点建议:
- 妥善处理“白户” :当
result_code返回4(U) 或N时,并不代表用户一定有风险,只是缺乏数据。建议结合其他天远数据接口(如身份验证、运营商数据)进行交叉验证。 - 注重异常处理:在网络波动或解密失败(如错误码1002)时,应有降级策略,而不是直接阻断业务。
- 成本控制:由于接口是付费调用,建议在业务系统中对同一用户短时间内的重复查询做缓存处理(Cache),避免无效的API消耗。
通过合理集成这一工具,您的应用将能像经验丰富的信贷员一样,快速看透用户的信用本质。