云打印机CP事件及消息示例

1 事件列表

event取值说明
6001未经处理的文字小票上传消息
6002未经处理的图片小票上传消息
6003经过处理的小票消息

2 事件消息示例

2.1 未经处理的文字小票上传消息(event=6001)

报文格式: application/x-www-form-urlencoded;param=value;charset=UTF-8

消息体格式:
{ 
  "app_id": 'CSJGYI6T8P237',                //唯一标识接入身份,联系商米数字店铺提供
  "event": '6002',                          // 触发消息的类型
  "payload": '{
       "id":"70dcd2f600e45736e1",           // 系统生成的小票ID
       "sn":"N302D9WZC0064",                // 打印设备SN
       "text": "abc"                        // 文字小票内容
  }',
  "shop_id": '29203',                           // 第三方对接软件中门店的标识, 没有或者不需要则为空
  "sunmi_shop_no": '28393437387',               // 商米数字店铺平台的门店组织编号, 没有或者不需要则为空
  "random": 'NDL8GXR',                          // 随机字符串,由数字和字母组成,长度范围为6-10位
  "sign": '738D9FF2482D59E5DC1FB32B6F445464',   //签名校验
  "timestamp": '1604567375'                     //当前的unix timestamp,精度到秒级,10位数字
}



备注:payload字段对应的值为string类型,解析对此string类型内容进行json解析

2.2 未经处理的图片小票上传消息 (event=6002)

报文格式: application/x-www-form-urlencoded;param=value;charset=UTF-8

消息体格式:
{ 
  "app_id": 'CSJGYI6T8P237',                //唯一标识接入身份,联系商米数字店铺提供
  "event": '6002',                          // 触发消息的类型
  "payload": '{
       "id":"70dcd2f600e45736e1",           // 系统生成的小票ID
       "sn":"N302D9WZC0064",                // 打印设备SN
       "base64_image":"DKJOIFDNLKSDJLSJDISDNLKFJDLSLDJF==",  // 图片小票的base64 encoded string
  }',
  "shop_id": '29203',                           // 第三方对接软件中门店的标识, 没有或者不需要则为空
  "sunmi_shop_no": '28393437387',               // 商米数字店铺平台的门店组织编号, 没有或者不需要则为空
  "random": 'NDL8GXR',                          // 随机字符串,由数字和字母组成,长度范围为6-10位
  "sign": '738D9FF2482D59E5DC1FB32B6F445464',   //签名校验
  "timestamp": '1604567375'                     //当前的unix timestamp,精度到秒级,10位数字
}

备注:payload字段对应的值为string类型,解析对此string类型内容进行json解析

2.3 经过处理的小票消息 (event=6003)

报文格式: application/x-www-form-urlencoded;param=value;charset=UTF-8

消息体格式:
{ 
  "app_id": 'CSJGYI6T8P237',                //唯一标识接入身份,联系商米数字店铺提供
  "event": '6003',                          // 触发消息的类型
  "payload": '{
       "id":"70dcd2f600e45736e1",           // 系统生成的小票ID
       "sn":"N302D9WZC0064",                // 打印设备SN
       "order_time":"2020-11-05 17:45:00",  // 小票生成时间 
       "order_id":"202011051707",           // 小票上的订单ID 
       "order_received_amount":"20",          // 小票金额 
       "sales_detail_list":[                  // 明细列表
            { "amount":"4",                   // 商品单价
              "item":"维他柠檬茶",            // 商品名字
              "quantity":"1",                 // 商品数量
              "barcode": "38293823"           // 商品条码
            }, 
            {"amount":"7","item":"梅汤","quantity":"1", "barcode":"29300239"},
            {"amount":"6","item":"旺仔牛奶","quantity":"1", "barcode":"29300230"}, 
            {"amount":"3","item":"罐","quantity":"1", "barcode":"29300229"}
      ]
  }',
  "shop_id": '29203',                           // 第三方对接软件中门店的标识, 没有或者不需要则为空
  "sunmi_shop_no": '28393437387',               // 商米数字店铺平台的门店组织编号, 没有或者不需要则为空
  "random": 'NDL8GXR',                          // 随机字符串,由数字和字母组成,长度范围为6-10位
  "sign": '738D9FF2482D59E5DC1FB32B6F445464',   //签名校验
  "timestamp": '1604567375'                     //当前的unix timestamp,精度到秒级,10位数字
}


