PHP 聚合数据全国车辆违章查询 API 接入指南

Dylan
Dylan
发布时间:2026-10-13| 1人浏览过
原创

为方便车主随时掌握交通违章状态,本文将演示如何通过 PHP 接入聚合数据的全国车辆违章查询 API。内容涵盖从申请 Key 到封装 cURL 请求类的全过程,提供可直接复用的代码示例。

准备条件

在开始之前,你需要完成以下步骤:

  1. 申请 AppKey:访问 聚合数据平台 申请“全国车辆违章查询”接口的 AppKey。
  2. 配置环境:确保 PHP 环境已开启 cURL 扩展,用于发起 HTTP 请求。

第一步:引入核心请求类

为了简化调用过程,我们首先创建一个专用的请求类文件 class.juhe.wz.php。在业务入口文件中引入该类并设置字符编码:

<?php
header('Content-type:text/html;charset=utf-8');
include 'class.juhe.wz.php'; // 引入封装好的请求类

第二步:配置基础参数

实例化请求类时需传入你申请的 appkey,这是身份验证的关键凭证:

// 配置接口基本信息
$appkey = '你的AppKey'; // 替换为你申请的违章查询key
$wz = new wz($appkey);

第三步:获取支持的查询城市

不同城市对违章查询所需的信息(如发动机号、车架号)要求不同。建议将城市列表进行缓存(例如每 3 小时更新一次),以减少重复请求:

// 获取所有支持的城市列表
$wzcitys = $wz->getCitys(); 

// 或者获取指定省份下的城市(如广东 GD)
// $wzcitys = $wz->getCitys('GD');

返回的数据结构示例如下,请注意观察 engineno 和 classno 的标识(通常 0 表示不强制要求输入):

{
  "resultcode": "200",
  "reason": "成功的返回",
  "result": [
    {
      "province": "北京",
      "province_code": "BJ",
      "citys": [
        {
          "city_name": "北京",
          "city_code": "BJ",
          "abbr": "京",
          "engine": "1",
          "engineno": "0",
          "classa": "0",
          "class": "0",
          "classno": "0"
        }
      ]
    }
  ],
  "error_code": 0
}

第四步:执行违章查询操作

根据上一步获取的城市要求,填写必要的车牌信息和车辆身份信息进行查询。大多数城市仅支持小型车查询,因此无需传递车辆类型参数:

// 定义查询条件
$city = 'GD_DG';     // 城市代码,必传(如:东莞 DG)
$carno = '粤S*****'; // 车牌号,必传
$engineno = '****';  // 发动机号(部分城市必填)
$classno = '*****';  // 车架号(部分城市必填)

// 发起查询
$wzResult = $wz->query($city, $carno, $engineno, $classno);

if ($wzResult['error_code'] == 0) {
    if (!empty($wzResult['result']['lists'])) {
        foreach ($wzResult['result']['lists'] as $w) {
            // 输出违章详情:地点 时间 行为 扣分 罚款
            echo $w['area'] . " " . $w['date'] . " " . $w['act'] . " " . $w['fen'] . " " . $w['money'] . "<br>";
        }
    } else {
        echo "该车无违章记录";
    }
} else {
    // 查询失败,输出错误码及原因
    echo $wzResult['error_code'] . ":" . $wzResult['reason'];
}

第五步:查看完整封装类代码

以下为 class.juhe.wz.php 的完整源码,包含了获取城市列表、查询违章以及底层的 cURL 请求封装逻辑:

<?php
//----------------------------------
// 聚合数据全国违章接口调用类
//----------------------------------
class wz{
    private $appkey = false; 
    private $cityUrl = 'http://v.juhe.cn/wz/citys';
    private $wzUrl = 'http://v.juhe.cn/wz/query';

    public function __construct($appkey){
        $this->appkey = $appkey;
    }

    /**
     * 获取违章支持的城市列表
     */
    public function getCitys($province=false){
        $params = 'key='.$this->appkey."&format=2";
        $content = $this->juhecurl($this->cityUrl,$params);
        return $this->_returnArray($content);
    }

    /**
     * 查询车辆违章
     * @param string $city   [城市代码]
     * @param string $carno  [车牌号]
     * @param string $engineno [发动机号]
     * @param string $classno [车架号]
     */
    public function query($city,$carno,$engineno='',$classno=''){
        $params = array(
            'key' => $this->appkey,
            'city' => $city,
            'hphm' => $carno,
            'engineno'=> $engineno,
            'classno'  => $classno
        );
        $content = $this->juhecurl($this->wzUrl,$params,1);
        return $this->_returnArray($content);
    }

    private function _returnArray($content){
        return json_decode($content,true);
    }

    /**
     * 底层 cURL 请求封装
     */
    public function juhecurl($url,$params=false,$ispost=0){
        $httpInfo = array();
        $ch = curl_init();

        curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
        curl_setopt( $ch, CURLOPT_USERAGENT , 'JuheData' );
        curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );
        curl_setopt( $ch, CURLOPT_TIMEOUT , 60);
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );

        if( $ispost ){
            curl_setopt( $ch , CURLOPT_POST , true );
            curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
            curl_setopt( $ch , CURLOPT_URL , $url );
        }else{
            if($params){
                curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
            }else{
                curl_setopt( $ch , CURLOPT_URL , $url);
            }
        }

        $response = curl_exec( $ch );
        if ($response === FALSE) {
            return false;
        }
        $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );
        $httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );
        curl_close( $ch );
        return $response;
    }
}
以上就是使用 PHP 接入聚合数据车辆违章查询 API 的详细内容,更多关于 PHP 接口开发与集成的资料请关注本站其它相关文章!
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。