@zushuxin
2017-07-13T09:33:11.000000Z
字数 7707
阅读 192

xlshlr
接口如无特殊说明,遵照以下规范。
1. 时间格式约定 "yyyy-MM-dd HH:mm:ss SSS"、"yyyy-MM-dd HH:mm:ss"、"yyyy-MM-dd"、"HH:mm:ss"
2. 金额格式统一为:(最大9位).(最多2位)。需要通过此正则表达式^((([1-9]{1}\d{0,9}))|([0]{1}))((\.(\d){2}))?$。
3. 需要分页时,分页参数start、limit都必须传递,传递一个不会生效
设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 特别注意以下重要规则:
* 参数名ASCII码从小到大排序(字典序);
* 参数名区分大小写;
* sign和signType和空值参数不参与签名
* 传递参数的值中如果存在特殊字符(如:&、@等),那么该值需要做URL Encoding,这样请求接收方才能接收到正确的参数。此时,待签名数据应该是原始值而不是encoding之后的值。 举例:
例:假设传送的参数如下: appid: tjd930ea5d5a258f4f charset:utf-8 service:tcwindows.Park.getParkInfo timestamp:2016-04-01 12:11:11 version:1.0
1. 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下: stringA="appid=tjd930ea5d5a258f4f&charset=utf-8&service=tcwindows.Park.getParkInfo=1000×tamp=2016-04-01 12:11:11&version=1.0&.............";
2. 拼接API密钥: stringSignTemp="stringA192006250b4c09247ec02edce69f6a2d"
3. md5签名得到最终sign sign=MD5(stringSignTemp)="9A0A8659F005D6984697E2CA0A9CF3B7"
| 参数 | 类型 | 长度 | 是否必须 | 名称 | 备注 |
|---|---|---|---|---|---|
| version | string | Y | 调用的接口版本 | 固定为:1.0 | |
| sign | string | Y | 请求参数的签名串 | 详见签名 | |
| partner | string | Y | 合作者key | ||
| timestamp | string | Y | 发送请求时间 | 格式" yyyy-MM-dd HH:mm:ss" | |
| charset | string | Y | 字符集 | 如utf-8,gbk | |
| signType | string | Y | 签名类型 | 目前仅支持md5 | |
| service | string | Y | 接口名称 | 需要调用的接口名称 |
4. 响应参数列表
| 参数 | 类型 | 长度 | 是否必须 | 名称 | 备注 |
|---|---|---|---|---|---|
| timestamp | string | Y | 响应时间 | 格式"yyyy-MM-dd HH:mm:ss" | |
| returnCode | string | Y | 开放平台返回状态码 | T代表成功,F代表失败 | |
| returnMsg | string | Y | 开放平台返回信息 | OK代表成功,其它为开放平台失败信息 | |
| isSuccess | string | Y | 实际业务处理结果 | true代表成功,false代表失败 | |
| msg | string | N | 实际业务处理结果备注 | 业务失败时会描述失败原因 |
服务器调用事例:
String key="e1bbd6c374dc428697fe4a6d9fb16dd5"; --开发者秘钥SortedMap<String, String> map = new TreeMap<String, String>();map.put("signType","md5");map.put("partner","ef4f7deba25941fcab5709f1f865ca3c");map.put("service","tcpark.pmPark.getParkInfoListByGeo");map.put("charset","utf-8");map.put("version","1.0");map.put("start","0");map.put("limit","5");map.put("timestamp", DateUtils.currentDatetime());/*签名*/String sign= SignUtil.md5Sign(map, key, "UTF-8");String url="http://prep.tingjiandan.com/openapi/gateway"; --测试环境开放平台访问地址map.put("sign",sign);String result= HttpClient.sendRequestByPost(url, JsonUtil.objectToJson(map), true);System.out.println(result);
| 参数 | 类型 | 长度 | 是否必须 | 名称 | 备注 |
|---|---|---|---|---|---|
| start | string | N | 分页参数,数据开始位置 | pmParkId为空时该参数必传 | |
| limit | string | N | 分页参数,数据结束位置,最多查询1000条 | pmParkId为空时该参数必传 | |
| pmParkId | string | N | 停车场ID | ||
| pmParkName | string | N | 停车场名称 | 精确查询 | |
| pmParkNameLike | string | N | 停车场名称 | 模糊查询 |
* 响应参数列表
| 参数 | 类型 | 长度 | 是否必须 | 名称 | 备注 |
|---|---|---|---|---|---|
| timestamp | string | 响应时间 | |||
| returnCode | string | 响应码 | |||
| returnMsg | string | 响应描述 | |||
| isSuccess | string | 请求是否成功 | true 成功,false 失败 | ||
| totalCount | string | 记录总条数 | |||
| parkList | array{object} | 停车场列表 | |||
| pmParkId | string | 停车场ID | |||
| parkName | string | 停车场名称 | |||
| provinnce | string | 所在省份 | |||
| city | string | 所在城市 | |||
| district | string | 所在区县 | |||
| parkType | string | 停车场类型 | 停车场车位类型(1、占道 2、路外开放 3、路外封闭 4、地下) | ||
| category | string | 停车场收费类型 | 0、免费 1、收费 2、限免 | ||
| isOnlinePay | string | 是否支持在线支付 | 0是,1否 | ||
| standardCount | string | 停车场备案车位数 | |||
| maxCount | string | 停车场划线车位数 | |||
| restCount | string | 停车场剩余车位数 | |||
| address | string | 地址 | |||
| longitude | string | 停车场经度-百度地图 | |||
| latitude | string | 停车场纬度-百度地图 | |||
| wLongitude | string | 停车场经度-W84坐标 | |||
| wLatitude | string | 停车场纬度-W84坐标 | |||
| parkExits | array{object} | 出入口列表 | |||
| longitude | string | 停车场出入口经度-百度地图 | |||
| latitude | string | 停车场出入口纬度-百度地图 | |||
| wLongitude | string | 停车场出入口经度-W84坐标 | |||
| wLatitude | string | 停车场出入口纬度-W84坐标 | |||
| exitNo | string | 停车场出入口名称 | |||
| exitType | string | 停车场出入口类型 | 0、出口 1、入口 2、出入口 | ||
| parktolls | array{object} | 停车场收费规则集合 | |||
| carNumColor | string | 车牌号颜色 | blue 蓝色,black 黑色,yellow 黄色 | ||
| dayFeeStartTime | string | 白天收费开始时间 | |||
| dayFeeEndTime | string | 白天收费结束时间 | |||
| dayFirstTime | string | 日间首个收费区间时长 | 单位:分钟 | ||
| dayFirstHour | string | 日间首个收费区间计费 | 单位:元 | ||
| dayFirstMinTime | string | 日间首个收费区间内最小收费区间时长 | 单位:分钟 | ||
| dayFirstMinAmount | string | 日间首个收费区间内最小收费区间计费 | 单位:元 | ||
| dayOtherHour | string | 日间首个收费区间外计费 | 单位:元 | ||
| dayOtherMinTime | string | 日间首个收费区间外最小收费区间时长 | 单位:分钟 | ||
| dayOtherMinAmount | string | 日间首个收费区间外最小收费区间计费 | 单位:元 | ||
| nightFeeStartTime | string | 夜间收费开始时间 | |||
| nightFeeEndTime | string | 夜间收费结束时间 | |||
| nightFirstTime | string | 夜间首个收费区间时长 | 单位:分钟 | ||
| nightFirstHour | string | 夜间首个收费区间计费 | 单位:元 | ||
| nightFirstMinTime | string | 夜间首个收费区间内最小收费区间时长 | 单位:分钟 | ||
| nightFirstMinAmount | string | 夜间首个收费区间内最小收费区间计费 | 单位:元 | ||
| nightOtherHour | string | 夜间首个收费区间外计费 | 单位:元 | ||
| nightOtherMinTime | string | 夜间首个收费区间外最小收费区间时长 | 单位:分钟 | ||
| nightOtherMinAmount | string | 夜间首个收费区间外最小收费区间计费 | 单位:元 | ||
| maxAmount | string | 收费金额上限 | 单位:元 |
* 响应参数事例:
{"timestamp": "2017-05-11 16:00:38 255","returnCode": "T","totalCount": "3","returnMsg": "OK","isSuccess": "true","parkList": [{"pmParkId": "053b6f4dadda4ab7a859d6a085d2ccf1","parkName": "青岛市市级机关新浦路停车场","category": "1","isOnlinePay": "0","maxCount": "300","standardCount": "260","restCount": "241","provinnce": "山东省","city": "青岛市","district": "市南区","address": "青岛市市南区新浦路9号","longitude": "120.391093","latitude": "36.073982","parkType": "3","wLongitude": "120.384631","wLatitude": "36.067883","parktolls": [{"carNumColor": "blue","dayFeeStartTime": "070000","dayFeeEndTime": "210000","dayFirstTime": "60","nightFirstTime": "60","dayFirstHour": "4.0","dayFirstMinTime": "60","dayFirstMinAmount": "4.0","dayOtherHour": "4.0","dayOtherMinTime": "60","dayOtherMinAmount": "4.0","nightFeeStartTime": "210000","nightFeeEndTime": "070000","nightFirstHour": "4.0","nightFirstMinTime": "60","nightFirstMinAmount": "4.0","nightOtherHour": "4.0","nightOtherMinTime": "60","nightOtherMinAmount": "4.0","maxAmount": "20.0"}],"parkExits": [{"exitNo": "青岛市市级机关新浦路停车场中门出入口","exitType": "2","longitude": "120.391093","latitude": "36.073982","wLongitude": "120.384631","wLatitude": "36.067883"},{"exitNo": "青岛市市级机关新浦路停车场东门出入口","exitType": "2","longitude": "120.391748","latitude": "36.073698","wLongitude": "120.385282","wLatitude": "36.067611"},{"exitNo": "青岛市市级机关新浦路停车场西门出入口","exitType": "2","longitude": "120.390446","latitude": "36.073829","wLongitude": "120.383987","wLatitude": "36.067719"}]},{"pmParkId": "09dd128d287743d7809076a70ff9b81c","parkName": "青岛市中海国际社区商业网点A区停车场","category": "1","isOnlinePay": "0","maxCount": "150","standardCount": "260","restCount": "14","provinnce": "山东省","city": "青岛市","district": "李沧区","address": "青岛市李沧区玉液泉路","longitude": "120.436535","latitude": "36.160337","parkType": "3","wLongitude": "120.429752","wLatitude": "36.154555","parktolls": [{"carNumColor": "blue","dayFeeStartTime": "070000","dayFeeEndTime": "210000","dayFirstTime": "60","nightFirstTime": "60","dayFirstHour": "4.0","dayFirstMinTime": "60","dayFirstMinAmount": "4.0","dayOtherHour": "4.0","dayOtherMinTime": "60","dayOtherMinAmount": "4.0","nightFeeStartTime": "210000","nightFeeEndTime": "070000","nightFirstHour": "4.0","nightFirstMinTime": "60","nightFirstMinAmount": "4.0","nightOtherHour": "4.0","nightOtherMinTime": "60","nightOtherMinAmount": "4.0","maxAmount": "20.0"}],"parkExits": []},{"pmParkId": "0c43fccf36374f1983dc8455b30e63b6","parkName": "青岛市东方花园停车场","category": "1","isOnlinePay": "0","maxCount": "128","standardCount": "260","restCount": "71","provinnce": "山东省","city": "青岛市","district": "市南区","address": "青岛黄岛区经济技术开发区阿里山路138号","longitude": "120.200318","latitude": "35.965108","parkType": "3","wLongitude": "120.193753","wLatitude": "35.959383","parktolls": [{"carNumColor": "blue","dayFeeStartTime": "090000","dayFeeEndTime": "210000","dayFirstTime": "60","nightFirstTime": "60","dayFirstHour": "0.0","dayFirstMinTime": "60","dayFirstMinAmount": "0.0","dayOtherHour": "0.0","dayOtherMinTime": "60","dayOtherMinAmount": "0.0","nightFeeStartTime": "210000","nightFeeEndTime": "090000","nightFirstHour": "1.0","nightFirstMinTime": "60","nightFirstMinAmount": "1.0","nightOtherHour": "1.0","nightOtherMinTime": "60","nightOtherMinAmount": "1.0","maxAmount": "0.0"}],"parkExits": [{"exitNo": "A出入口","exitType": "2","longitude": "120.200322","latitude": "35.965111","wLongitude": "120.193765","wLatitude": "35.959375"}]}]}
| 参数 | 类型 | 长度 | 是否必须 | 名称 | 备注 |
|---|---|---|---|---|---|
| pmParkId | string | Y | 停车场id |
* 响应参数列表
| 参数 | 类型 | 长度 | 是否必须 | 名称 | 备注 |
|---|---|---|---|---|---|
| timestamp | string | 响应时间 | |||
| returnCode | string | 响应码 | |||
| returnMsg | string | 响应描述 | |||
| isSuccess | string | 请求是否成功 | true 成功,false 失败 | ||
| totalCount | string | 记录数总数量 | |||
| pmRealTimePark | Map{object} | 实时车位数信息 | |||
| pmParkId | string | 停车场ID | |||
| standardCount | string | 停车场备案车位数 | |||
| maxCount | string | 停车场划线车位数 | |||
| restCount | string | 停车场剩余车位数 |
* 响应参数事例:
{"timestamp": "2017-05-11 16:00:38 255","returnCode": "T","returnMsg": "OK","isSuccess": "true","pmRealTimePark":{"restCount": "14","pmParkId": "09dd128d287743d7809076a70ff9b81c","standardCount": "150","maxCount": "150"}}