备注:payload字段对应的值为string类型,解析对此string类型内容进行json解析

附录:签名sign生成规则

2.1 协议说明

对接的openAPI接口目前只开放HTTPS方式,所有的消息一律采用POST方式。

2.2 签名规则

对于所有的接入者,数字店铺开放平台会分配以下内容:

  • app_id: 唯一标识接入身份
  • secret_key: 该用户独有的签名校验

签名规则应用于对HTTP请求中的参数进行MD5签名,规则顺序如下:

  1. 参数必须包含random字段,为一个随机字符串,由数字和字母组成,长度范围为6-10位
  2. 参数必须包含timestamp字段 ,为当前的unix timestamp,精度到秒级,10位数字, 格式可以参考 https://tool.chinaz.com/tools/unixtime.aspx
  3. 参数必须包含app_id字段
  4. 首先对于所有包含key的传递参数按照ASCII码顺序从小到大排序,将key-value键值对依此组成字符串 (文件参数不参与验签)
  5. 在字符串尾部拼接该SaaS厂商独有的签名校验secret_key值,拼接方法见例子详述
  6. 对字符串进行MD5签名
  7. 对生成的MD5签名转化为全大写

智能摄像机IPC事件及消息示例

1 事件列表

event 取值说明
1010IPC FM010 动态侦测消息
1011 IPC上线消息通知
1012 IPC下线消息通知
1100向指定人脸分组添加人脸信息的结果推送消息
2001IPC实时获取人员消息

2 事件消息示例

2.1 IPC FM010 动态侦测消息 (event=1010)

报文格式: application/x-www-form-urlencoded;param=value;charset=UTF-8

消息体格式:
{ 
  "app_id": 'CSJGYI6T8P237',                //唯一标识接入身份,联系商米数字店铺提供
  "event": '1010',                          // 触发消息的类型
  "payload": '{
     "ipc_id": 029388,
     "sn": "FS101D8BS00080",
     "name": "设备1",
     "video_url": "http://xxx.xxx.xxx.xxx/xxx/xxx/41b061f6f10dbd6fe1aaf469fb0ab012d9193d9655816af31cdfbcsdfe71a5fe1",
     "model_name": "FM020",
     "motion_type": 1
  }',
  "shop_id": '29203',                           // 第三方对接软件中门店的标识, 没有或者不需要则为空
  "sunmi_shop_no": '28393437387',               // 商米数字店铺平台的门店组织编号, 没有或者不需要则为空
  "random": 'NDL8GXR',                          // 随机字符串,由数字和字母组成,长度范围为6-10位
  "sign": '738D9FF2482D59E5DC1FB32B6F445464',   //签名校验
  "timestamp": '1604567375'                     //当前的unix timestamp,精度到秒级,10位数字
}

字段描述:motion_type

motion_type取值说明
1视频侦测事件
2声音侦测事件

2.2 IPC上线消息通知 (event=1011)

报文格式: application/x-www-form-urlencoded;param=value;charset=UTF-8

消息体格式:
{ 
  "app_id": 'CSJGYI6T8P237',                //唯一标识接入身份,联系商米数字店铺提供
  "event": '1011',                          // 触发消息的类型
  "payload": '{
     "ipc_id": "549755811676",
    "ipc_name": "摄像头设备1",
    "ipc_sn": "FS101D8BS00080",
    "online_time": 1576415912
  }',
  "shop_id": '29203',                           // 第三方对接软件中门店的标识, 没有或者不需要则为空
  "sunmi_shop_no": '28393437387',               // 商米数字店铺平台的门店组织编号, 没有或者不需要则为空
  "random": 'NDL8GXR',                          // 随机字符串,由数字和字母组成,长度范围为6-10位
  "sign": '738D9FF2482D59E5DC1FB32B6F445464',   //签名校验
  "timestamp": '1604567375'                     //当前的unix timestamp,精度到秒级,10位数字
}

2.3 IPC下线消息通知 (event=1012)

报文格式: application/x-www-form-urlencoded;param=value;charset=UTF-8

