我是靠谱客的博主 瘦瘦钥匙,这篇文章主要介绍数位云开发者平台:室内定位api接入文档API文档1 概述2 接口说明3 签名算法4 后台 SDK5 业务码说明,现在分享给大家,希望可以做个参考。

API文档

1 概述

数位云场景识别 API v3接口用于查询用户的场景位置、标签等 POI数据,用户可以使用 Java、Golang、C#、 C++、Python 等开发语言发送请求且接收 JSON 格式数据。

1.1 接入流程

  1. 在数位云菜单“我的应用”创建一个应用后,即可查看到AppID和AppKey,与数位商务同事取得联系,激活AppID和AppKey;

  2. 使用AppID和AppKey接入API进行测试,提供单次和批量两种请求接口,接入步骤如下:

    1) 请求头:按格式设置请求头;

    2) 请求体:按请求参数字段和示例的格式设置请求体;

    3) 签名:按签名规则计算签名,并给签名参数 sign 字段赋值;

    4) 加密:按加解密规则对请求体加密;

    5) 发送请求:将请求头和加密后的请求体发送至接口地址即可获得加密后的响应;

    6) 解密:将加密后的响应按加解密规则解密即可获得明文场景识别结果;

    7) 接入成功标志:响应中 retCode 字段值为0或201001;

    8) 业务码:详细的retCode 说明可参考业务码说明;

    9) 同时也提供多种语言API接入SDK,可简化接入过程,详情参考SDK中的README.md。

  3. 成功接入API后,数位商务同事将提供场景开始测试;

  4. 测试通过后协商正式上线。

2 接口说明

2.1 场景识别单次请求接口

接口地址:https://api.jjfinder.com/v3/scene/api

通过POST方式提交数据到API需要使用测试AppID作为唯一标识,使用测试AppKey进行签名。

注意:请求接口的域名及AppID、AppKey请以商务邮件为准,正式上线时请使用生产的配置。

2.1.1接口参数说明

2.1.1.1设置请求头

在请求头中添加Authorization,值为场景识别单次请求接口 2.1.1.2 中参数内容拼接,格式如下:

t=%d;a=%s;

生成Authorization样例代码如下:

  public String authorization(){      
          return String.format("t=%d;a=%s;",timestamp, appId);  }  

添加请求头样例代码:

conn.setRequestProperty("Content-Type","application/json");
conn.setRequestProperty("Authorization",authorization);      

2.1.1.2 请求参数

定位请求必须参数:

序号字段数据 类型是 否签名含义
1timestampLong是请求时间戳(ms)
2appIdString是appId,由数位分配
3oidString是唯一标识 Android设备标识为IMEI号 iOS设备标识为IDFA
4oidTypeString是唯一标识符类型(数位最终值为小写保存) 1:IMEI 4:iOS设备IDFA
5macString是mac地址/或者iOS IDFV
6macTypeString是3:MAC地址(默认缺省,可以不传)
7networkModeString是连网方式 0:unknown 1:WiFi 2:2G 3:3G 4:4G 5:5G
8ssidEncodeInteger是ssid是否做base64加密(1加密0不加密)
9osTypeInteger是操作系统类型: 0:未知 1:Android 手机 2:IOS 手机 3:Android TV 4:苹果TV 5:Android 手表 6:IOS 手表 7:Android 平板 8:IOS 平板 9:车载
10appChannelInteger是流量来源的应用类型: 0:未知 1:app 2:微信小程序 3:支付宝小程序 4:百度小程序 5:头条小程序 6:快应用 7:设备操作系统集成 8:其他
11passthroughString是透传字段
12signString否签名
13signalsList否WiFi信号列表
13.1bssidString否信号bssid
13.2rssiInteger否信号强度(dBm)
13.3ssidString否信号名称
13.4connectStateInteger否是否为连接信号(1连接,默认为null)
13.5timestampLong否采集时间戳
13.6bandInteger否频段(1:2.4G,2:5G)
13.7channelInteger否信道

连接基站信息:每次定位

14baseStationListList否基站信息列表,根据运营商情况填写具备的参数值
14.1typeInteger否所属网络 0:未知, 1:GSM,2: CDMA,3:WCDMA ,4:LTE
14.2mccInteger否移动国家代码 (GSM,CDMA,WCDMA,LTE)
14.3mncInteger否移动网络号码 (GSM,CDMA,WCDMA,LTE)
14.4lacInteger否位置区域码 (GSM,WCDMA)
14.5cidInteger否UMTS小区身份(GSM,WCDMA)
14.6tacInteger否跟踪区域码 (LTE)
14.7ciInteger否小区标识(LTE)
14.8pciInteger否物理小区id (LTE)
14.9pscInteger否WCDMA主扰码(WCDMA)
14.10sidInteger否CDMA System ID (CDMA)
14.11nidInteger否Network ID (CDMA)
14.12bidInteger否Base Station ID (CDMA)
14.13dBmInteger否1毫瓦分贝数 (GSM,CDMA,WCDMA,LTE)
14.14asuLevelInteger否Asu信号单元 (GSM,CDMA,WCDMA,LTE)
14.15levelInteger否信号格(GSM,CDMA,WCDMA,LTE)
14.16timestampLong否采集时间戳
14.17registerInteger否是否已注册
14.18baseStationTypeString否基站实例类型
14.19earfcnInteger否Android N 新增,绝对射频频道号(LTE)
14.20bandWidthInteger否小区带宽(LTE)
14.21arfcnInteger否Android N 新增,绝对射频频道号(GSM)
14.22bsicInteger否Android N 新增,基站识别码,物理小区id(GSM)
14.23uarfcnInteger否Android N 新增,绝对射频频道号(WCDMA)
14.24rsrpInteger否信号接收强度(LTE)
14.25rsrqInteger否信号接收质量(LTE)
14.26rssnrInteger否信噪比(LTE)
14.27cqiInteger否信道质量指标(LTE)
14.28timingAdvanceInteger否时间提前量(GSM,LTE)
14.29csiRsrpInteger否csi信号接收强度(NR)
14.30csiRsrqInteger否csi信号接收质量(NR)
14.31csiSinrInteger否csi信噪比(NR)
14.32ssRsrpInteger否ss信号接收强度(NR)
14.33ssRsrqInteger否ss信号接收质量(NR)
14.34ssSinrInteger否ss信噪比(NR)
14.35nciLong否小区标识(NR)
14.36nrarfcnInteger否绝对射频频道号(NR)
14.37bitErrorRateInteger否误码率(GSM,WCDMA)
14.38mCdmaDbmInteger否电信2G Dbm
14.39mCdmaEcioInteger否电信2G Ec/Io)
14.40mEvdoDbmInteger否电信3G Dbm
14.41mEvdoEcioInteger否电信3G Ec/Io
14.42mEvdoSnrInteger否电信3G 信噪比

设备信息发送周期:每月首次

15deviceInfoMap否设备信息
15.1imeiString否Android 系统的设备号
15.2idfaString否仅iOS 6.0以上系统的IDFA,如 4CFD11F0-09D0-4BF3-91CE-D50600BD0E64
15.3andidString否用户终端的Android ID,如 9774d56d682e549c
15.4deviceString否设备品牌和型号,如honor v8、Sumsang S6
15.5osvString否操作系统版本,如 iPhone 8.1.2 的参数填写 8.1.2
15.6carrierString否运营商 0:unknown 1:CMCC 2:CUCC 3:CTCC
15.7imsiString否国际移动用户识别码,如 460030912121001
15.8romInfoString否Rom信息, 如:Meizu/FLYME/Flyme+6.2.0.2A
15.9widthFloat否屏幕宽度
15.10heightFloat否屏幕高度

应用列表发送周期:每星期首次

16appInfoList否手机安装app信息
16.1applicationIdString否应用的 PackageName
16.2versionCodeInteger否版本号
16.3versionNameString否版本号
16.4firstTimeLong否首次安装时间ms
16.5lastTimeLong否最新更新时间ms
16.6totalTimeLong否App前台使用时长

蓝牙列表发送周期:每次定位

17bluetoothInfoList否周边蓝牙设备信息
17.1nameString否设备名称
17.2macString否MAC地址,去除冒号分隔符保持小写
17.3rssiInteger否信号强度(dBm)
17.4ibeaconUUIDString否设备UUID
17.5ibeaconMajorIdInteger否设备MajorId
17.6ibeaconMinorIdInteger否设备MinorId
17.7timestampLong否采集时间戳

磁场信息发送周期:每次定位

18magneticInfoMap否移动设备所在位置的磁场信息
18.1magXDouble否X轴方向的磁感应强度
18.2magYDouble否Y轴方向的磁感应强度
18.3magZDouble否Z轴方向的磁感应强度
18.4timestampLong否采集时间戳
18.5sensorNameString否传感器名称
18.6sensorVendorString否传感器供应商
18.7sensorVersionString否传感器版本

