首先,我們來看看第三方公司(充電樁)提供的對接接口文檔
接口檔@推送停停車費減免信息(供下載)
說明:充電訂單賬單生成(含掛起),推送減免信息到停車場系統。
業務流程描述
司機駕車駛入停車場。
在設備上啟動充電。
結束充電后XX平台將車牌號和減免時長發送給停車場管理系統。
司機駕車駛離。
道閘系統識別車牌,減免充電優化的時長,根據規則進行剩余時長的收費。
注意:一次入場離場之間,最多減免120分鍾,如果在這期間多次收到減免信息則需要道閘系統去重,避免疊加。
推送停車費減免接口
字段 說明
URL 停車場系統方定義
Method POST
Type JSON
通訊方式 XX平台調取停車場系統的HTTP接口
服務器地址 XX平台調取停車場系統的服務器地址
請求參數
參數 類型 描述
plateNo String 車牌號
merchId String 停車場唯一標識(停車場系統提供)
duration int 減免時長(分鍾)
sign String 簽名(調用方按照簽名規則生成,停車場系統通過眼前規則校驗簽名是否正確)
響應
{
"code":10000,
"msg":"成功",
"data":{
}
}
參數 描述
code 10000.減免成功,其他code可自定義,例如{"code":20033,"msg":"減免失敗 車輛不在內","data":null}
msg code對應的描述信息
data 其他響應數據,沒有為null
下面是簽名規則

public void test(String plateNo, String startTime, String endTime) { Map paramMap = Maps.newHashMap(); paramMap.put("plateNo", plateNo); paramMap.put("startTime", startTime); paramMap.put("endTime", endTime); genSign(paramMap, signKey); } public static String genSign(final Map paramMap, String signKey) { String[] keyArray = new String[paramMap.keySet().size()]; paramMap.keySet().toArray(keyArray); Arrays.sort(keyArray); StringBuffer sb = new StringBuffer(); for (String key : keyArray) { if (StringUtils.isNotBlank(key) && StringUtils.isNotBlank(paramMap.get(key))) { sb.append(key).append("=").append(paramMap.get(key)).append("&"); } } sb.append("key=").append(DigestUtils.md5Hex(signKey)); logger.info("param : {}", sb.toString()); String sign = DigestUtils.md5Hex(sb.toString()).toUpperCase(); logger.info("param: {} sign: {}", sb.toString(), sign); return sign; }
接下來我們來看看停車系統的數據結構
停車系統為中性版本,T16高清車牌識別管理系統,C/S架構.Windows2008+MsSql2008
分析:
車輛入庫后攝像頭將識別到的車號等信息插入數據庫 MYCARCOMERECORD表.如下字段
ID CardNO CPH CardType InTime OutTime ...InPic ...SFTime...SFGate 等(其他字段忽略不計)
經過模擬軟件功能中央收費,發現車輛入庫后 中央收費將計算InTime到收費時間點停車費.繳納后InTime 時間修改為當前時間.再在SFGate由空修改為"中央收費"標記.中央收費后面的停車時間系統將繼續統計.
很明顯,我們只要將某公司在線支付充電費后發送的 Http POST數據到我們的接口來操作數據庫InTime 即可. JAVA/.NET/PHP等語言均可以完成開發.
我采用JAVA開發一套接口,應用在充電樁停車場.運行了一段時間沒有發現問題.該方案得到有幾個億用戶群體的公司開發技術團隊認可.有興趣的可以聯系我 QQ:264059790