消息体格式:
{ 
  "app_id": 'CSJGYI6T8P237',                //唯一标识接入身份,联系商米数字店铺提供
  "event": '1012',                          // 触发消息的类型
  "payload": '{
    "ipc_id": "549755811676",
    "ipc_name": "摄像头设备1",
    "ipc_sn": "FS101D8BS00080",
    "offline_time": 1576415912
  }',
  "shop_id": '29203',                           // 第三方对接软件中门店的标识, 没有或者不需要则为空
  "sunmi_shop_no": '28393437387',               // 商米数字店铺平台的门店组织编号, 没有或者不需要则为空
  "random": 'NDL8GXR',                          // 随机字符串,由数字和字母组成,长度范围为6-10位
  "sign": '738D9FF2482D59E5DC1FB32B6F445464',   //签名校验
  "timestamp": '1604567375'                     //当前的unix timestamp,精度到秒级,10位数字
}

2.4 向指定人脸分组添加人脸信息的结果推送消息 (event=1100)

报文格式: application/x-www-form-urlencoded;param=value;charset=UTF-8

消息体格式:
{ 
  "app_id": 'CSJGYI6T8P237',                //唯一标识接入身份,联系商米数字店铺提供
  "event": '1100',                          // 触发消息的类型
  "payload": '{
    "code": 0,                              /*其他错误参考下方字段描述 */
    "msg": "", 
    "face_id": "235698745612",
  }',
  "shop_id": '29203',                           // 第三方对接软件中门店的标识, 没有或者不需要则为空
  "sunmi_shop_no": '28393437387',               // 商米数字店铺平台的门店组织编号, 没有或者不需要则为空
  "random": 'NDL8GXR',                          // 随机字符串,由数字和字母组成,长度范围为6-10位
  "sign": '738D9FF2482D59E5DC1FB32B6F445464',   //签名校验
  "timestamp": '1604567375'                     //当前的unix timestamp,精度到秒级,10位数字
}

字段描述

code说明
5527不合格的人脸照片
5000数据库错误

2.5 IPC实时获取人员消息 (event=2001)

报文格式: application/x-www-form-urlencoded;param=value;charset=UTF-8

消息体格式:
{ 
  "app_id": 'CSJGYI6T8P237',                //唯一标识接入身份,联系商米数字店铺提供
  "event": '2001',                          // 触发消息的类型
  "payload": '{
    "ipc_id": "512369745691",
    "ipc_sn": "FS101D8BS00080",
    "face_id": "235698745612",
    "gender": 1,
    "age_range": 4,
    "face_image_url": "https://xxxxxx/IMG/FACE/NKO62XI9PJ4MJX9HJNZ0VOTX863LKBV0?auth_key=1585224994-EULH8E2CXI-0-8ba0ee794d1f4a08c9134898d3013938",   //有效期为一天
    "group_id": "8927",
    "group_name": "stranger",
    "group_type": 2,
    "member_id": "2938203938",  //如果获取的人员为录入会员,则返回会员id,非会员,则返回为""
  }',
  "shop_id": '29203',                           // 第三方对接软件中门店的标识, 没有或者不需要则为空
  "sunmi_shop_no": '28393437387',               // 商米数字店铺平台的门店组织编号, 没有或者不需要则为空
  "random": 'NDL8GXR',                          // 随机字符串,由数字和字母组成,长度范围为6-10位
  "sign": '738D9FF2482D59E5DC1FB32B6F445464',   //签名校验
  "timestamp": '1604567375'                     //当前的unix timestamp,精度到秒级,10位数字
}

字段描述

gender 取值说明
0未知
1
2
age_range 取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁
group_type 取值说明
1生客人脸库
2熟客人脸库
3店员人脸库
5自定义人脸库

附录:签名sign生成规则

2.1 协议说明

对接的openAPI接口目前只开放HTTPS方式,所有的消息一律采用POST方式。

2.2 签名规则

对于所有的接入者,数字店铺开放平台会分配以下内容:

  • app_id: 唯一标识接入身份
  • secret_key: 该用户独有的签名校验

签名规则应用于对HTTP请求中的参数进行MD5签名,规则顺序如下:

  1. 参数必须包含random字段,为一个随机字符串,由数字和字母组成,长度范围为6-10位
  2. 参数必须包含timestamp字段 ,为当前的unix timestamp,精度到秒级,10位数字, 格式可以参考 https://tool.chinaz.com/tools/unixtime.aspx
  3. 参数必须包含app_id字段
  4. 首先对于所有包含key的传递参数按照ASCII码顺序从小到大排序,将key-value键值对依此组成字符串 (文件参数不参与验签)
  5. 在字符串尾部拼接该SaaS厂商独有的签名校验secret_key值,拼接方法见例子详述
  6. 对字符串进行MD5签名
  7. 对生成的MD5签名转化为全大写

消息中心

1 基本描述

商米数字店铺开放平台与SaaS合作方的数据交互可以是双向实时。一方面SaaS合作方可以将数据通过openAPI传入数字店铺,也可以对商米的IoT设备进行远程控制。

除此之外,商米数字店铺开放平台也可以通过消息推送中心,将系统中的消息实时反馈给SaaS合作方。根据合作平台需求订阅实时消息推送,商米数字店铺开放平台会将消息和事件推送给SaaS合作方。

2 接口规范

2.1 协议说明

对接的接口目前只开放HTTPS方式推送消息,所有的消息一律采用POST方式。

Content-Typeapplication/x-www-form-urlencoded
数据格式返回为JSON格式
字符编码UTF-8字符编码
签名算法MD5
签名规则参考2.2 签名规则

2.2 签名规则

参考《鉴权认证》文档。

2.3 公共参数

参数名必填类型说明
app_idstring唯一标识接入身份,联系商米数字店铺提供
randomstring随机字符串,由数字和字母组成,长度范围为6-10位
timestampint当前的unix timestamp,精度到秒级,10位数字
signstring签名信息,详见2.2

3 店铺设计规范

参考《商户店铺》文档。

4 SaaS合作方提供HTTP回调地址

SaaS合作方添加监听事件时,需要提供相应的HTTP回调地址,并提供需要监听的设备以及事件。当商米数字开放平台收到该设备的该事件时,会调用该HTTP接口。

4.1 回调HTTP鉴权方式

对于该回调HTTP回调的鉴权方式,遵照商米数字店铺开放平台的鉴权方式。 请参考《鉴权认证》文档。

4.2 回调HTTP接口参数

回调HTTP需要带以下接口参数:

参数名称是否必须类型说明
sunmi_shop_nostring 商米数字店铺平台的门店组织编号
shop_idstring 第三方对接软件中门店的标识
eventint触发消息的类型
payloadstring消息的具体格式(根据消息不同会有不同的json)

消息的具体格式请参考相关业务的《事件及消息示例》文档。

4.3 消息重传

如果回调消息发送失败,会触发重传机制。一共会触发4次重传,时间间隔分别为15秒, 30 秒, 1分钟和2分钟。

5 消息监听接口

5.1 接口描述

消息监听接口用来管理需要监听的事件和相应的回调HTTP地址。

5.2 接口列表

接口名称接口描述
/hook/add增加消息监听的HTTP回调地址
/hook/delete取消消息监听的HTTP回调地址

5.3 接口详情

5.3.1 增加消息监听

接口描述:通过本接口调用,用户可以增加消息监听的HTTP回调地址。

请求链接:/hook/add

接口版本: v2.0

接口参数

参数名称是否必须类型说明
sunmi_shop_no string 商米数字店铺平台的门店组织编号
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与sunmi_shop_no可互为替代,使用时传输任意一个即可)
http_callbackstringHTTPS回调地址链接
event_listarray[int]需要监听的事件的列表

返回值: 

{
    "code": 0,   /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {}
}

5.3.2 取消消息监听

接口描述:通过本接口调用,用户可以取消消息监听的HTTP回调地址。

请求链接:/hook/delete

接口版本: v2.0

接口参数

参数名称是否必须类型说明
sunmi_shop_no string商米数字店铺平台的门店组织编号
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与sunmi_shop_no可互为替代,使用时传输任意一个即可)
event_listarray[int]需要取消监听的事件的列表

返回值: 

{
    "code": 0,   /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {}
}