姿态方向信息发送周期:每次定位

19orientationInfoMap否移动设备的姿态方向信息
19.1pitchDouble否俯仰角,绕X轴产生的角
19.2rollDouble否翻转角,绕Y轴产生的角
19.3azimuthDouble否方向角,绕Z轴产生的角
19.4timestampLong否采集时间戳
19.5sensorNameString否传感器名称
19.6sensorVendorString否传感器供应商
19.7sensorVersionString否传感器版本

光强信息发送周期:每次定位

20lightInfoMap否移动设备获取到的光强信息
20.1luxDouble否光强
20.2timestampLong否采集时间戳
20.3sensorNameString否传感器名称
20.4sensorVendorString否传感器供应商
20.5sensorVersionString否传感器版本

GPS信息发送周期:每次定位

21gpsInfoMap否GPS定位相关信息
21.1satelliteInfoList否卫星信息
21.1.1mHasEphemerisBoolean否GPS引擎是否有卫星星历(有则返回true)
21.1.2mHasAlmanacBoolean否GPS引擎是否有近似轨道信息(有则返回true)
21.1.3mUsedInFixBoolean否卫星是否被GPS引擎用于计算最近位置(是则返回true)
21.1.4mPrnInteger否伪随机噪声码,是一个具有一定周期的取值0和1的离散符号串,它具有类似于白噪声的自相关函数
21.1.5mSnrDouble否卫星的信噪比 (单位:db)
21.1.6mElevationDouble否卫星的高度角,范围0-90度
21.1.7mAzimuthDouble否卫星的方位角,范围0-360度
21.1.8mCarrierFrequencyHzDouble否所跟踪信号的载波频率
21.2mProviderString否获取是网络定位、GPS定位还是被动定位
21.3mHorizontalAccuracyMetersDouble否获取此位置的估计精确度 (单位:m)
21.4mAltitudeDouble否海拔高度,以WGS 84模型作为参考
21.5mBearingDouble否方向度数(0,360)表示正北偏东多少度(0->北,90->东,180->南,270->西)
21.6mElapsedRealtimeNanosLong否从移动终端启动的时候起经过的时间 (单位:ns)
21.7mSpeedDouble否自传速度(单位:m/s)
21.8mSatelliteCountInteger否扫描到的卫星总数
21.9timestampLong否采集时间戳

经纬度坐标信息:每次定位

22coordinateInfoMap否经纬度坐标信息
22.1coordinateSystemString否坐标系 BD09:百度坐标系 GCJ02:高德、火星坐标系 WGS84:谷歌地球坐标系
22.2longitudeDouble否GPS经度
22.3latitudeDouble否GPS纬度
22.4timestampLong否采集时间戳

请求参数示例:测试前请替换appId及签名信息sign

{
    "timestamp": 1490839495229,
    "appId": "38f6a65f4df2",
    "oid": "52D846AC-63A6-4362-BAC8-DB0EC3B0F82B",
    "oidType": "4",
    "mac": "80FC7C2C-A17D-4537-9BFA-9184D07D0431",
    "networkMode": "3",
    "passthrough": "passthrough_example",
    "sign": "b1d149458113278a3e61287ce1896644abe00189",
    "signals": [{
        "bssid": "e4aa5d3e7d10",
        "rssi": -55,
        "ssid": "Coastal City Free",
        "connectState": 1,
        "timestamp": 1490839495229
    }, {
        "bssid": "e4aa5d3e7d11",
        "rssi": -55,
        "ssid": "LCD_WiFi",
        "timestamp": 1490839495229
    }, {
        "bssid": "8682f42adad5",
        "rssi": -57,
        "ssid": "Superdry2",
        "timestamp": 1490839495229
    }, {
        "bssid": "8482f42adad5",
        "rssi": -57,
        "ssid": "Superdry",
        "timestamp": 1490839495229
    }],
    "baseStationList": [{
        "type": 4,
        "mcc": 460,
        "mnc": 11,
        "lac": null,
        "cid": null,
        "tac": 6165,
        "ci": 26366002,
        "pci": 189,
        "psc": null,
        "sid": null,
        "nid": null,
        "bid": null,
        "dBm": -93,
        "asuLevel": 4,
        "level": 4,
        "timestamp": 1490839495229,
        "register": 1
    }],
"coordinateInfo": {
        "coordinateSystem": "GCJ02",
        "longitude": 113.9359091493863,
        "latitude": 22.5269166908687,
        "timestamp": 1490839495229
    },
    "deviceInfo": {
        "imei": "861839038135744",
        "idfa": "",
        "andid": "bf49728053e511bf",
        "device": "honor v8",
        "osv": "6.0",
        "carrier": "2",
        "imsi": "460030912121001",
        "romInfo": "Meizu/FLYME/Flyme+6.2.0.2A",
        "width": 540,
        "height": 960
    },
    "appInfo": [{
        "applicationId": "com.example.app",
        "versionCode": 2,
        "versionName": "1.1",
        "firstTime": 1487045308000,
        "lastTime": 1487045308000,
        "totalTime": 1487045308000
    }],
    "bluetoothInfo": [{
            "name": "",
            "mac": "64a651e5ff4f",
            "rssi": -26,
            "ibeaconUUID": "00000000-0000-0000-0000-000000000000",
            "ibeaconMajorId": 100,
            "ibeaconMinorId": 1,
            "timestamp": 1490839495229
        },
        {
            "name": "",
            "mac": "64a651e5ff4f",
            "rssi": -52,
            "ibeaconUUID": "00000000-0000-0000-0000-000000000000",
            "ibeaconMajorId": 100,
            "ibeaconMinorId": 1,
            "timestamp": 1490839495229
        }
    ],
    "magneticInfo": {
        "magX": 41.4567754607595,
        "magY": 34.7876059543584,
        "magZ": 30.1879635400726,
        "sensorName": "MMC3416PJ Magnetometer",
        "sensorVendor": "MEMSIC",
        "sensorVersion": "1",
        "timestamp": 1490839495229
    },
    "orientationInfo": {
        "pitch": 10,
        "roll": -30,
        "azimuth": 180,
        "sensorName": "Orientation",
        "sensorVendor": "QTI",
        "sensorVersion": "2",
        "timestamp": 1490839495229
    },
    "lightInfo": {
        "lux": 115,
        "sensorName": "APDS-9921 Light",
        "sensorVendor": "Avago",
        "sensorVersion": "1",
        "timestamp": 1490839495229
    },
    "gpsInfo": {
        "satelliteInfo": [{
            "mHasEphemeris": false,
            "mHasAlmanac": true,
            "mUsedInFix": false,
            "mPrn": 13,
            "mSnr": 0.0,
            "mElevation": 49.0,
            "mAzimuth": 299.0
        }],
        "mProvider": "gps",
        "mHorizontalAccuracyMeters": 56.70,
        "mAltitude": 0.0,
        "mBearing": 77,
        "mElapsedRealtimeNanos": 123456789,
        "mSpeed": 0.0,
        "mSatelliteCount": 1,
        "timestamp": 1490839495229
    },
    "ssidEncode": 0,
    "osType": 1,
    "appChannel": 1
}

2.1.1.3 响应参数

序号字段数据类型说 明
1retCodeInteger业务码。0:定位成功,包含结果; >0:参见业务码说明。
2msgString业务码辅助提示信息。 有定位结果:"OK"; 无定位结果或其他:参见业务码说明。
3requestSignString请求签名
4data 返回数据实体
4.1timestampString接口响应时间戳(ms)
4.2cityString城市
4.3regionString行政区
4.4areaString商圈信息
4.5addressString地址
4.6floorNameString楼层信息
4.7nameStringPOI名称
4.8brandString品牌
4.9areaCategoryString商圈分类
4.10areaAttributeString商圈属性
4.11poiIdStringPOI唯一标识
4.12poiCategoryStringPOI分类
4.13poiAttributeStringPOI属性
4.14coordinateSystemString经纬度坐标系类型: BD09-百度坐标系; GCJ02-火星坐标系; WGS84-地球坐标系
4.15longitudeDouble经度
4.16latitudeDouble纬度
4.17passthroughString透传参数

响应参数示例:

{
    "retCode": 0,
    "msg": "OK",
    "requestSign": "439d8190a0ac977306ae436859bd4a9b25a64ada",
    "data": {
        "timestamp": 1552374907740,
        "city": "深圳市",
        "region": "南山区",
        "area": "海岸城购物中心",
        "address": "文心四路14",
        "floorName": "1",
        "name": "zara",
        "brand": "zara",
        "areaCategory": "购物中心;商场",
        "areaAttribute": "档次:高档",
        "poiId": "fdae3e2cd316bb8a",
        "poiCategory": "购物;服装",
        "poiAttribute": "风格:潮流时尚|品牌来源:欧美",
        "coordinateSystem": "GCJ02",
        "longitude": 113.936074,
        "latitude": 22.51703,
        "passthrough": "passthrough_example"
    }
}

2.2 场景识别批量请求接口

接口地址:https://api.jjfinder.com/v3/scene/api/batch

通过POST方式提交数据到API需要使用测试AppID作为唯一标识,使用测试AppKey进行签名。

注意:请求接口的域名及AppID、AppKey请以商务邮件为准,正式上线时请使用生产的配置。

2.2.1接口参数说明

2.2.1.1设置请求头

在请求头中添加Authorization,值为 2.2.1.2 中参数内容以及请求List长度拼接,List长度值允许范围是:[1, 10],格式如下:

t=%d;a=%s;bs=%d;

生成Authorization样例代码如下:

public String authorization(){      
    return String.format("t=%d;a=%s;bs=%d;",timestamp, appId, requestListSize);  }  

添加请求头样例代码:

conn.setRequestProperty("Content-Type","application/json");

conn.setRequestProperty("Authorization",authorization);    

2.2.1.2 请求参数

定位请求必须参数:只需把 2.1.1.2 对象改为List ,List最多允许放10条数据

请求参数示例:测试前请替换appId及签名信息sign

[
{
    "timestamp": 1490839495229,
    "appId": "38f6a65f4df2",
    "oid": "52D846AC-63A6-4362-BAC8-DB0EC3B0F82B",
    "oidType": "4",
    "mac": "80FC7C2C-A17D-4537-9BFA-9184D07D0431",
    "networkMode": "3",
    "passthrough": "passthrough_example",
    "sign": "b1d149458113278a3e61287ce1896644abe00189",
    "signals": [{
        "bssid": "e4aa5d3e7d10",
        "rssi": -55,
        "ssid": "Coastal City Free",
        "connectState": 1,
        "timestamp": 1490839495229
    }, {
        "bssid": "e4aa5d3e7d11",
        "rssi": -55,
        "ssid": "LCD_WiFi",
        "timestamp": 1490839495229
    }, {
        "bssid": "8682f42adad5",
        "rssi": -57,
        "ssid": "Superdry2",
        "timestamp": 1490839495229
    }, {
        "bssid": "8482f42adad5",
        "rssi": -57,
        "ssid": "Superdry",
        "timestamp": 1490839495229
    }],
    "baseStationList": [{
        "type": 4,
        "mcc": 460,
        "mnc": 11,
        "lac": null,
        "cid": null,
        "tac": 6165,
        "ci": 26366002,
        "pci": 189,
        "psc": null,
        "sid": null,
        "nid": null,
        "bid": null,
        "dBm": -93,
        "asuLevel": 4,
        "level": 4,
        "timestamp": 1490839495229,
        "register": 1
    }],
"coordinateInfo": {
        "coordinateSystem": "GCJ02",
        "longitude": 113.9359091493863,
        "latitude": 22.5269166908687,
        "timestamp": 1490839495229
    },
    "deviceInfo": {
        "imei": "861839038135744",
        "idfa": "",
        "andid": "bf49728053e511bf",
        "device": "honor v8",
        "osv": "6.0",
        "carrier": "2",
        "imsi": "460030912121001",
        "romInfo": "Meizu/FLYME/Flyme+6.2.0.2A",
        "width": 540,
        "height": 960
    },
    "appInfo": [{
        "applicationId": "com.example.app",
        "versionCode": 2,
        "versionName": "1.1",
        "firstTime": 1487045308000,
        "lastTime": 1487045308000,
        "totalTime": 1487045308000
    }],
    "bluetoothInfo": [{
            "name": "",
            "mac": "64a651e5ff4f",
            "rssi": -26,
            "ibeaconUUID": "00000000-0000-0000-0000-000000000000",
            "ibeaconMajorId": 100,
            "ibeaconMinorId": 1,
            "timestamp": 1490839495229
        },
        {
            "name": "",
            "mac": "64a651e5ff4f",
            "rssi": -52,
            "ibeaconUUID": "00000000-0000-0000-0000-000000000000",
            "ibeaconMajorId": 100,
            "ibeaconMinorId": 1,
            "timestamp": 1490839495229
        }
    ],
    "magneticInfo": {
        "magX": 41.4567754607595,
        "magY": 34.7876059543584,
        "magZ": 30.1879635400726,
        "sensorName": "MMC3416PJ Magnetometer",
        "sensorVendor": "MEMSIC",
        "sensorVersion": "1",
        "timestamp": 1490839495229
    },
    "orientationInfo": {
        "pitch": 10,
        "roll": -30,
        "azimuth": 180,
        "sensorName": "Orientation",
        "sensorVendor": "QTI",
        "sensorVersion": "2",
        "timestamp": 1490839495229
    },
    "lightInfo": {
        "lux": 115,
        "sensorName": "APDS-9921 Light",
        "sensorVendor": "Avago",
        "sensorVersion": "1",
        "timestamp": 1490839495229
    },
    "gpsInfo": {
        "satelliteInfo": [{
            "mHasEphemeris": false,
            "mHasAlmanac": true,
            "mUsedInFix": false,
            "mPrn": 13,
            "mSnr": 0.0,
            "mElevation": 49.0,
            "mAzimuth": 299.0
        }],
        "mProvider": "gps",
        "mHorizontalAccuracyMeters": 56.70,
        "mAltitude": 0.0,
        "mBearing": 77,
        "mElapsedRealtimeNanos": 123456789,
        "mSpeed": 0.0,
        "mSatelliteCount": 1,
        "timestamp": 1490839495229
    },
    "ssidEncode": 0,
    "osType": 1,
    "appChannel": 1
}
]

2.2.1.3 响应参数

响应参数说明:即 2.1.1.3 的响应参数的List形式,可以通过requestSign与请求进行关联

响应参数示例:

[
{
    "retCode": 0,
    "msg": "OK",
    "requestSign": "439d8190a0ac977306ae436859bd4a9b25a64ada",
    "data": {
        "timestamp":1552374907740,
        "city": "深圳市",
        "region": "南山区",
        "area": "海岸城购物中心",
        "address": "文心四路14",
        "floorName": "1",
        "name": "zara",
        "brand": "zara",
        "areaCategory": "购物中心;商场",
        "areaAttribute": "档次:高档",
        "poiId": "fdae3e2cd316bb8a",
        "poiCategory": "购物;服装",
        "poiAttribute": "风格:潮流时尚|品牌来源:欧美",
        "coordinateSystem": "GCJ02",
        "longitude": 113.936074,
        "latitude": 22.51703,
        "passthrough": "passthrough_example"
    }
}
]

2.3 请求和响应数据需要AES加解密

2.3.1 加解密方式

加解密密钥:appkey去除"-"后取前16位;

加密算法:AES128;

AES模式:CBC;

AES填充方式:PKCS#7;

AES向量:appkey去除"-"后取后16位;

字符集:UTF-8;

编码:Base64编码。

2.3.2 加解密示例

A、AppKey: 5d4a7bac-98a2-4a9f-a47a-38f6a65f4df2

​ 密钥:5d4a7bac98a24a9f

​ 向量:a47a38f6a65f4df2

B、对上面 2.1.1.2 中的单接口请求参数示例数据加密示例如下:

nW2De+qq6ENDARqLN0QvCKgnJHR7IDK+k3oWTUba8UKsSGX58bFDmU8xkgbI2YiA6p5ZbpiSKHc234U1m/E2FXCcATtRiKhs3AmQ4spQF+zCKhCyV/dSKkCAufi2xYt8qxfjR/kGn+Qi7+gEotSkXy50iQpX4BTbmWXHK1KnP3RyZ2GAuNn+L6WhsjXw8sTVILB3oNJ5qUXPHMRiEmpqlqUb3R8ZCMEHifB5ydMpbeIhkwZ8AjWqgwWm7IxSWo0XYZaHypIyMyw/mLT7DLvIddxdD3axN5fvkFAjnWVI8NYZyANvaf9GTWn7pbQOyQ0GVD9dvfftLijXgKVVWsIzDJrWCvBRLLLAUGfVd28HaBOyeNvVXEqlzXBAecESmggugicFIWqcgzx4VG9tIykwLY0Dyx6s/6vMz4f/khvo+H5ytRvogirncaZ0LgIyHrDrUrvxFNHC2sX4R+PzMpcVW0KW7P2AJBG8kMcMTlP7wbEkumVBfqhcfzlte/derCxwdd1j1Ylm7JDMdIXY3HMPCepjBjxgLlOTqu8CjgNWu2/VuE6mImFlmAN9wrlSWGVQxGuiuaJ+Esxhl4DlGTWNcc9n07EB8fwXHqIcrZP4+Zbesh1zLgyn+lqzlqLsYIM4jOV8yXbMCyjHTALay2FYYPL/VejpWnKaS2WU2wNeis/Q2qjyfIcj6v3wJDSwKDAOO2ax8Zd1tlaC1xUu0IynLnZeJKeLgm7tgfJbdkX8VUUvhA1pSHLvjgpMgGEEZKz1T+iFWgdRjP2RbCNLIdB/4j+pe2OnKVTCOeLhq8AWHivLtyA3FaaiEtbT4rWlXM7Yn3w0jWiZIrLDMU8JC/kwZoysSI/dOggeDA7LamCd8W4Ds/u6tRVQZJA9ACO/08tN8AsXnUEvU5lUCQZfGSonW4ud52ByC3pwQsdxA/zk6QltOti8I+0gkFZ9fKm9J5p6cVLWgMQrlLU7MfbPp9q92HIfoLjf9J2K7Xp08Q35NZp8caxXF+eluNaT3u2cqyeiqSDnNbJ26b+9CO40pqPnqBLUvVymLXmdxdxKj+RiTvsMiQsl2JNuhBe5oVhYgoSkKXy4wO2I+Yeh5qBHtC2gVBLr5WwmCPNo9XLYwONhysfPCLKRksP9LlavvaZudMo6AzeXeGA6SBWC0TXT4IrP88uq/3sYIkHt3q8v/JOVxG0Z/JmpI2Q0g5H/dBDWEUD1yjH5oYsQ+zoi2VpqlhCaVLd5laMYpk5JJz+jQmiY961dYACqY+LQO3KtGqsyTVUrYEcsPj/+vOHHlmFiEpc1JzOkM7YhJBkJUSiWUzhJAqQzB1rD4sfM/08dQvFJMdpKQvGnUWMevQ8S6PyHdZU1jrr3SIU0iVtx3PyXmp8OWsqEak1PJgOJXq2QPRBbkx+LtU4YUQoRcvxYnDg8UyCw74bf5K2sZyhN27EQ4r9gfWwXox4nEBQ0gHhnP5uvUsuQrMXcEgaEef5UIJwWNr3+FerY6ezQ4vVpUzwN0gk/TWhHDv2z/eM3rurVgls0fKlXYJAqVglfgbGoaR4KxkvgzzbxPyR697Q/RIyETDLOdrl4fILaSs8WSxZ5gGZ2+NkqAsrqZUK3/px0jh3SqOcO1qYpKHV/Kqo3FLWVfs6U9JuP74XjjRxrlMhKthg5gIuMXAq2nWPsd4d4nYrqQ8voIVqM9/qCF/lc590dJWs7yrr77F2SnLOESZoX+36RShCg+RhUfKHKX2vR7fWbTvvOe005IY0TktAp9H+okvL8nrNgSLCvex7r07Xf5eCJ3hXughV/bRT7YwwtGTRSpJFcX7CUIf38Ep3FUIFRfve0sKl6OzhXW4v/5NDulNYkoEsCEqLR6UqC2sy4W9uQqlT4wDEZ7ilWbZUEAdYb3KOJrI5JnCbdVNfeTdjASgQT7bFvOO6emThV0rGTDGZoge1nS3M+3IcGfdlI5BlY2wAtmUDv/A4v6EqGAkaIqYP6U8fEpMPVhGEPDqwmpOdFEeY98Q04otbG/5aHYfHMcHu4+RRUHiKYPxPCnsRU9+tW4QNR/UnFy3PeKRse5/paC8h3PQYLGUMadcUq8xN4KPw7se1OFsBNsVkgH6WYxK9+wGY0FC4aFNotY6lY8yJG4L2sXkjGH9T7Hv+QX9T8ijvKOWALdZZZiqIalrAjFkTkb/fSs7VN5D5c4VNO5gXA3At/dRjlHhdCJS+SflF9CqVTXSzhuksyGC8TNYfrmQ0sIhMOvBzBrw0UktkNoKvXSTY/7Zs5wl1JEGCutiZottpXtuoh2lZk6kjtcSERML5ZkUFwtxh5hYOcc5oN4x3HyQetiqQ7QdEcR9vYhl3aLSEZwLErAkXiSOedT0KKJ7WZZytJ/8MN925ssXt5Ub664wZ4mWfLWQhJSPrI3AqtmPoiSBq7//iUEBGfU1CgeuYxOt+Urh824o25vQUpluaSPMDLRnQke+Io5DhH84kwnz7bBfjIrahqYza1Dh8FF6wrH/4d05AaTAVjXYb51cxYj7TLPbmcGtlgJ64Pi9pQ97lt7mrNtxkgbSqFCNEYVdi4zs7C9EAn0radPjD3rOIUk5WzCS1+1v7sLn51WsueMl9PQBeN6UiA5yMxwjuNQOBAAYoVODJRy+rTr+1rkehH65w4katzv1FC0Deugnnsy9apMOvyFmceXhUrJDWSd+nYSQs76K5WAMX7/xXWB51R+QlPHOKLcJFEt5qzTlcl2BJO261ojLz3DWXTlCr9OvEmDCTIF8sR8nM4XbdIrdip2CRqmUZ21+YUNUq/AxAHbDAwyHXbijdgUf7hD8Gl1b0VTxxrt+Tiowr2bQY8UbKNj/Jep3UPFQnQ6IOn90GhphCrfJX/f4sUV7l9bXqGjDRynmsyU+BefwNkmeTCz86VmalnkAQ/Ds4tfhIItj8VfHtSJ/jUAF5khKZgW8YcjAchLc3+VlzYOHKJLh7WbqtRigvIbg==

C、对上面 2.2.1.2 中的批量接口请求参数示例数据加密示例如下:

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

3 签名算法

3.1 签名算法说明

1) 字符集为 utf-8;

2) 所有不为空的参数都需要加入签名,参数必须为做 urlencode 之前的原始数值。如中文 :"位置",作为参数传输时编码为%E9%87%91%E5%B8%81,做签名时则要用其原始中文值"位置"(注意字符集必须是 UTF-8);

3) 对所有不为空的参数按照参数名字母升序排列(如php的ksort函数);

4) 使用符号 # 拼装排序后的参数值, 最后用 # 连接应用的appKey, 整体用sha1计算签名, 就是 sign参数的值. 注意有些语言的计算结果里字母为大写, 需要转化为小写。

5) 批量接口List里面的每一条数据单独计算签名。

3.2 签名示例

对上面 2.1.1.2 请求参数示例数据签名示例如下:

A 参数名按照升序排序并把appKey的值拼接到最后,参数名拼接示例如下:

appChannel#appId#mac#networkMode#oid#oidType#osType#ssidEncode#timestamp#appKey

B 参数值拼接成签名串结果如下:

1#38f6a65f4df2#80FC7C2C-A17D-4537-9BFA-9184D07D0431#3#52D846AC-63A6-4362-BAC8-DB0EC3B0F82B#4#1#0#1490839495229#5d4a7bac-98a2-4a9f-a47a-38f6a65f4df2

C 对签名串做sha1加密后转小写即可得出sign结果如下:

b1d149458113278a3e61287ce1896644abe00189

4 后台 SDK

数位提供了Java、Golang两个版本的后台SDK,已在github开源,对上述请求头设置、加密、签名、请求及响应过程进行了封装,如果后台是这两种语言开发的,可以直接集成SDK包,以简化接入过程。

​ Java SDK:https://github.com/sw-cloud/shuwei-elbs-sdk-java

​ Golang SDK:https://github.com/sw-cloud/shuwei-elbs-sdk-go

5 业务码说明

retCodemsgremark
0OK定位有结果
100001System error服务器错误
100002Environment error环境错误
100003Miss required parameter缺少必传参数
100004Parameter value invalid参数格式错误
100005Sign error签名错误
100006Package name error包名错误
100007Request data is null请求数据为空
100008Lack authorization限制访问。缺少头部授权信息
100009Restricted access.App TPS reach limit限制访问。应用每秒事务数达到上限
100010Restricted access.Transaction reach limit限制访问。达到事务数配额上限
100011Restricted access.TPS reach limit限制访问。接口每秒事务数达到上限
100012Api version is wrong接口版本错误
10002001Illegal oid.Fake oid疑似虚假设备号
10002002Illegal oid.Oid request frequency is too high高频请求
201001No result定位无结果
203004AppId invalidAppId无效
203005App is disabledApp不可用
203006App type errorApp类型错误

最后

以上就是瘦瘦钥匙最近收集整理的关于数位云开发者平台:室内定位api接入文档API文档1 概述2 接口说明3 签名算法4 后台 SDK5 业务码说明的全部内容,更多相关数位云开发者平台:室内定位api接入文档API文档1内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(245)

评论列表共有 0 条评论

立即
投稿
返回
顶部