
在消费金融、信贷审批、P2P网贷、融资租赁以及担保评估等众多场景中,快速准确地评估个人信用风险是进行贷前准入和风险决策的关键依据。 "个人信用分" API (JRZQ0L85),能够通过多头趋势、借贷、流量、社交及设备等多维度数据,利用AI机器学习模型,产出一个300-900的综合信用分数。本文将作为一份详细的开发文档,深入剖析此API,详细解读其数据传输机制、请求结构和核心字段含义,帮助开发者利用个人综合信用大数据进行更深层次的数据分析与企业风险管理应用集成。
POSThttps://api.tianyuanapi.com/api/v1/JRZQ0L85?t=13位时间戳Access-Id,用于身份验证。Base64(IV + 密文)。data 字段中。此示例展示了如何使用cURL发送一个已加密的请求。data 字段的值是您在本地根据加密机制生成的最终Base64字符串。
Bash
# 请将 YOUR_ACCESS_ID 替换为您的 Access-Id
# 请将 YOUR_BASE64_ENCRYPTED_DATA 替换为您生成的加密数据
# 请将 13_DIGIT_TIMESTAMP 替换为当前的13位毫秒时间戳
curl -X POST "https://api.tianyuanapi.com/api/v1/JRZQ0L85?t=13_DIGIT_TIMESTAMP" \
-H "Content-Type: application/json" \
-H "Access-Id: YOUR_ACCESS_ID" \
-d '{
"data": "YOUR_BASE64_ENCRYPTED_DATA"
}'这是一个完整的Python调用示例,包含了加密和解密的逻辑占位符。在实际使用中,您需要使用 pycryptodome 库来实现AES加解密。
Python
import requests
import json
import time
import base64
# 实际开发中需要安装 pycryptodome 库
# pip install pycryptodome
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes
# --- 1. 配置您的API凭证 ---
ACCESS_ID = "YOUR_ACCESS_ID"
# 密钥 (Access Key) 是16进制字符串,需转换为16字节的bytes
ACCESS_KEY_HEX = "YOUR_16_BYTE_ACCESS_KEY_HEX"
ACCESS_KEY = bytes.fromhex(ACCESS_KEY_HEX)
# API端点
API_ENDPOINT = "https://api.tianyuanapi.com/api/v1/JRZQ0L85"
# --- 2. 加密辅助函数 (AES-128-CBC) ---
def encrypt_data(plain_text, key):
"""
加密业务数据
"""
try:
# 1. 将明文JSON转为bytes
plain_bytes = plain_text.encode('utf-8')
# 2. 生成16字节的随机IV
iv = get_random_bytes(16)
# 3. 创建AES-CBC加密器
cipher = AES.new(key, AES.MODE_CBC, iv)
# 4. 对明文进行PKCS7填充并加密
padded_data = pad(plain_bytes, AES.block_size, style='pkcs7')
cipher_text = cipher.encrypt(padded_data)
# 5. 拼接 IV 和 密文
encrypted_data_with_iv = iv + cipher_text
# 6. Base64编码
return base64.b64encode(encrypted_data_with_iv).decode('utf-8')
except Exception as e:
print(f"加密失败: {e}")
return None
# --- 3. 解密辅助函数 (AES-128-CBC) ---
def decrypt_data(base64_data, key):
"""
解密响应数据
"""
try:
# 1. Base64解码
encrypted_data_with_iv = base64.b64decode(base64_data)
# 2. 提取 IV (前16字节)
iv = encrypted_data_with_iv[:16]
# 3. 提取密文 (16字节之后)
cipher_text = encrypted_data_with_iv[16:]
# 4. 创建AES-CBC解密器
cipher = AES.new(key, AES.MODE_CBC, iv)
# 5. 解密并去除填充
decrypted_padded_data = cipher.decrypt(cipher_text)
original_data = unpad(decrypted_padded_data, AES.block_size, style='pkcs7')
# 6. 转为JSON对象
return json.loads(original_data.decode('utf-8'))
except Exception as e:
print(f"解密失败: {e}")
return None
# --- 4. 主调用逻辑 ---
def get_credit_score(name, id_card, mobile_no):
# 构造13位时间戳
timestamp = str(int(time.time() * 1000))
url = f"{API_ENDPOINT}?t={timestamp}"
headers = {
"Content-Type": "application/json",
"Access-Id": ACCESS_ID
}
# 构造请求明文
request_payload = {
"name": name,
"id_card": id_card,
"mobile_no": mobile_no
}
# 加密
encrypted_str = encrypt_data(json.dumps(request_payload), ACCESS_KEY)
if not encrypted_str:
print("加密请求数据时出错")
return
# 构造最终请求体
final_request_body = {
"data": encrypted_str
}
try:
# 发送POST请求
response = requests.post(url, headers=headers, data=json.dumps(final_request_body))
response.raise_for_status() # 如果HTTP状态码不是200,则引发异常
# 解析公共响应
common_response = response.json()
transaction_id = common_response.get("transaction_id", "N/A")
print(f"请求流水号: {transaction_id}")
# 检查业务状态码
if common_response.get("code") == 0:
print("业务成功 (code: 0)")
# 解密业务数据
encrypted_biz_data = common_response.get("data")
if encrypted_biz_data:
decrypted_result = decrypt_data(encrypted_biz_data, ACCESS_KEY)
print("--- 解密后的业务数据 ---")
print(json.dumps(decrypted_result, indent=4, ensure_ascii=False))
else:
print("业务成功,但未返回加密数据。")
else:
# 处理业务失败或错误码
print(f"业务失败 (code: {common_response.get('code')})")
print(f"错误信息: {common_response.get('message')}")
except requests.exceptions.RequestException as e:
print(f"HTTP请求失败: {e}")
except json.JSONDecodeError:
print("解析响应失败,非JSON格式")
except Exception as e:
print(f"发生未知错误: {e}")
# --- 5. 执行调用 ---
if __name__ == "__main__":
# 使用示例数据调用 (请替换为真实数据进行测试)
get_credit_score("张三", "110101199003071234", "13800138000")此API的数据交互遵循“加密请求,加密响应”的安全模式。
开发者构建的原始业务数据(JSON明文)经过加密和编码后,作为data字段的值,内嵌在最终的请求体中。
[步骤1: 业务明文]
{
"mobile_no": "string",
"id_card": "string",
"name": "string"
}
|
V
[步骤2: AES-128-CBC 加密 (IV + 密文)]
|
V
[步骤3: Base64 编码]
"xxxx(base64)"
|
V
[步骤4: 最终请求体]
{
"data": "xxxx(base64)"
}服务器返回的响应中,data字段同样是加密的Base64字符串。开发者需要先检查code是否为0(业务成功),然后再对data字段执行解密流程。
[步骤1: 原始响应 (服务器返回)]
{
"code": 0,
"message": "业务成功",
"transaction_id": "fl1234567890abcdef",
"data": "yyyy(base64)" // 加密的业务数据
}
|
V
[步骤2: 提取 "data" 字段, Base64 解码]
|
V
[步骤3: AES-128-CBC 解密 (使用相同的Key)]
|
V
[步骤4: 业务明文 (JSON)]
{
"score_120_General": "480"
}字段名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| string | 是 | 平台分配的账号 Access-Id,用于标识调用者身份。 |
| string | 是 | 固定值为 |
以下字段用于构建加密前的JSON明文。
字段名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| string | 是 | 手机号(11位标准号码) |
| string | 是 | 身份证号(15或18位) |
| string | 是 | 姓名 |
无论业务成功或失败,API均会返回以下公共参数。
字段名 | 类型 | 描述 |
|---|---|---|
| int | 业务状态码。 |
| string | 状态码的描述信息。 |
| string | 唯一流水号,用于问题排查和对账。 |
| string | 业务响应数据。注意: 当 |
当 code 为 0 时,解密 data 字段可得到以下JSON结构。
字段名 | 类型 | 描述 |
|---|---|---|
| string | 个人信用分。范围 300-900,分数越高,信用越好。如果返回 |
当公共响应中的 code 不为 0 时,代表接口调用异常或业务失败。
code | message | 描述 |
|---|---|---|
0 | 业务成功 | 请求成功,且 |
1000 | 查询为空 | 成功查询,但未命中该用户数据(此时 |
1001 | 接口异常 | 服务器内部错误,请稍后重试或联系技术支持。 |
1002 | 参数解密失败 | 服务器无法解密 |
1003 | 基础参数校验不正确 | 检查 |
1004 | 未经授权的IP | 调用IP未在平台IP白名单中。 |
1005 | 缺少Access-Id | 请求头中未包含 |
1006 | 未经授权的AccessId |
|
1007 | 账户余额不足,无法请求 | 账户余额不足,请及时充值。 |
1008 | 未开通此产品 | 该 |
2001 | 业务失败 | 因其他业务逻辑(如参数不合规等)导致的失败。 |
个人信用分 (JRZQ0L85) API的核心价值在于提供了一个快速、量化的风险评估标准,帮助企业实现自动化和智能化的风险控制。
在信贷申请的第一道防线,企业可使用此分数进行快速筛选。例如,根据提供方的建议策略:
score < 450:高风险客群,系统可自动拒绝,减少人工审核成本。
score > 650:优质客群,可进入快速审批通道,提升用户体验。
450 < score < 650:中等风险客群,转入人工审核或要求补充更多材料。
金融机构可以根据信用分数的高低,对不同客户群体实行差异化的利率定价或授信额度。分数越高的客户,可享受越低的利率和越高的额度。
对于已放款的客户,可定期(如每季度)调用此接口,监控其信用分数变化。若分数显著下降,可触发预警机制,及时采取催收或调整额度等贷后管理措施。
接口可以轻松集成到企业现有的风险管理系统(RMS)、客户关系管理系统(CRM)或自动化审批流中。
建议在调用此API前,先通过身份验证API(如身份证二要素)确认用户身份的真实性,再将真实的姓名、身份证、手机号传入本接口,以保证信用评估的准确性。
个人信用分API (JRZQ0L85) 是风险管理体系中的重要工具。它通过先进的AI模型,将复杂的多维度数据转化为一个直观的300-900分数,极大地简化了企业的风险识别流程。开发者在接入时,应重点关注AES-128-CBC的加密和解密实现,确保 IV 的随机性和 PKCS7 填充的正确性。通过合理利用此API代码,企业能够有效降低信用风险,优化审批效率,实现精细化运营。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。