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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
php模板之Phpbean的目录结构
Jan 10 PHP
php mysql Errcode: 28 终极解决方法
Jul 01 PHP
PHP文件读写操作之文件写入代码
Jan 13 PHP
使用php shell命令合并图片的代码
Jun 23 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
Dec 12 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 图片上传类代码
2009/07/17 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
2013/06/17 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
js异或加解密效果代码
2008/06/25 Javascript
javascript 鼠标拖动图标技术
2010/02/07 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
微信小程序 toast 详解及实例代码
2016/11/09 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
Selenium的使用详解
2018/10/19 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
python 函数中的参数类型
2020/02/11 Python
python复合条件下的字典排序
2020/12/18 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
企业宣传口号
2014/06/12 职场文书
人与自然观后感
2015/06/16 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript