PKR停车管理系统和远程服务器定义V2.2

PKR停车管理系统和远程服务器定义V2.2

最后更新时间:2017-06-23

本文档简单定义本地停车管理系统(简称“本地”)跟远程服务器(简称“远程”)交互数据的接口规范。

本地跟远程交互数据分2种应用:

1.(WSMode=0)本地将车辆进出记录发送给远程,远程只接收数据,合法性判断全

部在本地进行;

2.(WSMode=1)本地识别到车牌或者读到卡号,将卡号或车牌等信息发送给远程,

远程验证卡号或车牌的合法性,返回验证结果;本地根据收到的验证结果进行下一步操作(直接开闸放行、收费放行或者非法提示);

注:通过一个服务端程序,可以实现本地跟远程双向通信交互数据,如微信支付、获取剩余车位等。服务端程序必须运行在安装数据库的电脑上!

配置文件设置说明(Config.ini):

[WS]

WSConfig=0 ; 0-关闭接口,1-开启接口

WSUseMDW=0 ; 0-不通过服务端程序(不支持双向通信),1-通过服务端程序(支持双向通信)

WSMode=0 ; 0-第一种应用,1-第2种应用

WSUseWSDL=0 ; 0-标准接口,1-非标接口

WSLog=1 ; 0-关闭日志,1-开启日志

WSUrl=http://127.0.0.1 ; 远程服务器地址或者本地服务端程序地址

WSPort=1213 ; 远程服务器端口或者本地服务端程序端口

WSUserName= ; 用户名

WSPassword= ; 密码(MD5-32编码)

WSPicture=0 ; 0-不上传图片,1-上传图片Base64编码数据

数据传输用HTTP协议POST方式,JSON格式UTF8编码,如

(第1种应用,配置文件WSMode=0):

本地发送(进出场):

如:

Msg= '{"outtime":"2017-04-19 23:21:45","workstationid":1,VLP":"粤B12345"," username ":"test","method":"","Ctypename":"临时车","channeltype":0,"operator":"管理员

","inpicture1":"","direction":0,"password":"d41d8cd98f00b204e9800998ecf8427e","parkid": 1,"inVLP":"","remainspace":100,"outchannel":1,"Vtypename":"小型车

","cardsn":"116021386901","inchannelname":"停车场入口","outchannelname":"停车场入口

","Vtype":1,"receivablefee":"5.00","command":1,"outpicture":"","inchannel":1,"totalspace":1 00,"intime":"2017-04-19

23:21:45","mode":0,"code":1,"recordid":70,"Ctype":3,"inpicture":"","actualfee":"5.00"} '

远程应答:

{"parkid":1,"workstationid":1,"recordid":70,"code":1,"command":1,"result":0,"message":"ok "}

接口说明:

method - 预留

mode - 预留

parkid - 车场编号

workstationid - 当前岗亭ID

recorded - 当前记录ID

code - 当前设备号

