一、 以低代码成本实现权威车务数据变现
在微信公众号吸粉、车务代办小程序以及地方性物流信息网的开发中,PHP 凭借其“即部即用”的特性,依然是最高效的生产力工具。名下车辆车牌查询API 是连接用户与车管数据的核心枢纽,它只需用户提供姓名和身份证号,即可对接国家部委权威数据库,返回车辆数量、车牌号及车辆类型等高价值信息。
对于 PHP 开发者而言,API 提供了极其友好的 HTTP 接入方式,无需复杂的环境配置即可快速集成。本文将演示如何利用 PHP 原生代码处理 AES 加密与 POST 请求,帮助开发者以最低的成本接入天远API,在ETC推广、车主核验等场景中快速实现数据变现与业务闭环。
二、 API接口调用示例(PHP版)
本节演示如何在 PHP 环境中(兼容 PHP 5.6 - 8.x)完成接口对接。我们将使用 PHP 标准扩展 curl 和 openssl,确保代码在大多数虚拟主机或云服务器上都能直接运行。
1. 接入前准备
- 接口地址:
https://api.tianyuanapi.com/api/v1/QCXG3G8K - 加密方式:AES-128-CBC + Base64
- 请求参数:
id_card(身份证),name(姓名)
2. Curl 命令行预检
Bash
# 验证 Access-Id 是否有效
curl -I "https://api.tianyuanapi.com/api/v1/QCXG3G8K?t=1720000000"
3. PHP 完整调用示例
以下代码封装了一个轻量级的 TianyuanVehicleClient 类,直接复制即可使用。
PHP
<?php
class TianyuanVehicleClient {
// 接口地址
private $apiUrl = "https://api.tianyuanapi.com/api/v1/QCXG3G8K";
private $accessId;
private $accessKey;
public function __construct($accessId, $accessKey) {
$this->accessId = $accessId;
$this->accessKey = $accessKey;
}
/**
* AES-128-CBC 加密
*/
private function encryptData($data) {
$key = $this->accessKey;
// 生成16字节随机IV
$iv = openssl_random_pseudo_bytes(16);
$jsonStr = json_encode($data);
// 加密
$encrypted = openssl_encrypt($jsonStr, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
// 拼接 IV + 密文 并 Base64编码
return base64_encode($iv . $encrypted);
}
/**
* AES-128-CBC 解密
*/
private function decryptData($base64Str) {
$raw = base64_decode($base64Str);
if (strlen($raw) < 17) return null;
$iv = substr($raw, 0, 16); // 提取前16位IV
$cipherText = substr($raw, 16); // 提取密文
$decrypted = openssl_decrypt($cipherText, 'AES-128-CBC', $this->accessKey, OPENSSL_RAW_DATA, $iv);
return json_decode($decrypted, true);
}
/**
* 发起查询
*/
public function query($idCard, $realName) {
// 构造业务参数
$params = [
'id_card' => $idCard,
'name' => $realName
];
// 1. 加密
$encryptedData = $this->encryptData($params);
// 2. 构造POST请求体
$postData = json_encode(['data' => $encryptedData]);
// 添加时间戳防止缓存
$url = $this->apiUrl . "?t=" . (time() * 1000);
// 3. 发送 CURL 请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Access-Id: ' . $this->accessId // 必填头信息
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$curlErr = curl_error($ch);
curl_close($ch);
if ($curlErr) {
return ['error' => 'Curl Error: ' . $curlErr];
}
// 4. 处理响应
$resArr = json_decode($response, true);
if (isset($resArr['code']) && $resArr['code'] == 200 && isset($resArr['data'])) {
// 解密数据
return $this->decryptData($resArr['data']);
} else {
return ['error' => $resArr['message'] ?? 'API调用失败'];
}
}
}
// --- 调用演示 ---
// 请替换为您的真实 Access-Id 和 Key
$client = new TianyuanVehicleClient("YOUR_ACCESS_ID", "YOUR_16_BYTE_KEY_HERE");
$idCard = "11010119900101xxxx";
$name = "张三";
$result = $client->query($idCard, $name);
// --- 输出结果 ---
echo "<pre>";
if (isset($result['error'])) {
echo "查询失败: " . $result['error'];
} else {
echo "=== 查询成功 ===\n";
echo "名下车辆数: " . $result['vehicleCount'] . "\n"; //
if (!empty($result['list'])) {
foreach ($result['list'] as $car) {
echo "----------------\n";
echo "车牌号: " . $car['plateNum'] . "\n";
echo "类型码: " . $car['vehicleType'] . "\n";
echo "颜色码: " . $car['plateColor'] . "\n";
}
}
}
echo "</pre>";
?>
三、 核心数据结构解析
PHP 的关联数组结构非常适合处理 API 返回的数据。天远API 的响应数据解密后包含两个核心字段:
vehicleCount(String): 这是一个简单的数字字符串,表示该身份证下关联的车辆总数。PHP 开发者可以直接用if ($res['vehicleCount'] > 0)来判断用户是否有车。list(Array): 车辆明细列表。这是一个包含多条车辆信息的数组,每条记录都包含车牌号、颜色和车辆类型。如果用户无车,该数组可能为空。
四、 字段详解(PHP 数组 Key 对照)
为了方便开发者快速对照,以下表格详细列出了 PHP 数组中的 Key 及其对应的业务含义。
1. 车辆明细列表 (Keys in $result['list'])
| 数组键名 (Key) | 含义 | PHP处理建议 |
|---|---|---|
| plateNum | 车牌号 | 可直接输出,如 "京A88888" |
| plateColor | 车牌颜色 | 对应下表,建议建立映射数组转为中文 |
| vehicleType | 车辆类型 | 对应下表,关键字段,区分客车与货车 |
2. 车牌颜色对照表 (plateColor)
使用 PHP 数组映射可以快速将代码转换为前端显示的颜色标签。
| Code | 颜色/类型 | 业务判断逻辑示例 |
|---|---|---|
| 0 | 蓝色 | if ($code == 0) echo '私家车'; |
| 1 | 黄色 | if ($code == 1) echo '大型车/教练车'; |
| 11 | 绿色 | if ($code == 11) echo '新能源车'; |
| 2 | 黑色 | 港澳/外籍车辆 |
| 5 | 黄绿双拼 | 大型新能源车 |
3. 车辆类型对照表 (vehicleType)
用于精准识别车辆用途,特别是在物流招募场景中。
| Code | 含义 | 备注 |
|---|---|---|
| 1 | 一型客车 | ≤9座,最常见的家用车型 |
| 11 - 16 | 货车系列 | 从一型到六型货车,数字越大载重越大 |
| 21 - 26 | 专项作业车 | 起重机、泵车等特种车辆 |
五、 应用价值分析
对于 PHP 开发者而言,接入 API 可以快速打通以下高价值场景:
-
物流司机线上招募(公众号开发): 在司机报名的 H5 页面中,后端通过 PHP 调用 API 校验。如果返回的
vehicleType是 11-16(货车)且plateColor为 1(黄牌),则自动通过“带车司机”认证;如果是 1(一型客车),则提示“车型不符”,极大提高审核效率。 -
ETC 推广分销系统: ETC 代理商系统可以通过 API 批量检测潜在客户。输入客户身份证,若
vehicleCount > 0且plateColor为 0(蓝牌)或 11(绿牌),则标记为“高意向客户”进行精准电话营销。 -
小区门禁系统对接: 为物业开发的车辆管理系统中,通过 API 验证登记车辆是否确属业主名下。利用
plateNum字段实现自动录入,避免人工输入车牌错误的尴尬,提升物业数字化水平。 -
信贷风控辅助:
在小额贷前审核中,通过 API 快速验证申请人的资产实力。名下拥有多辆
vehicleType=1(一型客车)的用户通常具有更好的偿债能力。
六、 总结
天远名下车辆车牌查询API 是车务数据领域的“瑞士军刀”。对于 PHP 开发者来说,它没有复杂的 SDK 依赖,通过简单的 curl 封装即可使用。
通过本文的 PHP 代码示例,您可以轻松完成数据的加密传输与解密解析。无论是开发简单的车主核验插件,还是构建复杂的物流调度平台。建议开发者利用 PHP 的灵活性,将此查询功能快速集成到现有的 CMS 或微信生态系统中,抢占车务数据服务市场。