接入必读
接口描述
用于订阅相关数据
接口地址
由订阅方定义,与订阅接口验证地址相同(示例: http(s)://sample.beyondh.com:8081/)
请求方式
POST
Content-Type
json
请求Body参数
{
"messageId":"660543445970202600",
"scene":'详见场景订阅',
"iotId":"Q7uOhVRdZRRlDnTLv****00100",
"productKey":"a1BwAGV****",
"deviceName":"light",
"hotelId":"1234567",
"timestamp":1636511520,
"charset":"UTF-8",
"signType":"HMAC-SHA1",
"sign":"bbc0a27918333cebf943a2b22ca11b32fee3c23e",
"bizData":'详见场景订阅',
"extData":null,
"version":"v1"
}
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
messageId | 660543445970202600 | String | 消息唯一编号 |
scene | 入住事件 客需服务 | String | 场景名称 |
iotId | Q7uOhVRdZRRlDnTLv****00100 | String | 要查询的设备id,物联网平台为该设备颁发的id,设备的唯一标识符 |
productKey | a1BwAGV**** | String | 要查询的设备所隶属的产品productKey |
deviceName | light | String | 设备名称 |
hotelId | 1234567 | String | 酒店编号 |
timestamp | 1636511520 | Long | 时间戳 |
charset | UTF-8 | String | 签名字符集(固定值) |
signType | HMAC-SHA1 | String | 签名算法(固定值) |
sign | bbc0a27918333cebf943a2b22ca11b32fee3c23e | String | 参数签名 |
bizData | 入住事件 客需服务 | String | 业务数据(JSON) |
extData | String | 扩展数据(JSON)(可空) | |
version | v1 | String | 版本号(固定值) |
参数签名时bizData参数名当作字符串处理,不需要对JSON数据进行解析。
签名验证
编码:
UTF8
签名算法:
HMAC-SHA1
签名步骤:
1. 将请求参数(sign参数和Null值参数除外)按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串。
2. 在上一步生成的字符串最后加上Token。
3. 将上一步生成的字符串,通过UTF8编码转换为Byte数组。
4. 将上一步生成的Byte数据组执行参数中signType指定的加密方式加密,得到sign值。
5. 将上一步得到sign值与请求体中的sign字段进行比较(不区分大小写)。
sign参数和null值参数不参与签名计算
示例:
以上述请求Body中的示例数据为例,假设Token为6tPPBoc4QptK9MxI9gXn。
- 得到的明文字符串如下:
bizData={"name":"张三","sex":"男","roomNumber":"8812","hotelId":"2099698216983"}&charset=UTF-8&deviceName=light&hotelId=1234567&iotId=Q7uOhVRdZRRlDnTLv****00100&messageId=660543445970202600&productKey=a1BwAGV****&scene=PMS.checkin&signType=HMAC-SHA1×tamp=1636511520&version=v16tPPBoc4QptK9MxI9gXn
- 通过HMAC-SHA1得到签名如下:
bbc0a27918333cebf943a2b22ca11b32fee3c23e
响应
订阅方接收到消息后,应返回Http StatusCode:200且Body内容为Success固定字符串,系统由此认为订阅方已成功接收消息。否则,返回其它任何Http StatusCode和字符串,系统均认为推送失败。推送失败的场景下,系统会按1s,2s,5s,10s,15s重试5次,后续不再推送。