php车辆违章查询数据示例


Posted in PHP onOctober 14, 2016

方便有车一族随时了解自己是否有过交通违章,避免因遗忘或逾期处理违章罚单而造成的不必要损失。本代码示例是基于聚合数据全国车辆违章查询API的调用,有需要的可以往下看。

使用前你需要:

通过:https://www.juhe.cn/docs/api/id/36申请一个违章查询的appkey

一、引入封装好的请求类class.juhe.wz.php

header('Content-type:text/html;charset=utf-8');
include 'class.juhe.wz.php'; //引入文件

二、配置参数

//接口基本信息配置
$appkey = '**********'; //您申请的违章查询key
$wz = new wz($appkey);
三 、查询违章支持的城市列表由于支持的城市会不定期更新,但不会太频繁,大家可以将这些数据缓存,比如每3小时来更新一次,不用每次都请求接口。
$wzcitys = $wz->getCitys(); //查询所有的支持城市
$wzcitys = $wz->getCitys('GD'); //查询指定省份下的城市

返回的数据格式如下:(很重要,涉及到下一步查询违章所需的一些条件,具体的字段意思可以参考官方的接口文档,其中regist和registno 可以忽略,是旧版本才需要的)

{
  "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",
          "regist": "0",
          "registno": "0"
        }
      ]
    }
  ],
  "error_code": 0
}

四、查询车辆的违章信息基本上城市只支持小型车查询,所以hpzl可以省去。

//根据需要的查询条件,查询车辆的违章信息
$city = 'GD_DG'; //城市代码,必传
$carno = '粤S*****'; //车牌号,必传
$engineno = '****'; //发动机号,需要的城市必传
$classno = '*****'; //车架号,需要的城市必传
$wzResult = $wz->query($city,$carno,$engineno,$classno);
if($wzResult['error_code'] ==0){
  if($wzResult['result']['lists']){
    foreach($wzResult['result']['lists'] as $key =>$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完整代码

<!--?php
// +----------------------------------------------------------------------
// | JuhePHP [ NO ZUO NO DIE ]
// +----------------------------------------------------------------------
// | Copyright (c) 2010-2015 http://juhe.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: Juhedata <info@juhe.cn-->
// +----------------------------------------------------------------------
 
//----------------------------------
// 聚合数据全国违章接口调用类
//----------------------------------
class wz{
  private $appkey = false; //申请的全国违章查询APPKEY
 
  private $cityUrl = 'http://v.juhe.cn/wz/citys';
 
  private $wzUrl = 'http://v.juhe.cn/wz/query';
 
  public function __construct($appkey){
    $this->appkey = $appkey;
  }
 
  /**
   * 获取违章支持的城市列表
   * @return array
   */
  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 [车架号]
   * @return array 返回违章信息
   */
  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);
  }
 
  /**
   * 将JSON内容转为数据,并返回
   * @param string $content [内容]
   * @return array
   */
  public function _returnArray($content){
    return json_decode($content,true);
  }
 
  /**
   * 请求接口返回内容
   * @param string $url [请求的URL地址]
   * @param string $params [请求的参数]
   * @param int $ipost [是否采用POST形式]
   * @return string
   */
  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) {
      //echo "cURL Error: " . curl_error($ch);
      return false;
    }
    $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );
    $httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );
    curl_close( $ch );
    return $response;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
信用卡效验程序
Oct 09 PHP
第十节--抽象方法和抽象类
Nov 16 PHP
PHP伪造referer实例代码
Sep 20 PHP
PHP及Zend Engine的线程安全模型分析
Nov 10 PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 PHP
PHP中常用的字符串格式化函数总结
Nov 19 PHP
Yii2框架类自动加载机制实例分析
May 02 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
May 28 PHP
PHP7内核之Reference详解
Mar 14 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 26 PHP
php中文语义分析实现方法示例
Sep 28 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
Mar 18 PHP
基于PHPexecl类生成复杂的报表表头示例
Oct 14 #PHP
php+jQuery递归调用POST循环请求示例
Oct 14 #PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 #PHP
PHP中多线程的两个实现方法
Oct 14 #PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 #PHP
PHP面向对象自动加载机制原理与用法分析
Oct 14 #PHP
ThinkPHP打水印及设置水印位置的方法
Oct 14 #PHP
You might like
PHP伪静态写法附代码
2008/06/20 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
基于ajax和jsonp的原生封装(实例)
2017/10/16 Javascript
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
浅谈js闭包理解
2019/03/28 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
js实现html滑动图片拼图验证
2020/06/24 Javascript
微信小程序开发数据缓存基础知识辨析及运用实例详解
2020/11/06 Javascript
使用python 获取进程pid号的方法
2014/03/10 Python
Python下使用Psyco模块优化运行速度
2015/04/05 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
详解python分布式进程
2018/10/08 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
python中wx模块的具体使用方法
2020/05/15 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
办公室员工岗位工作职责
2014/03/10 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
赡养老人协议书范本
2015/08/06 职场文书
k-means & DBSCAN 总结
2021/04/27 Python