流量变现与风控利器:天远名下车辆车牌查询API接口PHP调用代码与场景解析

17 阅读5分钟

一、 以低代码成本实现权威车务数据变现

微信公众号吸粉、车务代办小程序以及地方性物流信息网的开发中,PHP 凭借其“即部即用”的特性,依然是最高效的生产力工具。名下车辆车牌查询API 是连接用户与车管数据的核心枢纽,它只需用户提供姓名和身份证号,即可对接国家部委权威数据库,返回车辆数量、车牌号及车辆类型等高价值信息。

对于 PHP 开发者而言,API 提供了极其友好的 HTTP 接入方式,无需复杂的环境配置即可快速集成。本文将演示如何利用 PHP 原生代码处理 AES 加密与 POST 请求,帮助开发者以最低的成本接入天远API,在ETC推广、车主核验等场景中快速实现数据变现与业务闭环。

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

本节演示如何在 PHP 环境中(兼容 PHP 5.6 - 8.x)完成接口对接。我们将使用 PHP 标准扩展 curlopenssl,确保代码在大多数虚拟主机或云服务器上都能直接运行。

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 可以快速打通以下高价值场景:

  1. 物流司机线上招募(公众号开发): 在司机报名的 H5 页面中,后端通过 PHP 调用 API 校验。如果返回的 vehicleType 是 11-16(货车)且 plateColor 为 1(黄牌),则自动通过“带车司机”认证;如果是 1(一型客车),则提示“车型不符”,极大提高审核效率。

  2. ETC 推广分销系统: ETC 代理商系统可以通过 API 批量检测潜在客户。输入客户身份证,若 vehicleCount > 0plateColor 为 0(蓝牌)或 11(绿牌),则标记为“高意向客户”进行精准电话营销。

  3. 小区门禁系统对接: 为物业开发的车辆管理系统中,通过 API 验证登记车辆是否确属业主名下。利用 plateNum 字段实现自动录入,避免人工输入车牌错误的尴尬,提升物业数字化水平。

  4. 信贷风控辅助

    在小额贷前审核中,通过 API 快速验证申请人的资产实力。名下拥有多辆 vehicleType=1(一型客车)的用户通常具有更好的偿债能力。

六、 总结

天远名下车辆车牌查询API 是车务数据领域的“瑞士军刀”。对于 PHP 开发者来说,它没有复杂的 SDK 依赖,通过简单的 curl 封装即可使用。

通过本文的 PHP 代码示例,您可以轻松完成数据的加密传输与解密解析。无论是开发简单的车主核验插件,还是构建复杂的物流调度平台。建议开发者利用 PHP 的灵活性,将此查询功能快速集成到现有的 CMS 或微信生态系统中,抢占车务数据服务市场。