城市数字化管理平台
    城市数字化管理平台
    • 接入流程
    • 概念说明
    • 开放平台-告警接口
      • 上报告警信息
        POST
    • 开放平台-设备接口
      • 新增或修改摄像头
        POST
      • 新增或修改设备
        POST
      • 新增或修改端口
        POST
      • 新增或修改电力传感器
        POST
      • 删除摄像头
        POST
      • 删除设备
        POST
      • 删除端口
        POST
      • 删除电力传感器
        POST
      • 上报设备实时信息
        POST
      • 上报设备端口实时信息
        POST
    • 开放平台-充电记录接口
      • 新增充电记录
        POST
    • 开放平台-站点接口
      • 新增或修改站点
        POST
      • 删除站点
        POST

    接入流程

    一. 背景#

    本平台为充电桩管理单位提供电动自行车/汽车充电桩统一管理服务,本文档将指导充电桩运营商与本平台如何集成和对接。

    二. 对接场景#

    image.png

    三. 开发准备#

    1. 申请OperatorID#

    运营商ID,由平台统一分配。

    2. 下载运营商证书#

    证书用于签名及验签,由平台生成后给到运营商。

    四.技术规范#

    1. 平台地址#

    测试地址:
    生产环境:

    2. 接口调用方式#

    接口均为HTTP(S)协议接口,提交方法为Post。

    3. 报文格式#

    请求参数#

    参数名参数说明
    signatureType签名方式,暂时只支持SHA256withRSA
    signature签名
    operatorId运营商ID,由平台分派
    timestamp调用接口当时的时间戳
    示例:
    📌
    curl -X POST https://域名/接口
    -H 'Authorization: {signatureType:"SHA256withRSA",signature:"MNnYzdQxJanN+zU+lTgIcnU9BxGw5dKjK",operatorId:"demoOperator",timestamp:"1554208460"}'
    -H "Accept: application/json"
    -H "Content-Type: application/json"
    -d '业务参数,详细见各个接口定义'

    响应参数#

    参数名参数说明
    code响应码,0为成功,其他为失败,详细见错误码列表
    msg响应消息
    data业务数据
    示例:
    📌
    {
    "code": "",
    "msg": "",
    "data":{}
    }

    五.签名#

    1. 构造签名串#

    将OperatorID、当前时间戳组装成json字符串。
    示例:
    💡
    '{
    "operatorId": "demoOperator",
    "timestamp": 1554208460"
    }'
    注意:字段严格保持上述顺序。

    2 签名#

    利用应用证书里面的公钥进行签名
    示例代码:
    📌
    public static void main(String[] args) throws Exception {
    String key = "证书公钥";
    SignData signData = new SignData();
    signData.setOperatorId("100001");
    signData.setTimestamp("111");
    String signDataStr = JacksonUtil.toJson(signData);
    System.out.println("signDataStr:" + signDataStr);
    String sign = RSAUtils.signByPrivateKey(signDataStr.getBytes(StandardCharsets.UTF_8), key);
    System.out.println("sign:" + sign);
    }
    public static String signByPrivateKey(byte[] data, String privateKey) throws Exception {
    logger.info("用私钥对信息进行数字签名");
    byte[] keyBytes = decryptBASE64(privateKey);
    PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
    KeyFactory factory = KeyFactory.getInstance("RSA");
    PrivateKey priKey = factory.generatePrivate(keySpec);
    Signature signature = Signature.getInstance("SHA256withRSA");
    signature.initSign(priKey);
    signature.update(data);
    return encryptBASE64(signature.sign());
    }
    修改于 2024-10-31 09:01:41
    下一页
    概念说明
    Built with