Skip to main content

接入必读

接口描述

用于订阅相关数据

接口地址

由订阅方定义,与订阅接口验证地址相同(示例: 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"
}
参数名示例值参数类型参数描述
messageId660543445970202600String消息唯一编号
scene入住事件 客需服务String场景名称
iotIdQ7uOhVRdZRRlDnTLv****00100String要查询的设备id,物联网平台为该设备颁发的id,设备的唯一标识符
productKeya1BwAGV****String要查询的设备所隶属的产品productKey
deviceNamelightString设备名称
hotelId1234567String酒店编号
timestamp1636511520Long时间戳
charsetUTF-8String签名字符集(固定值)
signTypeHMAC-SHA1String签名算法(固定值)
signbbc0a27918333cebf943a2b22ca11b32fee3c23eString参数签名
bizData入住事件 客需服务String业务数据(JSON)
extDataString扩展数据(JSON)(可空)
versionv1String版本号(固定值)

参数签名时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。

  1. 得到的明文字符串如下:
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&timestamp=1636511520&version=v16tPPBoc4QptK9MxI9gXn
  1. 通过HMAC-SHA1得到签名如下:

bbc0a27918333cebf943a2b22ca11b32fee3c23e

响应

订阅方接收到消息后,应返回Http StatusCode:200且Body内容为Success固定字符串,系统由此认为订阅方已成功接收消息。否则,返回其它任何Http StatusCode和字符串,系统均认为推送失败。推送失败的场景下,系统会按1s,2s,5s,10s,15s重试5次,后续不再推送。