command - 指令( 0-岗亭/服务端心跳,

1-主动上传进出记录,

2-主动上传收费记录

3-主动上传充值记录

4-远程服务器发起临时车停车计费请求

5-远程服务器发起月租车充值计费请求

6-远程服务器发起获取车辆信息请求

7-远程服务器发回临时车停车支付结果

8-远程服务器发回月租车充值支付结果

9-远程服务器发起获取剩余车位请求

10-远程服务器发起锁车请求

11-远程服务器发起注册车辆信息请求

12-远程服务器发起车辆进场请求

13-主动上传车辆信息

username - 用户名

password - 密码(MD5-32编码)

cardsn - 卡号

VLP - 车牌号码

Ctype - 卡类型(1-工作卡,2-月卡,3-临时卡,4-储值卡,5-贵宾卡,)

Ctypename - 卡类型名称

Vtype - 车辆类型(预留,1-小型车,2-摩托车,3-大型车,4-超大型车)Vtypename - 车辆类型名称

direction - 进出方向(0-进场,1-出场)

channeltype - 车场类型(0-大车场,1-小车场)

inchannel - 进场通道号(1-255)

inchannelname - 进场通道名称

inpicture - 进场全景图片名

inpicture1 - 进场车牌特写图片名

inpicturedata - 进场全景图片数据(Base64)

inpicturedata1 - 进场车牌特写图片数据(Base64)

intime - 进场时间

outchannel - 出场通道号(1-255)

outchannelname - 出场通道名称

outpicture - 出场全景图片名

outpicture1 - 出场车牌特写图片名

outpicturedata - 出场全景图片数据(Base64)

outpicturedata1 - 出场车牌特写图片数据(Base64)

outtime - 出场时间

inVLP - 进场识别错误的车牌,出场人工查找到进场记录后,把进场识别错误的车牌发送过来,方便云端匹配并清除该记录

operator - 出场操作员

receivablefee - 应收

actualfee - 实收

totalspace - 总车位

remainspace - 剩余车位

result - 返回结果( 0-成功,

1-参数错误

2-没有查询到数据

3-保存数据错误

4-非临时车

5-非月租车

6-已支付未超时

7-其他错误)

message - 错误信息

(第2种应用,配置文件WSMode=1):

本地发送(进出场):

Msg= '{"workstationid":1,"VLP":"粤B12345","method":"","picture1":"","Ctypename":"临时车","channeltype":0,"channelname":"停车场出口","operator":"管理员"," username ":"test"," password

":"d41d8cd98f00b204e9800998ecf8427e","direction":1,"parkid":1,"inVLP":"","picturepath": "","cardsn":"116021386901","Vtype":"小型车

","channel":2,"command":1,"picturepath1":"","mode":0,"code":2,"localtime":"2017-04-19 23:57:12","recordid":0,"Ctype":3,"picture":""}'

远程应答:

{ 'result':'1' , 'channel':'1' , 'Ctype':'3' , 'Vtype':'' , 'message':'交易成功' , 'pay':'0' }

接口说明:

本地发送:

method - 预留

mode - 预留

parkid - 车场编号

workstationid - 当前岗亭ID

recorded - 当前记录ID

code - 当前设备号

command - 指令(0-心跳,1-上传进出数据,2-上传收费数据)

username - 用户名

password - 密码(MD5-32编码)

cardsn - 卡号

VLP - 车牌号码

Ctype - 本地定义车辆类别(2-月租车,3-临时车,4-储值车,5-贵宾车)Ctypename - 本地定义车辆类别名

Vtype - 本地定义车辆类型(1-小型车,2-摩托车,3-大型车,4-超大型车)Vtypename - 本地定义车辆类型名

direction - 进出方向(0-进场,1-出场)

channel - 进出通道号(1-255)

channelname - 通道名称

channeltype - 车场类型(0-大车场,1-小车场)

localtime - 时间(进出场时间)

picture - 全景图片

picture1 - 车牌特写图片

picturepath - 全景图片路径

picturepath1 - 车牌特写图片路径

picturedata - 全景图片Base64编码数据

picturedata1 - 车牌特写图片Base64编码数据

inVLP - 进场识别错误的车牌,出场人工查找到进场记录后,把进场识别错误的车牌发送过来,方便云端匹配并清除该记录

operator - 收费员

totalspace - 总车位

remainspace - 剩余车位

远程接收本地POST数据接口:

1、上传进出、收费、充值记录(command=1、

2、3):RemotePostHost?a=inout

2、上传计费结果(command=4):RemotePostHost?a=upmoney

3、上传充值计费结果(command=5):RemotePostHost?a=uprecharge

4、上传车辆信息(command=6):RemotePostHost?a=upinfo

5、上传剩余车位(command=9):RemotePostHost?a=upspace

6、返回远程注册车辆信息结果(command=11):RemotePostHost?a=upregister

注:RemotePostHost是服务端程序配置文件中设置的POST主机地址

远程应答:

result - 返回结果

channel - 通道号(把通道号回传过来)

Ctype - 远程定义车辆类别(2-月租车,3-临时车,4-储值车,5-贵宾车,)Vtype - 远程定义车辆类型(车类型,1-小型车,2-摩托车,3-大型车,4-

超大型车)

message - 提示信息

pay - 交费

result:

-2 - 交易拒绝

-1 - 通信失败

0 - 参数错误

1 - 入口开闸

2 - 出口开闸

3 - 收费放行

4 - 已进场

5 - 已出场

6 - 已挂失

7 - 已注销

8 - 已过期

9 - 余额不足

10 - 其他错误

上传其他数据:

车辆信息注册(command=13)

本地发送: Msg='{"workstationid":1,"message":"","VLP":"粤

B66666","position":"0","method":"","username":"test","Ctypename":"月租车

","model":"MAGOTAN","balance":"0.05","registertime":"2017-05-25","status":1,"vehiclena me":"张三","parkid":1,

"vehiclenumber":"1234567890123456789012","certificate":"12345678901234567","Vtypen ame":"小型车","result":0,"cardsn":"12","telephone":"138********","Vtype":1,"address":"

深圳市龙华区民治街道

","receivablefee":"0.00","password":"d41d8cd98f00b204e9800998ecf8427e","endtime":"201 7-06-24","command":13,"deposit":"0","mode":0,"color":"黑色

","code":0,"recordid":0,"Ctype":2,"starttime":"2017-05-25","actualfee":"0.00"}'

远程应答:

{"parkid":1,"workstationid":1,"recordid":0,"code":1,"command":13,"result":0,"message":"o k"}

车辆充值记录(command=3)

本地发送:'{"workstationid":1,"message":"","VLP":"粤

B66666","position":"0","method":"","username":"test","Ctypename":"月租车","model":"MAGOTAN","balance":"0.05","registertime":"2017-05-25","status":1,"vehiclename": "张三","parkid":1, "vehiclenumber":"1234567890123456789012","certificate":"12345678901234567","Vtypename": "小型车","result":0,"cardsn":"12","operate":0,"telephone":"138********","Vtype":1,"address":"深圳市龙华区民治街道

","receivablefee":"0","password":"d41d8cd98f00b204e9800998ecf8427e","endtime":"2017-07-24

","command":3,"deposit":"0","mode":0,"color":"黑色

","code":0,"recordid":0,"Ctype":2,"starttime":"2017-06-25","actualfee":"0"}'

远程应答:

{"parkid":1,"workstationid":1,"recordid":0,"code":1,"command":3,"result":0,"message":"ok "}

接口说明:

method - 预留

mode - 预留

parkid - 车场编号

workstationid - 当前岗亭ID

recorded - 当前记录ID(保留0)

code - 当前设备号(保留0)

command - 指令( 0-岗亭/服务端心跳,

1-主动上传进出记录,

2-主动上传收费记录

3-主动上传充值记录

4-远程服务器发起临时车停车计费请求

5-远程服务器发起月租车充值计费请求

6-远程服务器发起获取车辆信息请求

7-远程服务器发回临时车停车支付结果

8-远程服务器发回月租车充值支付结果

9-远程服务器发起获取剩余车位请求

11-远程服务器发起注册车辆信息请求

13-主动上传车辆信息

username - 用户名

password - 密码(MD5-32编码)

cardsn - 卡号

VLP - 车牌号码

Ctype - 卡类型(1-工作卡,2-月卡,3-临时卡,4-储值卡,5-贵宾卡,)

Ctypename - 卡类型名称

Vtype - 车辆类型(预留,1-小型车,2-摩托车,3-大型车,4-超大型车)

Vtypename - 车辆类型名称

Vehiclenumber- 车辆识别号

Status - 状态,预留

model - 车辆型号(字符串)

color - 车辆颜色(字符串)

certificate - 证件号码(字符串)

vehiclename - 车主姓名

telephone - 电话号码

address - 住址

position - 固定车位

deposit - 押金

balance - 余额

registertime - 注册时间

starttime - 车辆有效期起始时间(预留)

endtime - 车辆有效期截止时间

receivablefee - 充值应收

actualfee - 充值实收

receivablefee - 应收

actualfee - 实收

result - 返回结果( 0-成功,

1-参数错误

2-没有查询到数据

3-保存数据错误

4-非临时车

5-非月租车

6-已支付未超时

7-其他错误)

message - 错误信息

关于WebSocket:

由于普通的HTTP协议向远程POST数据只能有本地发起(本地一般没有固定IP),远程立即返回结果,有些操作需要由远程发起,本地响应,如远程主动获取剩余车位,微信支付远程发起计费请求,远程发送支付结果等,这里采用WebSocket技术,建立本地与远程的实时连接,保证本地远程实时通信。

使用WebSocket双向实时通信,必须在安装数据库的电脑上运行服务端程序;

服务端配置文件说明(Config.ini)

[DB]

DBHost=. ; 数据库服务器地址,用一个“.”,不需要修改

DBname=PKH_Database ; 数据库名称

DBUser=sa ; 数据库用户名

DBPass= ; 数据库密码

[Params]

FreeTime=0 ; 用于非标收费标准,一般保持默认值

FirstFeeLimit=0 ; 用于非标收费标准,一般保持默认值

[Config]

User=test ; 远程服务器通信用户名

Password=test ; 远程服务器通信密码

RemoteWebSocketHost=https://www.360docs.net/doc/9716132013.html, ; WebSocket主机地址RemoteWebSocketPort=1234 ; WebSocket端口

RemotePostHost=https://www.360docs.net/doc/9716132013.html,/index.php ; POST主机地址

RemotePostPort=0 ; POST主机端口(0-默认端口)

一、WebSocket握手指令格式:

{"type":"login","shop_id":1,"username":"test","password":"d41d8cd98f00b204e9800998ecf842 7e","parkname":"测试","freetime":0,"chargetimeout":10}

shop_id - parkid

username - 用户名

password - 密码(MD5-32编码)

parkname - 本地设置停车场名称

freetime - 收费标准的非标设置

chargetimeout - 微信支付临时车支付成功后超时时间,从数据库获取

二、微信支付相关接口

1、获取临时车收费金额

远程服务器通过WebSocket发送:

{"type":"money","command":4,"shop_id":9,"VLP":"粤

B11111","intime":"","outtime":"2017-06-09

10:19:11","recordid":"","cardsn":"","channelcode":"","Ctype":"","Vtype":"","parkid":9,"recei vablefee":0,"actualfee":0,"workstationid":0}

本地POST(RemotePostHost?a=upmoney):

{"outtime":"2017-06-09 10:19:06","freetime":"0","workstationid":0,"message":"成功计算费用","sig":"","VLP":"粤B11111","username":"test","method":"","Ctypename":"临时车","channeltype":0,"operator":"","direction":1,"password":"d41d8cd98f00b204e9800998ecf84 27e","parkid":1,"inVLP":"","outchannel":0,"Vtypename":"小型车

","result":0,"cardsn":"","Vtype":1,"receivablefee":"0.05","command":4,"outpicture":"","inch annel":0,"intime":"2017-06-09

10:17:53","mode":0,"code":0,"recordid":1,"Ctype":3,"inpicture":"","actualfee":"0.05"}

2、通知临时车支付结果

远程服务器通过WebSocket发送:

{"type":"info","command":7,"shop_id":9,"cardsn":"","VLP":"粤

B11111","chargetime":"2017-06-12

11:05:46","receivablefee":"0.000","actualfee":"0.0500","parkid":"1","recordid":6,"workstatio nid":1,"result":0}

3、获取月租车充值金额

远程服务器通过WebSocket发送:

{"type":"info","command":5,"shop_id":9,"cardsn":"","VLP":"粤

B12345","starttime":"2017-06-09 11:12:52","endtime":"2017-06-09

11:12:52","count":1,"parkid":9,"recordid":0,"workstationid":0}

本地POST(RemotePostHost?a=uprecharge):

{"workstationid":0,"message":"成功计算费用" ,"VLP":"粤

BN13T6","username":"test","method":"","Ctypename":"月租车","password":"

d41d8cd98f00b204e9800998ecf8427e ","parkid":1,"Vtypename":"小型车

","result":0,"cardsn":"","operate":0,"Vtype":1,"receivablefee":"0.05","endtime":"2017-08-08 ","command":5,"mode":0,"count":1,"recordid":0,"Ctype":2,"starttime":"2017-07-09","actualf ee":"0.05"}

4、通知月租车充值支付结果

远程服务器通过WebSocket发送:

{"type":"info","command":8,"shop_id":9,"cardsn":"","VLP":"粤

B12345","chargetime":"2017-06-12

11:07:51","starttime":"2017-07-09","endtime":"2017-08-08","receivablefee":0.05,"actualfee":0.05 ,"count":1,"parkid":"9","recordid":0,"workstationid":0,"result":0}

三、微信支付流程

1、临时车交费:远程服务器通过WebSocket向本地发送计费请求→本地服务端计算出费用Post到远程服务器指定接口→远程服务器收到费用进入支付流程,支付完成通过WebSocket告诉本地支付结果→流程完成,本地不需要再应答给远程;

2、月租车充值延期:进入充值延期界面,自动通过WebSocket向本地请求当前车辆有效截止时间及1个月的充值费→本地服务端返回当前车辆充值延期1个月的费用和充值延期后的新有效截止时间→充值延期界面选择充值月数后再次通过WebSocket向本地请求新的有效截止时间及费用→本地计算出新的充值延期费用和新有效截止时间,POST到远程服务器指定接口→远程服务器进入支付流程,支付完成通过WebSocket告诉本地支付结果→流程完成,本地不需要再应答给远程。

注:接口往远程服务器发送数据均通过POST方式,远程主动往本地发送请求用WebSocket 方式,比如远程向本地发送计费请求,通过WebSocket发送command=4的JSon字符串数据,本地收到数据进行计费,计费结果通过POST方式发送给远程服务器。

以上接口定义可能会有细微调整!

相关文档
最新文档