zoukankan      html  css  js  c++  java
  • 停车系统对接第三方在线支付平台

    首先,我们来看看第三方公司(充电桩)提供的对接接口文档

    接口档@推送停停车费减免信息(供下载)
    说明:充电订单账单生成(含挂起),推送减免信息到停车场系统。
    业务流程描述
    司机驾车驶入停车场。
    在设备上启动充电。
    结束充电后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;
    }
    View Code

    接下来我们来看看停车系统的数据结构

    停车系统为中性版本,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

  • 相关阅读:
    echo 变量不加引号出错
    linux以16进制方式查看文件
    批量删除符合条件的文件
    sed删除行
    linux用户环境变量
    脚本路径问题_dirname
    shell脚本返回字符串
    关于Unix时间戳
    grunt用来压缩前端脚本
    JAVA ThreadPoolExecutor(转)
  • 原文地址:https://www.cnblogs.com/zhouein/p/10176819.html
Copyright © 2011-2022 走看看