升级开发环境固件

1. 概述

本文指导用户通过线下手动的方式升级IPC摄像头的固件,用于在开发环境对接API和联调测试。

如果您的设备已经是运行在开发调试环境,则可以跳过以下章节。

2.获取升级固件

请务必从商米售前获取对应型号摄像头的升级固件 ,否则出现升级异常概不负责。

目前商米有的IPC摄像头有两款,分别是

  1. AI识客摄像机,英文名Face Sense Camera,简称FS,目前的型号是FM020。
  2. 智能看店摄像机,英文名Store Sense Camera,简称SS,目前的型号是FM010。

3.升级规则

  1. 不同机型之间系统固件不能互相升级,例如FS和SS之间不能升级,所以请务必根据自己的机型来获取对应的开发调试环境升级固件。
  2. 开发环境和正式环境的固件之间可以互升成功。但如果都是开发环境或者正式环境的固件,且待升级固件版本号与当前设备上的版本号完全一致,则不会升级,版本号不同才会升级,当前固件显示的版本号格式形如1.2.0
  3. 正常情况是升级到高版本的固件,如果出现异常也支持从高版本升级回到低版本。
  4. 固件本身有自己的签名机制和升级校验方法,所以请务必从商米处获取固件,切勿随便从第三方获取固件,否则升级失败或者存在升级变砖的风险。

4. 详细流程

4.1 拷贝固件到TF卡

  1. 将TF卡插入电脑,执行格式化操作,文件系统设置为exfat,卷标设置为SUNMI-XXXX(其中XXXX为摄像头MAC地址最后四位,摄像头MAC地址见机身背面标贴)。注:卷标SUNMI-XXXX中的-为英文半角符号,非中文全角符号;XXXX中的字母为大写。
  2. 进入TF卡目录,在根目录下新建firmware目录,将从商米处( 详见2. 获取开发环境固件 )获取到的开发环境的升级固件拷贝到新建的firmware目录下,并把固件重命名为ipc-up.bin

4.2 升级固件

  1. 将带有固件的TF卡重新插入摄像头的TF卡槽中。
  2. 重新上电摄像头。
  3. 等待1min左右,直到设备闪烁红灯,则说明正在升级固件。
  4. 升级需要一些时间,再耐心等待1min左右,直到重新亮绿灯说明设备开始重启,当设备再次闪烁绿灯或者亮蓝灯说明设备已经重启完毕。

4.3 重新进行首配

  1. 重启后, 长按设备上的Reset按键5秒以上进行恢复出厂设置。
  2. 恢复出厂重启后,使用开发环境的商米APP,按照《用户指南》手册中的软件配置指引完成摄像头的首次配置。
  3. 首配完成后,如果没有格式化TF卡,请使用开发环境的商米助手APP或登录开发环境的WEB服务网站https://store.uat.sunmi.com对TF进行格式化即可。
  4. 记得删除原来SD卡中的firmware/ipc-up.bin文件,避免不必要的意外升级。

设备

云接口

1 背景介绍

商米数字店铺(SUNMI Store)是商米提供的围绕商户店铺中物联网设备基础上的店铺管理系统。

商米数字店铺作为一个开放平台,支持与第三方SaaS厂商进行各种数据的对接,包括商品信息对接,交易信息对接,会员体系对接等。

2 接口规范

2.1 协议说明

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

注:消息体大小不得超过1M,超过1M的请求,直接拒绝!

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


2.2 签名规则

参考《鉴权认证》文档

2.3 公共参数

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



3 店铺设计规范

参考 《openAPI 商户店铺对接》文档

4 设备管理接口

4.1 接口描述

设备管理接口用来管理智能摄像机设备的基本属性,比如名称等。

4.2 接口列表

接口名称接口描述
/device/ipc/getList获取设备列表
/device/ipc/getListByCompany获取商铺下所有设备列表
/device/ipc/getInfo获取设备基本信息
/device/ipc/updateName修改设备名称
/device/ipc/bind绑定设备
/device/ipc/unbind解绑设备

4.3 接口详情

4.3.1 获取设备列表

接口描述:通过本接口调用,用户可以获取相关门店下所有设备列表。

请求链接:/device/ipc/getList

接口版本:v2.0

接口参数

参数名称是否必须类型说明 示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring
店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096

请求示例: 

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/getList",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581333970,
    "random": "5dsf6698",
    "sign": "5EA14F9445D72DDE113AA95B04797D29"
  }

返回值: 

{
    "data": {
        "total_count": 1,
        "ipc_list": [
            {
                "ipc_id": "549755805878",
                "ipc_sn": "C101P98200023",
                "ipc_name": "小松松大魔王",
                "model_name": "FM010",
                "software_version": "1.2.6",
                "check_version_time": 1566365781,
                "connect_time": 1565951330,
                "active_status": 0,
                "screenshot_url": "https://xxxxxxxx/IMG/IPC/e36654e8a95a9ad27b5bb585a0f7df50a0de0dd6e0aeaee47b4e34c4f4636f9a"
            }
        ]
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

返回字段描述:active_status

active_status 取值说明
0设备离线
1设备在线

错误码:

错误码说明
5000数据库错误
5013未查询到数据
5041请求中未找到shop_id参数

4.3.2 获取设备基本信息

接口描述:通过本接口调用,用户可以获取指定设备基本信息。

请求链接:/device/ipc/getInfo

接口版本:v2.0

接口参数

参数名称是否必须类型说明 示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
ipc_idstring摄像机设备唯一ID 549755805878

请求示例 : 

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/getInfo",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "ipc_id": "549755805878",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581333970,
    "random": "5dsf6698",
    "sign": "140E3195C0F00DB09457E015AA79D79B"
  }

返回值: 

{
    "data": {
        "ipc_id": "549755805878",
        "ipc_sn": "C101P98200023",
        "ipc_name": "小松松大魔王",
        "model_name": "FM010",
        "software_version": "1.2.6",
        "check_version_time": 1566365781,
        "connect_time": 1565951330,
        "active_status": 0,
        "screenshot_url": "https://xxxxxxxx/IMG/IPC/e36654e8a95a9ad27b5bb585a0f7df50a0de0dd6e0aeaee47b4e34c4f4636f9a"
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

返回字段描述:active_status

active_status 取值说明
0设备离线
1设备在线

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5501ipc设备不存在

4.3.3 修改设备名称

接口描述:通过本接口调用,用户可以修改设备名称。

请求链接:/device/ipc/updateName

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
ipc_idstring摄像机设备唯一ID549755805878
ipc_namestring修改的新设备名称示例设备

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/updateName",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "ipc_id": "549755805878",
    "ipc_name": "示例设备",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581333970,
    "random": "5dsf6698",
    "sign": "140E3195C0F00DB09457E015AA79D79B"
  }

返回值: 

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

错误码:

错误码说明
5000数据库错误
5011与设备通讯错误
5013未找到数据
5041请求中未找到shop_id参数
5501ipc设备不存在
5506数据库中未找到该ipc设备信息
5510设备未绑定

4.3.4 绑定设备

接口描述:通过本接口调用,用户可以绑定指定设备。

请求链接:/device/ipc/bind

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
ipc_snstring摄像机设备SN号 C101D96U00034
macstring 摄像机设备mac地址0C25766F5705

请求示例:

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/bind",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "ipc_sn": "C201D8BS00089",
    "mac":"0C25766F5705",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回示例:

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

错误码:

错误码说明
5000数据库错误
5013未找到数据
5020无效参数
5041请求中未找到shop_id参数
5079无效mac地址
5501设备不存在
5509设备被绑定

4.3.5 解绑设备

接口描述:通过本接口调用,用户可以解绑指定设备。

请求链接:/device/ipc/unbind

接口版本:v2.0

接口参数

参数名称 是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_id string 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
ipc_sn string 摄像机设备SN号(ipc_sn与ipc_id有其一即可)C101D96U00034
ipc_idstring 摄像机设备唯一ID(ipc_sn与ipc_id有其一即可) 549755805878

请求示例:

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/unbind",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "ipc_sn": "C201D8BS00089",
    "ipc_id":"549755805878",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回示例:

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

错误码:

错误码说明
5000 数据库错误
5013 未查询到数据
5020 无效参数
5041 请求中未找到shop_id参数
5501 设备不存在
5510 设备未绑定

4.3.6 获取商户下设备列表

接口描述:通过本接口调用,用户可以获取相关门店下所有设备列表。

请求链接:/device/ipc/getListByCompany

接口版本:v2.0

接口参数

参数名称是否必须类型说明 示例
sunmi_company_no string 商米数字商户唯一编号(v2.0之后为必填项) 560279010307

请求示例: 

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/getListByCompany",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_company_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581333970,
    "random": "5dsf6698",
    "sign": "5EA14F9445D72DDE113AA95B04797D29"
  }

返回值: 

{
    "data": {
        "total_count": 1,
        "ipc_list": [
            {
                "ipc_id": "549755811632",
                "ipc_sn": "C101E96500011",
                "ipc_name": "My Camera",
                "model_name": "FM010",
                "software_version": "1.0.0",
                "active_status": 1
            }
        ]
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

返回字段描述:active_status

active_status 取值说明
0设备离线
1设备在线

错误码:

错误码说明
5000数据库错误
5013未查询到数据

5 人脸分组管理接口

5.1 接口描述

人脸管理接口是用来管理与人脸相关的接口,商米数字店铺会在云上保存相关已授权数据和配置,并将需要的数据同步给店内智能摄像机设备。

5.2 接口列表

接口名称接口描述
/face/group/getList获取人脸分组列表
/face/group/getInfo获取指定人脸分组信息
/face/group/create添加人脸分组
/face/group/update修改指定人脸分组
/face/group/delete删除指定人脸分组
/face/group/getFaceList获取指定人脸分组内的人脸列表
/face/getInfo获取指定人脸的详细信息
/face/add向指定人脸分组添加人脸信息
/face/update修改指定人脸的属性信息
/face/updatePicture修改指定人脸图片的属性信息
/face/delete从指定人脸分组中删除人脸信息
/face/group/move将指定人脸在人脸分组中迁移
/face/group/updateMoveStrategy修改生客分组移组条件

5.3 接口详情

5.3.1 获取人脸分组列表

接口描述:通过本接口调用,用户可以获得人脸分组列表。

请求链接:/face/group/getList

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项 )560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/getList",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "group_list": [
            {
                "group_id": "578968814328",
                "type": 1,
                "count": 0,
                "capacity": 1000,
                "last_modified_time": 0,
                "group_name": "stranger",
                "description": "",
                "customer_key1": "",
                "customer_key2": "",
                "customer_key3": "",
                "customer_key4": "",
                "customer_key5": ""
            },
            {
                "group_id": "578968814329",
                "type": 2,
                "count": 0,
                "capacity": 1000,
                "last_modified_time": 0,
                "group_name": "regular",
                "description": "",
                "customer_key1": "",
                "customer_key2": "",
                "customer_key3": "",
                "customer_key4": "",
                "customer_key5": ""
            },
            {
                "group_id": "578968814330",
                "type": 3,
                "count": 0,
                "capacity": 1000,
                "last_modified_time": 0,
                "group_name": "employee",
                "description": "",
                "customer_key1": "",
                "customer_key2": "",
                "customer_key3": "",
                "customer_key4": "",
                "customer_key5": ""
            },
            {
                "group_id": "578968817934",
                "type": 5,
                "count": 0,
                "capacity": 1000,
                "last_modified_time": 0,
                "group_name": "YiliuTest",
                "description": "",
                "customer_key1": "",
                "customer_key2": "",
                "customer_key3": "",
                "customer_key4": "",
                "customer_key5": ""
            }
        ]
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

返回字段描述:type

type 取值说明
1生客人脸库
2熟客人脸库
3店员人脸库
5自定义人脸库

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

5.3.2 获取指定人脸分组信息

接口描述:通过本接口调用,获取指定人脸分组信息。

请求链接:/face/group/getInfo

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
group_idstring人脸分组唯一标识ID 578968814328

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/getInfo",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "group_id": "578968814328",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "group_id": "578968814328",
        "type": 1,
        "count": 0,
        "capacity": 1000,
        "last_modified_time": 0,
        "group_name": "stranger",
        "description": "",
        "customer_key1": "",
        "customer_key2": "",
        "customer_key3": "",
        "customer_key4": "",
        "customer_key5": ""
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

返回字段描述:type

type 取值说明
1生客人脸库
2熟客人脸库
3店员人脸库
5自定义人脸库

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

5.3.3 添加人脸分组

接口描述:通过本接口调用,用户可以 添加人脸分组。

请求链接:/face/group/create

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
namestring人脸分组名称Mike
type是·int人脸分组类型 (1-生客, 2-熟客,3-店员 ,5-自定义,会员)5
capacityint人脸分组容量10000
descriptionstring人脸分组描述此分组用于对于金卡会员管理
customer_key1string人脸分组自定义扩展字段1 名称vip_level
customer_key2string人脸分组自定义扩展字段2 名称hobby
customer_key3string人脸分组自定义扩展字段3 名称foreigner
customer_key4string人脸分组自定义扩展字段4 名称figure
customer_key5string人脸分组自定义扩展字段5 名称hairstyle

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/create",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "name": "Mike",
    "type": 5,
    "capacity": 1000,
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

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

错误码:

错误码说明
5000数据库错误
5013未找到数据
5518人脸库创建失败
5041请求中未找到shop_id参数
5520已经达到最大人脸分组数量或已经达到最大人脸容量
5523已经存在该人脸分组

5.3.4 修改指定人脸分组

接口描述:通过本接口调用,用户可以修改指定人脸分组。

请求链接:/face/group/update

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939070408
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 15220
group_idstring人脸分组唯一标识ID578968817476
namestring人脸分组名称Mike
capacityint人脸分组容量10000
descriptionstring人脸分组描述 此分组用于对于金卡会员管理
customer_key1string人脸分组自定义扩展字段1 名称vip_level
customer_key2string人脸分组自定义扩展字段2 名称hobby
customer_key3string人脸分组自定义扩展字段3 名称foreigner
customer_key4string人脸分组自定义扩展字段4 名称figure
customer_key5string人脸分组自定义扩展字段5 名称hairstyle

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/update",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "name": "Mike",
    "type": 5,
    "capacity": 1000,
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

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

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5506未查询到该数据
5520已经达到最大人脸分组数量或已经达到最大人脸容量
5525默认人脸库不允许修改

5.3.5 删除指定人脸分组

接口描述:通过本接口调用,用户可以删除指定人脸分组。

请求链接:/face/group/delete

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
group_idstring人脸分组唯一标识ID578968814328

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/delete",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "group_id": "578968814328",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

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

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5506未查询到该数据
5524默认人脸库不允许被删除
5509非空人脸库

5.3.6 获取指定人脸分组内的人脸列表

接口描述:通过本接口调用,用户可以获取指定人脸分组内的人脸列表。

请求链接:/face/group/getFaceList

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
group_idstring人脸分组唯一标识ID578968813726
page_num否 (默认1)int当前页码1
page_size否 (默认10)int当前页条目数量10

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/getFaceList",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "group_id": "578968813726",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "face_list": [
            {
                "face_id": "578968751459",
                "group_id": "578968813726",
                "group_name": "",
                "gender": 1,
                "age_range": 6,
                "arrival_count": 0,
                "create_time": 1579591542,
                "last_arrival_time": 0,
                "name": "lll",
                "customer_key1": "",
                "customer_key2": "",
                "customer_key3": "",
                "customer_key4": "",
                "customer_key5": ""
            }
        ],
        "total_num": 1
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

返回字段描述:gender

gender 取值说明
0未知
1
2

返回字段描述:age_range

age_range 取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

错误码:

错误码说明
5000数据库错误
5506未查询到数据
5013未找到数据
5041请求中未找到shop_id参数

5.3.7 获取指定人脸的详细信息

接口描述:通过本接口调用,用户可以获取指定人脸的详细信息。

请求链接:/face/getInfo

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no stirng 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
face_idstring人脸唯一标识ID578968751459

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/getInfo",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "face_id": "578968751459",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "age_range": 6,
        "arrival_count": 0,
        "create_time": 1579591542,
        "face_id": "578968751459",
        "gender": 1,
        "group_id": "578968813726",
        "group_name": "stranger",
        "last_arrival_time": 0,
        "name": "lll"
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

错误码:

错误码说明
5000数据库错误
5506未找到数据
5013未找到数据
5041请求中未找到shop_id参数

5.3.8 向指定人脸分组添加人脸信息

接口描述:通过本接口调用,用户可以向指定人脸分组添加人脸信息。

请求链接:/face/add

接口版本:v2.0

接口参数

Content-Type:application/form-data

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项)100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
group_idstring人脸分组唯一标识ID578968813726
namestring人脸对应姓名Mike
picfile人脸对应图片文件(1M以下)face.png
genderint人脸对应性别 (1-男性, 2 女性)1
age_rangeint人脸对应年龄段4
customer_value1string人脸分组自定义扩展字段1 内容1
customer_value2string人脸分组自定义扩展字段2 内容sing
customer_value3string人脸分组自定义扩展字段3 内容americans
customer_value4string人脸分组自定义扩展字段4 内容fat
customer_value5string人脸分组自定义扩展字段5 内容short hair

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/add",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "group_id": "578968813726",
    "name": "Mike",
    "pic": {
      "value": fs.createReadStream("/D:/image/face.png"),
      "options": {
        "filename": "/D:/image/face.png",
        "contentType": null
      }
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值

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

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5520已经达到最大人脸分组数量或已经达到最大人脸容量

备注: 人脸图片添加入人脸库后,商米数字店铺平台会进行相应处理,并生成对应的face_id。由于处理图片信息需要一定时间,所以目前采用异步消息通知处理结果。

具体请参考 《消息推送中心》文档

同步处理并返回方式正在开发中。

5.3.9 修改指定人脸的属性信息

接口描述:通过本接口调用,用户可以修改指定人脸的属性信息。

请求链接:/face/update

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
group_idstring人脸分组唯一标识ID578968813726
face_idstring
人脸唯一标识ID578968751459
namestring人脸对应姓名Mike
genderint人脸对应性别 (1 – 男, 2 – 女)1
age_rangeint人脸对应年龄段4
customer_value1string人脸分组自定义扩展字段1 内容1
customer_value2string人脸分组自定义扩展字段2 内容sing
customer_value3string人脸分组自定义扩展字段3 内容americans
customer_value4string人脸分组自定义扩展字段4 内容fat
customer_value5string人脸分组自定义扩展字段5 内容short hair

字段描述:age_range

age_range 取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/update",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "group_id": "578968813726",
    "face_id": "578968751459",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

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

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5520已经达到最大人脸分组数量或已经达到最大人脸容量
5521指定人脸分组中不存在该人脸信息

5.3.10 从指定人脸分组中删除人脸信息

接口描述:通过本接口调用,用户可以从指定人脸分组中删除人脸信息。

请求链接:/face/delete

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
group_idstring人脸分组唯一标识ID578968813726
face_id_listarray[string]人脸唯一标识ID[578968751459]

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/delete",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "group_id": "578968813726",
    "face_id_list": ["578968751459"],
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

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

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

5.3.11 将指定人脸在人脸分组中迁移

接口描述:通过本接口调用,用户可以将指定人脸在人脸分组中迁移。

请求链接:/face/group/move

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
source_group_idstring原始人脸分组唯一标识ID578968813726
target_group_idstring目标人脸分组唯一标识ID578968813727
face_id_listarray[string]需要迁移的人脸ID数组[578968751459]

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/move",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "source_group_id": "578968813726",
    "target_group_id": "578968813727",
    "face_id_list": ["578968751459"],
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

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

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5520已经达到最大人脸分组数量或已经达到最大人脸容量
5521指定人脸分组中不存在该人脸信息
5522人脸库不存在

5.3.12 修改生客分组移组条件

接口描述:通过本接口调用,用户可以修改生客库移库条件。

请求链接:/face/group/updateMoveStrategy

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
target_group_idstring目标人脸分组唯一标识ID578968813727
thresholdint达到生客移库条件的生客出现次数4
periodint达到生客移库条件的计数周期,以秒为单位604800

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/updateMoveStrategy",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "target_group_id": "578968813727",
    "threshold": 4,
    "period": 604800,
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值

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

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5506未查询到该数据
5520已经达到最大人脸分组数量或已经达到最大人脸容量
5525默认人脸分组的信息无法修改

6 人流统计接口

6.1 接口描述

人流统计接口是用来查询智能摄像机所监控和存储的人流信息和历史记录。目前分为三种统计维度:历史人流统计信息(T+1),当日人流统计信息(T+0),实时人流信息。

其中T+1和T+0的统计信息由HTTP接口提供,SaaS合作方可以通过发起请求获得结果,当日统计信息更新频率为15s内,实时人流信息通过消息推送获取,具体参考 《消息推送中心》文档

6.2 接口列表

接口名称接口描述
/passengerFlow/stat/today/getLatest获取当日实时人流量(实时总人流量)
/passengerFlow/stat/today/groupByTag获取当日人流统计信息(按照年龄以及生熟客人脸分组)
/passengerFlow/stat/today/groupByGender获取当日人流统计信息(按照年龄以及性别分组)
/passengerFlow/stat/today/getTrendByHour获取当日人流变化趋势(人流总数,时间粒度为小时)
/passengerFlow/stat/history/groupByTag获取历史人流统计信息(人流总数/生熟客/会员)
/passengerFlow/stat/history/groupByGender获取历史客群详情(年龄以及性别)
/passengerFlow/stat/history/getTrendByHour获取历史人流变化趋势(人流总数/生熟客,时间粒度为小时)
/passengerFlow/stat/history/getTrendByDay获取历史人流变化趋势(人流总数/生熟客,时间粒度为天)
/passengerFlow/stat/history/getTrendByWeek获取历史人流变化趋势(人流总数/生熟客,时间粒度为周)(开发中)
/passengerFlow/stat/history/getTrendByMonth获取历史人流变化趋势(人流总数/生熟客,时间粒度为月)(开发中)
/passengerFlow/stat/history/person/frequency/getList 获取顾客到店频率分布统计数据

6.3 接口详情

6.3.1 获取当日实时人流量

接口描述:通过本接口调用,用户可以获取当日的人流统计。

请求链接:/passengerFlow/stat/today/getLatest

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/today/getLatest",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
	"count": "123", /* 已捕捉到有效人脸数量(即将废弃) */
        "total_count": 123, /* 已捕捉到有效人脸数量 */
        "unexposed_count": 0, /* 未捕捉到有效人脸数量 */
        "pass_count": 110 /* 过店客流数量 */
    }
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.2 获取当日人流统计信息(按照生熟客人脸分组以及年龄范围)

接口描述:通过本接口调用,用户可以获取当日各个年龄段生熟客人流统计

请求链接:/passengerFlow/stat/today/groupByTag

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/today/groupByTag",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "count_list": [
            {
                "age_range": 1,
                "stranger_count": 0, /* 生客数量 */ 
                "regular_count": 0, /* 熟客数量 */ 
                "member_count": 0  /* 会员数量 */ 
            },
            {
                "age_range": 2,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            },
            {
                "age_range": 3,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            },
            {
                "age_range": 4,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            },
            {
                "age_range": 5,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            },
            {
                "age_range": 6,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            },
            {
                "age_range": 7,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            },
            {
                "age_range": 8,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            }
        ]
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

字段描述:age_range

age_range 取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.3 获取当日人流统计信息(按照性别年龄)

请求链接:/passengerFlow/stat/today/groupByGender

接口描述:通过本接口调用,用户可以获取当日各个年龄段不同性别的人流统计

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/today/groupByGender",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "count_list": [
            {
                "age_range": 1,
                "male_count": 0, /* 男性总数  */
                "male_regular_count": 0, /* 男性熟客数量 */
                "male_member_count": 0, /* 男性会员数量 */
                "female_count": 0, /* 女性总数  */
                "female_regular_count": 0, /* 女性熟客数量 */
                "female_member_count": 0 /* 女性会员数量  */
            },
            {
                "age_range": 2,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            },
            {
                "age_range": 3,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            },
            {
                "age_range": 4,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            },
            {
                "age_range": 5,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            },
            {
                "age_range": 6,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            },
            {
                "age_range": 7,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            },
            {
                "age_range": 8,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            }
        ]
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

字段描述:age_range

age_range 取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.4 获取当日人流变化趋势(人流总数,时间粒度为小时)

请求链接:/passengerFlow/stat/today/getTrendByHour

接口描述:通过本接口调用,用户可以获取当日各个时间段的人流统计

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)7948

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/today/getTrendByHour",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "count_list": [
            {
                "time": "2020-02-11 00:00",
                "total_count": 0, /* 已捕捉到有效人脸数量 */
                "pass_count": 110, /* 过店客流数量 */
                "unexposed_count": 0 /* 未捕捉到有效人脸数量 */
            },
            {
                "time": "2020-02-11 01:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 02:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 03:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 04:00",
                "total_count": 0,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 05:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 06:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 07:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 08:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 09:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 10:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 11:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 12:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 13:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 14:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 15:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 16:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            }
        ]
    },
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed",
}

字段描述:age_range

age_range 取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.5 获取历史人流统计信息(总数/生熟客/会员)

接口描述:通过本接口调用,用户可以获取历史数据中三个主要人脸分组的人流统计

请求链接:/passengerFlow/stat/history/groupByTag

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
start_timestring筛选开始时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同)2020-01-01
end_timestring筛选结束时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同)2020-01-16

备注:

每次接口调用, 开始时间和结束时间的区间限制为30天

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/history/groupByTag",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "start_time": "2020-01-01",
    "end_time": "2020-01-16",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "total_count": 0,   /* 已捕捉到有效人脸数量(人次) */
        "regular_count": 0,   /* 熟客数量(人次) */
        "stranger_count": 0,   /* 生客数量(人次) */
        "member_count": 0,   /* 会员数量(人次)  */
        "uniq_total_count": 0,   /* 已捕捉到有效人脸数量(去重) */
        "uniq_regular_count": 0,   /* 熟客数量(去重) */
        "uniq_stranger_count": 0,   /* 生客数量(去重) */
        "uniq_member_count": 0,   /* 会员数量(去重) */
        "pass_count": 110,   /* 过店客流数量*/
        "unexposed_count": 0 /* 未捕捉到有效人脸数量 */
    },
    "code": 0,   /* 其他错误参考错误列表 */
    "msg": "succeed"
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.6 获取历史客群详情(按照年龄性别) 

请求链接:/passengerFlow/stat/history/groupByGender

接口描述:通过本接口调用,用户可以获取当日各个年龄段不同性别的人流统计

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
start_timestring筛选开始时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同) 2020-01-01
end_time string筛选结束时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同) 2020-01-01

备注:

每次接口调用, 开始时间和结束时间的区间限制为30天

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/history/groupByGender",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "start_time": "2020-01-01",
    "end_time": "2020-01-01",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "count_list": [
            {
                "age_range": 1,
                "male_count": 0, /* 男性总数(人次)  */
                "male_regular_count": 0, /* 男性熟客数量(人次) */
                "male_member_count": 0, /* 男性会员数量(人次) */
                "female_count": 0, /* 女性总数(人次)  */
                "female_regular_count": 0, /* 女性熟客数量(人次) */
                "female_member_count": 0, /* 女性会员数量(人次)  */
                "uniq_male_count": 0, /* 男性总数(去重) */
                "uniq_male_regular_count": 0, /* 男性熟客数量(去重) */
                "uniq_male_member_count": 0, /* 男性会员数量(去重) */
                "uniq_female_count": 0, /* 女性总数(去重) */
                "uniq_female_regular_count": 0, /* 女性熟客数量(去重) */
                "uniq_female_member_count": 0 /* 女性会员数量(去重) */
            },
            {
                "age_range": 2,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            },
            {
                "age_range": 3,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            },
            {
                "age_range": 4,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            },
            {
                "age_range": 5,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            },
            {
                "age_range": 6,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            },
            {
                "age_range": 7,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            },
            {
                "age_range": 8,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            }
        ]
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

字段描述:age_range

age_range 取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.7 获取历史人流变化趋势(总数/生熟客,时间粒度为小时)

请求链接:/passengerFlow/stat/history/getTrendByHour

接口描述:通过本接口调用,用户可以获取一段时间内的人流变化趋势

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no stirng 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)7948
start_timestring筛选开始时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同) 2020-01-01
end_time string筛选结束时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同) 2020-01-01

备注:

每次接口调用, 开始时间和结束时间的区间限制为24小时

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/history/getTrendByHour",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "start_time": "2020-01-01",
    "end_time": "2020-01-01",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "count_list": [
            {
                "time": "2019-12-01 0:00",
                "total_count": 0, /* 已捕捉到有效人脸数量(人次) */
                "regular_count": 0, /* 熟客数量(人次) */
                "stranger_count": 0, /* 生客数量(人次) */
                "member_count": 0, /* 会员数量(人次) */
                "uniq_total_count": 0, /* 已捕捉到有效人脸数量(去重)*/
                "uniq_regular_count": 0, /* 熟客数量(去重)*/
                "uniq_stranger_count": 0, /* 生客数量(去重)*/
                "uniq_member_count": 0, /* 会员数量(去重)*/
                "pass_count": 110,  /* 过店客流数量 */
                "unexposed_count": 0 /* 未捕捉到有效人脸数量 */
            },
            {
                "time": "2019-12-01 1:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 2:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 3:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 4:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 5:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 6:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 7:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 8:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 9:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 10:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 11:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 12:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 13:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 14:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 15:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 16:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 17:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 18:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 19:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 20:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 21:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 22:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 23:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            }
        ]
    },
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed"
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.8 获取历史人流变化趋势(总数/生熟客,时间粒度为天)

请求链接:/passengerFlow/stat/history/getTrendByDay

接口描述:通过本接口调用,用户可以获取一段时间内的人流变化趋势

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939070408
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 15220
start_timestring筛选开始时间 “YYYY-MM-DD” 2020-01-01
end_time string筛选结束时间 “YYYY-MM-DD” 2020-01-03

备注:

每次接口调用, 开始时间和结束时间的区间限制为30天

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/history/getTrendByDay",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "start_time": "2020-01-01",
    "end_time": "2020-01-03",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "count_list": [
            {
                "time": "2020-01-01",
                "total_count": 0, /* 已捕捉到有效人脸数量(人次) */
                "regular_count": 0, /* 熟客数量(人次) */
                "stranger_count": 0, /* 生客数量(人次) */
                "member_count": 0, /* 会员数量(人次) */
                "uniq_total_count": 0, /* 已捕捉到有效人脸数量(去重)*/
                "uniq_regular_count": 0, /* 熟客数量(去重)*/
                "uniq_stranger_count": 0, /* 生客数量(去重)*/
                "uniq_member_count": 0, /* 会员数量(去重)*/
                "pass_count": 110,  /* 过店客流数量 */
                "unexposed_count": 0 /* 未捕捉到有效人脸数量 */
            },
            {
                "time": "2020-01-02",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-01-03",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            }
        ]
    },
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed"
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.9 获取历史人流变化趋势(总数/生熟客,时间粒度为周)(开发中)

请求链接:/passengerFlow/stat/history/getTrendByWeek

接口描述:通过本接口调用,用户可以获取一段时间内的人流变化趋势

接口参数

参数名称是否必须类型说明
shop_idstringSaaS对接店铺标识,SaaS厂商提供
start_timestring筛选开始时间 “YYYY-MM-DD”
end_time string筛选结束时间 “YYYY-MM-DD”

备注:

每次接口调用, 开始时间和结束时间的区间限制为12周

返回值: 

{
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
        "count_list": [
            {
                "time": "2019-09-11",
                "total_count": 0, /* 总数 */
                "regular_count": 0, /* 熟客数量 */
                "stranger_count": 0, /* 生客数量 */
                "member_count": 0 /* 会员数量 */
            },
            {
                "time": "2019-09-11",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0
            }
        ]
    }
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.10 获取历史人流变化趋势(总数/生熟客,时间粒度为月)(开发中)

请求链接:/passengerFlow/stat/history/getTrendByMonth

接口描述:通过本接口调用,用户可以获取一段时间内的人流变化趋势

接口参数

参数名称是否必须类型说明
shop_idstringSaaS对接店铺标识,SaaS厂商提供
start_timestring筛选开始时间 “YYYY-MM-DD”
end_time string筛选结束时间 “YYYY-MM-DD”

备注:

每次接口调用, 开始时间和结束时间的区间限制为12个月

返回值: 

{
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
        "count_list": [
            {
                "time": "2019-01",
                "total_count": 0, /* 总数 */
                "regular_count": 0, /* 熟客数量 */
                "stranger_count": 0, /* 生客数量 */
                "member_count": 0 /* 会员数量 */
            },
            {
                "time": "2019-12",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0
            }
        ]
    }
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.11 获取顾客到店频率分布统计数据

接口描述:通过本接口调用,用户可以获取顾客到店频率分布情况

请求链接: /passengerFlow/stat/history/person/frequency/getList

接口版本:v2.0

接口参数:

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号 560279010307
start_timestring 筛选开始时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同) 2020-01-01
end_timestring 筛选结束时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同,end_time日期需要小于当前日期) 2020-01-16
  • 每次接口调用, 开始时间和结束时间的区间限制为30天

请求示例:

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/history/person/frequency/getList",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "start_time": "2020-01-01",
    "end_time": "2020-01-16",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值:

{
	"code": 1,
	"msg": "",
	"data": {
		"frequency_list": [{
			"frequency": 1,            /*到店频次*/
			"stranger_uniq_count": 76, /*生客数量(去重)*/
			"regular_uniq_count": 4,   /*熟客数量(去重)*/
			"member_uniq_count": 0     /*会员数量(去重)*/
		}, {
			"frequency": 2,
			"stranger_uniq_count": 13,
			"regular_uniq_count": 2,
			"member_uniq_count": 0
		}, {
			"frequency": 3,
			"stranger_uniq_count": 5,
			"regular_uniq_count": 2,
			"member_uniq_count": 0
		}, {
			"frequency": 4,
			"stranger_uniq_count": 5,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 5,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 6,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 7,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 8,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 9,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 10,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 11,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 12,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 13,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 14,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 15,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 16,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 17,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 18,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 19,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 20,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 21,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 22,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 23,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 24,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 25,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 26,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 27,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 28,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 29,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 30,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 31,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 32,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 33,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 34,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 35,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 36,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 37,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 38,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 39,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 40,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 41,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 42,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 43,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 44,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 45,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 46,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 47,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 48,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 49,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 50,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}]
	}
}

错误码:

错误码说明
5025时间参数错误
5041 请求中未找到shop_id参数

7 直播回放接口

7.1 接口描述

直播回放接口是用来查看实时和历史视频数据的接口。

7.2 接口列表

接口名称接口描述
/media/live/start开始远程直播
/media/live/stop结束远程直播
/media/playback/start开始远程回放
/media/playback/stop结束远程回放
/media/video/getList获取回放视频列表
/media/motionDetection/getList获取动态侦测视频列表
/media/playback/getSnapshot获取指定时间的监控图片
/media/live/getSnapshot获取实时监控图片

7.3 接口详情

7.3.1 开始远程直播

接口描述:通过本接口调用,用户可以开始远程直播。

请求链接:/media/live/start

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可 10087
ipc_idstring摄像机设备唯一ID549755805835
resolutionint分辨率0

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/live/start",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "resolution": 0,
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed"
    "data": {
        "url": "https://xxxxxxxx/C101P98200023/1219130724381102080.flv?auth_key=1579501989-729716105000265001016467621435-0-",
        "hls_url": "https://xxxxxxxx/C101P98200023/1219130724381102080.m3u8?auth_key=1579501989-729716105000265001016467621435-0-"
    }
}

字段描述:resolution

resolution 取值说明
0超清
1高清

错误码:

错误码说明
5000数据库错误
5011与设备通讯错误
5013未找到数据
5041请求中未找到shop_id参数
5501ipc设备不存在
5510设备未绑定

7.3.2 结束直播

接口描述:通过本接口调用,用户可以结束远程直播。

请求链接:/media/live/stop

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10087
ipc_idstring摄像机设备唯一ID549755805835
resolutionint分辨率0

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/live/stop",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "resolution": 0,
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

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

字段描述:resolution

resolution 取值说明
0超清
1高清

错误码:

错误码说明
5000数据库错误
5013未找到数据
5011与设备通讯错误
5041请求中未找到shop_id参数
5501ipc设备不存在
5510设备未绑定

7.3.4 获取回放视频列表

接口描述:通过本接口调用,用户可以获取回放视频列表。

请求链接:/media/video/getList

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstringSaaS对接店铺标识,SaaS厂商提供10087
ipc_idstring摄像机设备唯一ID549755805835
start_timeint开始查询时间,Unix时间戳,秒级别1578969264
end_timeint结束查询时间,Unix时间戳,秒级别1578972864

备注:

start_time与end_time时间区间限制为3600s

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/video/getList",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "start_time": 1578969264,
    "end_time": 1578969264,
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
	"total_count": 1,
	"video_list": [{
            "ipc_id": "549755812970",
	    "url": "http: //xxxxxxxx/VIDEO/IPC/SS101D8BS00087/39C1045AF2EA34B0CEA528FB228C8EDA",
	    "start_time": 1551854897,
	    "end_time": 1551854958
	}]
	}
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5021非法参数(时间区间超限)
5041请求中未找到shop_id参数

7.3.5 获取动态侦测视频列表

接口描述:通过本接口调用,用户可以获取回放视频列表。

请求链接:/media/motionDetection/getList

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no stirng 商米数字店铺平台唯一编号(v2.0之后为必填项)100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10087
ipc_idstring摄像机设备唯一ID549755805835
start_timeint开始查询时间,Unix时间戳,秒级别1578969264
end_timeint结束查询时间,Unix时间戳,秒级别1579055640
page_num否(默认1)int当前页码1
page_size否(默认10)int当前页条目数量 (最大条目数量为100)10

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/motionDetection/getList",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "start_time": 1578969264,
    "end_time": 1579055640,
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{   
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
	"total_num": 1,
	"video_list": [{
            "source": "1",
	    "detect_time": 1551854897,
	    "url": "http: //xxxxxxxx/VIDEO/IPC/SS101D8BS00087/39C1045AF2EA34B0CEA528FB228C8EDA"
	}]
    }
}

字段描述:source

source 取值说明
1画面
2声音
3声音和画面

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

7.3.6 获取指定时间的监控图片

接口描述:通过本接口调用,用户可以获取指定时间的监控图片。

请求链接:/media/playback/getSnapshot

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 15220
ipc_idstring摄像机设备唯一ID549755812970
timeint截图时间,Unix时间戳,秒级别1579055640

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/playback/getSnapshot",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "time": 1579055640,
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
        "snapshot_url":"http://xxxxxxxx/VIDEO/IPC/SS101D8BS00087/39C1045AF2EA34B0CEA528FB228C8EDA"
    }
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

7.3.7 获取实时监控图片

接口描述:通过本接口调用,用户可以获取实时监控图片, 图片有效期为一天。

请求链接:/media/live/getSnapshot

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项 )100939020409
shop_idstring
店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
10087
ipc_idstring摄像机设备唯一ID549755805835

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/live/getSnapshot",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data":{  
        "snapshot_url":"http://xxxxxxxx/VIDEO/IPC/SS101D8BS00087/39C1045AF2EA34B0CEA528FB228C8EDA"
    }
}

错误码:

错误码说明
5000数据库错误
5011与设备端通讯错误
5013未找到数据
5041请求中未找到shop_id参数
5501ipc设备不存在
5510设备未绑定
5515超出截图时常


7.3.8
开始远程回放

接口描述: 通过本接口调用,用户可以开始远程回放。

请求链接: /media/playback/start

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10087
ipc_idstring摄像机设备唯一ID549755805835
start_timeint开始查询时间,Unix时间戳,秒级别1578969264
end_timeint结束查询时间,Unix时间戳,秒级别1579055640

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/playback/start",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "start_time": 1578969264,
    "end_time": 1579055640,
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
        "url": "https://xxxxxxxx/SAAS-OpenAPI_1211497245552152576/1577092646.flv?auth_key=1577096246-57626095498907571693914212321441-0-",
        "hls_url": "https://xxxxxxxx/SAAS-OpenAPI_1211497245552152576/1577092646.flv?auth_key=1577096246-57626095498907571693914212321441-0-",
        "client_id": "SAAS-OpenAPI_1211497245552152576"
    }
}

错误码:

错误码说明
5021 非法参数(时间区间超限)
5041 请求中未找到shop_id参数
5087 无匹配数据
5088数据库错误
5506未查询到数据


7.3.9
结束远程回放

接口描述: 通过本接口调用,用户可以开始远程回放。

请求链接: /media/playback/stop

接口参数

参数名称是否必须类型说明示例
client_id string 用户client id SAAS-OpenAPI_1211497245552152576

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/playback/stop",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "client_id": "SAAS-OpenAPI_1211497245552152576",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

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

错误码:

错误码说明
5020 无效参数

8 消息推送

8.1 接口描述

商米数字店铺平台可以在接收到设备相关消息后,根据合作平台需求订阅实时消息推送,将消息和事件推送给SaaS合作方。

8.2 接口列表

参考 《消息推送中心》文档

9 智能摄像机对接示范

9.1 店铺对齐

请参考《商米数字店铺开放平台 – > 商户店铺》 章节将用户在商米数字店铺上创建的门店与Saas合作伙伴平台上的同一家门店绑定对齐,之后的所有操作都是基于该门店内的设备和数据进行

9.2 设备配网

如果您的设备是通过有线连入互联网,则可以跳过该步骤。

如果您的设备通过无线网络连入互联网,请按照以下步骤使用android SDK进行配网。(对于其它操作系统或者设备,您也可以直接调用设备API进行配网)

如果设备上的蓝灯常亮,表明设备联网成功。

如果设备上显示为绿灯,则说明网络连接异常。

9.3 设备绑定

9.3.1 接口绑定(开发中)

IPC设备连入网络后,调用设备绑定接口 /device/ipc/bind 将设备绑定到指定店铺内。

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/bind",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "ipc_sn": "C201D8BS00089",
    "app_id": "LMWWQVTW4QGCC",
    "mac":"0C25766F5705",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

9.3.2 store页面绑定

通过下载商米助手,打开商米助手app页面,输入对应账号密码登录到已经对齐的门店下面。
到对应店铺下点击设备,添加设备,选择设备类型,这时接通摄像机电源,电源接通后,等待约20秒,摄像机指示灯呈[绿灯闪烁]后,点击下一步。

选择网络连接方式,有线网络连接和无线网路连接两种方式:
(1)有线网络连接需要为摄像机插入网线,并将手机连接至同一网络后点击下一步,待摄像机信号灯呈[蓝色常亮]状态后,点击下一步,找到对应的ipc设备即可绑定。
(2)无线网络连接需要将手机连接至摄像机得无线网络[SUNMI_XXXX](可以在机身或包装盒上找到),点击下一步,找到对应得ipc设备即可绑定。

添加成功之后,用户可以在手机和web上看到新添加的ipc设备。

9.4 设备配置

9.4.1 接口修改调焦(开发中)

在设备绑定之后,用户可以调用接口修改设备的调焦。

9.4.2 store页面设置进店划线

对于FS摄像机,用户需要首先设置进店划线。
打开商米助手app,输入账号密码进入对应门店,点击设备,然后点击屏幕右上角三个小点的图标进入摄像机设置,该页面点击调整画面。
这时画面会提示”请安排人员面向摄像机,站在需要识别人脸的位置”,然后点击屏幕右上角下一步,提示”调整画面大小并移动人脸框的位置,使人脸刚好填充整个人脸框”,这时相机会自动调整画面,然后提示”为保证识别精准性,您还可以移动已设置好的进店门槛线位置或拖拽门槛线端点更改门槛线的长度”,这是您可以手动在手机屏幕上划线来设置进店门槛的位置,然后点击完成即可。

9.5 查看直播

接口列表

详情可查看第7章直播回放接口

接口名称接口描述
/media/live/start开始远程直播
/media/live/stop结束远程直播
/media/playback/start开始远程回放 (开发中)
/media/playback/stop结束远程回放 (开发中)
/media/video/getList获取回放视频列表
/media/motionDetection/getList获取动态侦测视频列表
/media/playback/getSnapshot获取指定时间的监控图片
/media/live/getSnapshot获取实时监控图片

9.6 客流统计

接口列表

详情可查看第6章人流统计接口

接口名称接口描述
/passengerFlow/stat/today/getLatest获取当日实时人流量(实时总人流量)
/passengerFlow/stat/today/groupByTag获取当日人流统计信息(按照年龄以及生熟客人脸分组)
/passengerFlow/stat/today/groupByGender获取当日人流统计信息(按照年龄以及性别分组)
/passengerFlow/stat/today/getTrendByHour获取当日人流变化趋势(人流总数,时间粒度为小时)
/passengerFlow/stat/history/groupByTag获取历史人流统计信息(人流总数/生熟客/会员)
/passengerFlow/stat/history/groupByGender获取历史客群详情(年龄以及性别)
/passengerFlow/stat/history/getTrendByHour获取历史人流变化趋势(人流总数/生熟客,时间粒度为小时)
/passengerFlow/stat/history/getTrendByDay获取历史人流变化趋势(人流总数/生熟客,时间粒度为天)
/passengerFlow/stat/history/getTrendByWeek获取历史人流变化趋势(人流总数/生熟客,时间粒度为周)(开发中)
/passengerFlow/stat/history/getTrendByMonth获取历史人流变化趋势(人流总数/生熟客,时间粒度为月)(开发中)

9.7 实时获取进店 FaceID

请参考《商米数字店铺开放平台 – > 消息中心》 章节用户需要先添加消息监听地址, 用户将自己平台的相关HTTP地址添加到商米数字开放平台,并提供需要监听的设备以及 IPC实时获取人员消息事件就可以实时获取进店FaceID。

9.7.1 增加消息监听

接口描述: 通过本接口调用,用户可以增加消息监听的HTTP回调地址。 用户将自己平台的相关HTTP地址通过该接口添加到商米数字开放平台;并提供需要监听的设备以及事件。当商米数字开放平台收到该设备的该事件时,会调用该HTTP接口。
对于该回调HTTP回调的鉴权方式,遵照商米数字店铺开放平台的鉴权方式。
回调HTTP需要带以下接口参数:

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺的门店唯一标识,由商米数字店铺生成
shop_id string SaaS对接店铺标识,SaaS厂商提供
event int触发消息的类型
payload string 消息的具体格式(根据消息不同会有不同的json)

请求链接: /hook/add

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no

string 商米数字店铺平台门店唯一编号(v2.0之后为必填项)


100939070408
shop_id string 店铺在SaaS软件体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 15220
http_callback string HTTPS回调地址链接 http://xxxxxxxx/api/testHook
event_list array[int] 需要监听的事件的列表 [2001]

请求示例:

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/hook/add",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "100939070408",
    "http_callback": "http://xxxxxxxx/api/testHook",
    "event_list": [2001],
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值:

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

字段描述: event

event 取值说明
1101通过订单时间获取一段时间内人脸列表
2001IPC实时获取人员消息

payload(event=1101):

{
	"order_id": "T929321362467651",
	"purchase_time": 1594266755,
	"face_list": [{
		"face_id": 1,
		"gender": 1,
		"age_range": 3,
		"group_type": 2
	}, {
		"face_id": 3,
		"gender": 2,
		"age_range": 5,
		"group_type": 1
	}]
}


payload(event=2001):

{
    ipc_id: "928",
    face_id: "29195",
    gender: 1,
    age_range: 4,
    group_id: "8927",
    group_name: "stranger",
    group_type": 2
}

返回字段描述 : gender

gender取值说明
0未知
1
2

字段描述 : age_range

age_range取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

返回字段描述: group_type

group_type取值说明
1生客人脸库
2熟客人脸库
3店员人脸库
4黑名单人脸库
5自定义人脸库

附录

更新记录

更新日期更新内容
2019-07-07初版草稿
2019-07-17暂时在所有接口中去除company_id字段,以shop_id作为唯一的门店对齐和标识,简化接口
2019-08-08调整部分函数接口返回值
2019-08-23更新通知接口
2020-04-01 取消开始远程回放与结束远程回放的“开发中”状态
2020-04-14设备信息中添加connect_time
2020-04-20 添加错误码 5518: 人脸库创建失败
2020-07-15添加新hook event 1101
2020-09-07T+1人流数据添加UV统计字段
2020-09-14 更新绑定与解绑接口

(开发中)

错误代码

1 背景介绍

商米数字店铺(SUNMI Store)是商米提供的围绕商户店铺中物联网设备基础上的店铺管理系统。

商米数字店铺作为一个开放平台,支持与第三方SaaS厂商进行各种数据的对接,包括商品信息对接,交易信息对接,会员体系对接等。

电子价签等物联网设备直接对接店铺的商品,价格以及策略等信息,所以在数字店铺系统内保存了一个基本的商品库结构。对于数据来源,用户既可以选择在数字店铺的页面进行编辑,也可以选择与第三方SaaS厂商数据打通。

本文描述的是与第三方SaaS厂商进行商品信息对接中,返回错误码及说明。

2 开放平台错误代码列表

作为HTTP消息返回,如果消息签名认证失败,HTTP消息会返回 401等作为提示。 如果消息签名认证通过,则进入业务层处理,此次HTTP请求返回200 OK。

具体业务层面的操作返回JSON值在消息体中。常见的消息返回类型为:

{
    "code": 0,
    "msg": "succeed",
    "data": {}
}

3 错误码列表

错误码说明
5090sign校验失败
5091timestamp的请求过期
5092random的值非法
5000数据库操作失败
5013店铺映射关系不存在或非支持的SaaS厂商
5015非法商品
5022传参错误,缺失必要传参
5041非法SaaS厂商
5047非法订单

消息中心

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 店铺在SaaS软件体系下的唯一标识
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 商米数字店铺平台门店唯一编号(v2.0之后为必填项)
shop_idstring店铺在SaaS软件体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用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商米数字店铺平台门店唯一编号(v2.0之后为必填项)
shop_idstring店铺在SaaS软件体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
event_listarray[int]需要取消监听的事件的列表

返回值: 

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

IPC

隐私协议

电子价签

1 背景介绍

商米数字店铺(SUNMI Store)是商米提供的基于店铺物联网设备的店铺管理系统。

商米数字店铺作为一个开放平台,支持与第三方软件进行各种对接,包括设备层面智能摄像机、电子价签的对接,数据层面的商品信息、交易信息对接等。

如果客户想要在第三方软件上进行价签设备的管理,包括价签与商品的绑定,指定价签闪灯等,可以通过对接将相应功能集成到第三方软件中。

下文列出的就是全面对接价签系统管理功能的相关接口。

2 接口规范

2.1 协议说明

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

注:消息体大小不得超过1M,超过1M的请求,直接拒绝!

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

2.2 签名规则

参考鉴权认证

2.3 公共参数

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

3 商品管理接口

3.1 接口描述

商品管理接口包括两部分:

一部分是商品新增修改删除接口,这是数字店铺的通用基础功能,很多设备和服务都会用到,参考单独的商品对接的文档。

另一部分是价签业务相关的功能,包括商品与价签的绑定解绑等,在本文中进行描述。

3.2 接口列表

接口名称接口
商品绑定价签/product/bindEsl
商品解绑价签/product/unbindEsl
获取商品绑定价签/product/getBindEslList
修改商品绑定价签的模板/product/updateTemplate
获取商品列表/product/getList
获取商品详情/product/getInfo
批量更新商品价签模板(定制接口,QM)/product/batch/bindEslWithTemplate

3.3 接口详情

3.3.1 商品绑定价签

接口描述:通过本接口调用,用户可以将商品与指定价签进行绑定,同时指定对应模板。绑定之后价签将开始刷图。

请求链接:/product/bindEsl

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
product_idstring商品数据库ID,如果进行了对接,和数据对接传过来的id一致
esl_code否(esl_code与esl_id至少提供一个)string电子价签8位ID(条码)
esl_id否(esl_code与esl_id至少提供一个)string电子价签数据库ID转码
template_idstring模板数据库ID

返回值: 

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

错误码:

错误码说明
5000数据库错误
5020参数错误
5015非法商品
5343非法模板
5300非法基站
5301非法价签
5338价签已被其他店铺绑定   
5342非法价签图片
5006OSS错误
5041非法对接软件店铺


3.3.2 商品解绑价签

接口描述:通过本接口调用,用户可以将商品与指定价签解除绑定。解绑之后价签将刷新显示解绑模板对应的内容。

请求链接:/product/unbindEsl

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
esl_code否(esl_code与esl_id至少提供一个)string电子价签8位ID(条码)
esl_id否(esl_code与esl_id至少提供一个)string电子价签数据库ID转码

返回值: 

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

错误码:

错误码说明
5000数据库错误
5020参数错误
5301非法价签
5320价签未绑定
5336价签已被其他店铺绑定    
5342非法价签图片
5006OSS错误
5041非法对接软件店铺

3.3.3 获取商品绑定价签

接口描述:通过本接口调用,用户可以获取商品绑定的价签列表。

请求链接:/product/getBindEslList

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
product_idstring商品数据库ID,如果进行了对接,和数据对接传过来的id一致

返回值: 

{
    code:0,       /* 其他错误参考错误列表 */
    msg: "succeed",
    data: { 
       "esl_list": [{
            "esl_id": ”1000“,
            "esl_code": "DJKS90EN",
            "template_id": ”10002“,
            "status": 1,
     } ...   
    ]}
}

错误码:

错误码说明
5000数据库错误
5020参数错误
5301非法价签
5015非法商品
5041非法对接软件店铺

3.3.4 修改商品绑定价签的模板

接口描述:通过本接口调用,用户可以更新商品对应的模板。

请求链接:/product/updateTemplate

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
product_idstring商品数据库ID,如果进行了对接,和数据对接传过来的id一致
template_idstring模板数据库ID


返回值
: 

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

错误码:

错误码说明
5000数据库错误
5020参数错误
5005文件错误
5006OSS错误
5343非法模板
5015非法商品
5342非法价签图片
5041非法对接软件店铺

3.3.5 获取商品列表

接口描述:通过本接口调用,用户可以使用关键字搜索商品。

请求链接:/product/getList

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
keywordstring关键字
page_num否(默认1)int页码
page_size否(默认10)int每页记录数

返回值: 

{
    "code": 0,       /* 其他错误参考错误列表 */
    "msg": "succeed"
    "data": {
        "total_count": 1,
        "product_list": [
            {
                "id": ,
                "name": ,
                "seq_num": ,
                "bar_code": ,
                "category_id": ,
                "price": ,
                "modified_time":
            }
        ],
    },
 }

3.3.6 获取商品信息

接口描述:通过本接口调用,用户可以获取商品信息。

请求链接:/product/getInfo

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
product_idstring商品数据库ID,如果进行了对接,和数据对接传过来的id一致

返回值: 

{
    code:0,       /* 其他错误参考错误列表 */
    msg: "succeed",
    data: {
        "id":,
        "name":,
        "alias":,
        "seq_num":,
        "bar_code":,
        "qr_code":,
        "unit":,
        "spec":,
        "area":,
        "level":,
        "brand":,
        "expire_time":,
        "price":,
        "promote_price":,
        "member_price":,
    }
}

3.3.7 批量更新商品价签模板(定制接口,QM)

接口描述:通过本接口调用,用户可以批量更新商品以及对应的价签。

请求链接: /product/batch/bindEslWithTemplate

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
bind_liststring(
array[bind_info])
价签绑定关系列表
trace_idstring消息追踪编号

bind_info参数类型:

bind_info参数 类型是否必填说明
esl_codestring否(esl_code和esl_sn至少填写一个) 电子价签8位ID(价签正面的条码)
esl_snstring 否(esl_code和 esl_ sn至少填写一个)
template_idstring 否(template_id和company_template_id 不能同时指定)门店模板唯一ID标识
company_template_id string 否(template_id和company_template_id 不能同时指定 ) 商户模板唯一ID标识
product_id string 商品唯一ID标识
seq_num string 否(如果不填写,默认与product_id一致)
name string
pricedouble
bar_code string
alias string
unit string
spec string
level string
area string
brand string
qr_code string
status string
description string
promote_pricedouble
promote_price_descriptionstring
member_pricedouble
member_price_descriptionstring
extra_infojson
extra_price_infojson
extra_custom_infojson

返回值: 

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

4 价签管理接口

4.1 接口描述

设备管理接口用来管理电子价签设备本身,包括价签与门店的绑定解绑等。

4.2 接口列表

接口名称接口
添加价签到门店 /device/esl/bind
从门店删除价签 /device/esl/unbind
获取价签列表/device/esl/getList
获取价签详情/device/esl/getInfo
对价签推特定图片 /device/esl/pushImage
获取统计信息/device/getOverview
获取商铺下所有价签信息/device/esl/getListByCompany

4.3 接口详情

4.3.1 添加价签到门店

接口描述:通过本接口调用,用户可以绑定价签到指定门店。这一步操作不是必须,在执行商品绑定价签的时候,如果对应价签没有被任何门店绑定,也会执行绑定价签到门店的动作。

请求链接:/device/esl/bind

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
esl_code否(esl_code和esl_sn至少提供一个)string电子价签8位ID(条码)
esl_sn否(esl_code和esl_sn至少提供一个)string电子价签SN

返回值: 

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

错误码:

错误码说明
5000数据库错误
5301非法价签
5338价签已被店铺绑定
5041非法对接软件店铺

4.3.2 从门店删除价签

接口描述:通过本接口调用,用户可以从指定店铺上解绑价签,价签删除后会显示出厂图,可以再次被其他门店使用。

请求链接:/device/esl/unbind

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
esl_idstring电子价签数据库ID转码

返回值: 

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

错误码:

错误码说明
5000数据库错误
5301非法价签
5041非法对接软件店铺

4.3.3 获取价签列表

接口描述:通过本接口调用,用户可以获取价签列表,列表中包含价签状态。

请求链接:/device/esl/getList

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
page_num否(默认1)int当前页码
page_size否  (默认10)int当前页条目数量

返回值: 

{
    code:0,       /* 其他错误参考错误列表 */
    msg: "succeed",
    data: {
         "total_count": 100,
        "esl_list": [{
               "esl_id": “1000”,
                "esl_code": "SKDI39DN",
                "esl_sn": "B101194N00002",
                "model_name": "SL121+",
                "status": 2
             },
             ... ...
       ] }

返回字段描述:status

status 取值说明
0未激活
1未绑定
2待推送
3推送成功
4推送失败

错误码:

错误码说明
5000数据库错误
5020非法参数
5041非法对接软件店铺

4.3.4 获取价签详情

接口描述:通过本接口调用,用户可以获取价签详情(包含MAC地址,电量,信号强度等)。

请求链接:/device/esl/getInfo

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
esl_code否(esl_code和esl_id至少输入一个)string电子价签8位ID(条码)
esl_id否  (esl_code和esl_id至少输入一个)string电子价签数据库ID转码

返回值: 

{
    code:0,       /* 其他错误参考错误列表 */
    msg: "succeed",
    data: {
            "esl_id": "1000",
            "esl_code": "SKDI39DN",
            "esl_sn": "B101194N00002",
            "model_name": "SL121+",
            "status": 2,
            "screen_size_name": "2.13寸",
            "software_version": "1.0.1",
            "battery": 90,
            "rssi": -37,
            "connect_time": 15683920394,
            "ap_id":  "10200",
            "ap_sn": "B201E95D00001",
            "ap_name": "",
      }
}

返回字段描述:status

status 取值说明
0未激活
1未绑定
2待推送
3推送成功
4推送失败

错误码

错误码说明
5000数据库错误
5023缺少参数
5502非法设备机型
5041非法对接软件店铺

4.3.5 对价签推特定图片

接口描述:通过本接口调用,用户可以指定价签推图。

请求链接:/device/esl/pushImage

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
esl_idstring电子价签数据库ID转码
picfile上传的刷图文件

图片分辨率:

上传图片的颜色和大小尺寸需要符合要求,否则无法成功下发显示到电子价签屏幕上,相关参数参考下表。

电子价签型号支持颜色支持图片分辨率(px)
SL115黑白、黑白红152 * 152
SL121黑白、黑白红212 * 104
SL126黑白、黑白红296 * 152
SL126+黑白296 * 152
SL142黑白、黑白红400 * 300
SL142+黑白、黑白红400 * 300
SL175黑白、黑白红640 * 384

返回值: 

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

错误码:

错误码说明
5004系统错误
5005非法文件
5020非法参数
5300非法基站
5301非法价签
5041非法对接软件店铺

4.3.6 获取统计信息

接口描述: 通过本接口调用,用户可以获取价签和基站的统计概览信息。

请求链接:/device/getOverview

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)

返回值

{
    "code":0,
    "data":{
            "ap_total_count":24,
            "esl_total_count":55,
            "esl_pending_count":54,
            "esl_failed_count":3
        },
    "msg":""
}
错误码说明
5041非法对接软件店铺

4.3.7 获取商铺下所有价签信息

接口描述:通过本接口调用,用户可以分页获取指定商铺下的价签信息。

请求链接: /device/esl/getListByCompany

接口参数

参数名称 是否必须 类型 说明
sunmi_company_nostring 商米数字店铺平台 中商户的唯一编号 (仅限通过接口创 建的店铺查询)
page_num 否(默认1)int页码
page_size否(默认10)int 每页记录数

返回值

{
    "data": {
        "total_count": 1,
        "esl_list": [
            {
                "id": "314159282628",
                "esl_code": "HRBAGJAY",
                "sn": "B101194N00006",
                "mac": "00:01:01:02:02:02",
                "bin_version": "0.6.6",
                "battery": 4,
                "rssi": 0,
                "status": 1,
                "ap_sn": "tongyutestsn",
                "ap_id": "314159333800",
                "model_name": "SL121"
            }
        ]
    },
    "code": 0, /* 其他错误参考错误列表 */ 
    "msg": "succeed"
}

返回字段描述:status

status取值 说明
0 未激活
1未绑定
2待推送
3推送成功
4推送失败

错误码:

错误码说明
5000数据库错误
5041非法对接软件店铺
5903该商铺不是当前 saas 创建,无权查看

5 闪灯接口

5.1 接口描述

闪灯接口用于管理价签闪灯相关功能,包括让指示灯以某种颜色、频率进行闪烁。

5.2 接口列表

接口名称接口
指定价签闪灯/device/esl/flashLed
指定商品绑定的价签闪灯 /device/esl/product/flashLed

5.3 接口详情

5.3.1 指定价签闪灯

接口描述:通过本接口调用,可以让某些价签以某种方式闪灯。

请求链接:/device/esl/flashLed

接口参数

返回值: 

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
esl_idstring电子价签数据库ID转码
channel否 (默认为4) intLED颜色: 1-白, 2-蓝, 4-绿, 8-红,512-青, 1024-紫, 2048-黄
cycle否 (默认为100) int单次闪烁周期, 单位10ms;即 1s=100个cycle
duration否 (默认为8) int总共闪灯次数
{
    code:0,       /* 其他错误参考错误列表 */
    msg: "succeed",
    data: { }
}

错误码

错误码说明
5000数据库错误
5301非法价签
5041非法对接软件店铺

5.3.2 指定商品的绑定价签闪灯

接口描述:通过本接口调用,可以让某个商品绑定的价签某种方式闪灯。

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
product_idstring 商品数据库ID,如果进行了对接,和数据对接传过来的id一致
channel否 (默认为4) intLED颜色: 1-白, 2-蓝, 4-绿, 8-红,512-青, 1024-紫, 2048-黄
cycle否 (默认为100) int单次闪烁周期, 单位10ms;即 1s=100个cycle
duration否 (默认为8) int总共闪灯次数

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

错误码

错误码说明
5000数据库错误
5051 非法商品
5041非法对接软件店铺

6 基站管理接口

6.1 接口描述

基站管理接口用来管理电子价签使用的无线基站,包括基站的绑定解绑重启等。

6.2 接口列表

接口名称接口
绑定基站到门店/device/ap/bind
从门店解绑基站/device/ap/unbind
获取基站列表/device/ap/getList
获取基站详情/device/ap/getInfo
修改基站信息/device/ap/updateName
重启基站/device/ap/reboot
获取商铺下所有基站信息/device/ap/getListByCompany
绑定基站到门店(定制接口,qm) /device/ap/shop/bind

6.3.1 绑定基站到门店

接口描述:通过本接口调用,用户可以绑定无线基站到指定门店。

请求链接:/device/ap/bind

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
ap_snstring无线基站SN
ap_namestring无线基站名称
ap_macstring无线基站MAC地址

返回值: 

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

错误码:

错误码说明
5000数据库错误
5023非法参数
5300非法基站
5339基站已被店铺绑定
5041非法对接软件店铺

6.3.2 从门店解绑基站

接口描述:通过本接口调用,用户可以从门店中解绑无线基站。

请求链接:/device/ap/unbind

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
ap_idstring无线基站编号(和ap_sn必须出现其一)
ap_snstring无线基站SN(和ap_id必须出现其一)


返回值
: 

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

错误码:

错误码说明
5000数据库错误
5300非法基站
5041非法对接软件店铺

6.3.3 获取基站列表

接口描述:通过本接口调用,用户可以获取无线基站列表 。

请求链接:/device/ap/getList

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
page_num否(默认1)int当前页码
page_size否(默认10)int当前页条目数量

返回值: 

{
    code:0,       /* 其他错误参考错误列表 */
    msg: "succeed",
    data: { 
         "total_count": 100,
         "ap_list": [{
            "ap_id": “1000”,
            "ap_sn": "B201E96500001",
            "ap_name": "Gate 5",
            "esl_count": 1920,
            "status": 2
        },
       ... ...
  ] }
}

返回字段描述:status

status 取值说明
0未激活
1在线
2离线

错误码:

错误码说明
5000数据库错误
5020非法参数
5041非法对接软件店铺

6.3.4 获取基站详情

接口描述:通过本接口调用,用户可以获取无线基站详情 。

请求链接:/device/ap/getInfo

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
ap_idstring无线基站编号

返回值: 

{
    code:0,       /* 其他错误参考错误列表 */
    msg: "succeed",
    data: { 
          "ap_id": “1000”,
          "ap_sn": "B201E96500001",
          "ap_name": "Gate 5",
          "model_name": "SLAP1",
          "status": 2,
          "esl_count": 1920,
          "software_version": "1.0.1",
          "connect_time": 15683920394,
  ] }
}

返回字段描述:status

status 取值说明
0未激活
1在线
2离线

错误码:

错误码说明
5000数据库错误
5011非法设备机型
5300非法基站
5041非法对接软件店铺

6.3.5 修改基站信息

接口描述:通过本接口调用,用户可以修改无线基站名称 。

请求链接:/device/ap/updateName

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
ap_idstring无线基站编号
ap_namestring修改的名字

返回值: 

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

错误码:

错误码说明
5000数据库错误
5300非法基站
5041非法对接软件店铺

6.3.6 重启基站

接口描述:通过本接口调用,用户可以重启基站。

请求链接:/device/ap/reboot

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
ap_idstring无线基站编号

返回值: 

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

错误码:

错误码说明
5000数据库错误
5300非法基站
5041非法对接软件店铺

6.3.7 获取商铺下所有基站信息

接口描述: 通过本接口调用,用户可以分页获取指定商铺下的基站信息

请求链接 : /device/ap/getListByCompany

请求参数:

参数名称 是否必须 类型 说明
sunmi_company_no string 商米店铺平台中商户的唯一编号(仅限通过接口创建的店铺查询)
page_num 否(默认1)int 页码
page_size否(默认10)int 每页记录数

返回值: 

{
    "data": {
        "total_count": 1,
        "ap_list": [
            {
                "id": "314159283514",
                "sn": "B203P9CD00003",
                "name": "zqzqzzq",
                "mac": "0C:25:76:0C:25:08",
                "ip": "192.168.100.190",
                "model_name": "SLAP1",
                "esl_number": 0,
                "bin_version": "0.1.2",
                "status": 2
            }
        ]
    },
    "code": 0,/* 其他错误参考错误列表 */
    "msg": "succeed"
}

返回字段描述:status

status取值说明
0未激活
1在线
2离线

错误码:

错误码说明
5000 数据库错误
5041 非法对接软件店铺
5903 该商铺不是当前saas创建,无权查看

6.3.8 绑定基站到门店 (定制接口, qm)

接口描述:通过本接口调用,用户可以绑定无线基站到指定门店, 如果门店不存在,则创建门店以及绑定关系。

请求链接:/device/ap/shop/bind

接口参数

参数名称是否必须类型说明
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
ap_snstring无线基站SN
ap_namestring无线基站名称
ap_macstring无线基站MAC地址

返回值: 

{
    code:0,       /* 其他错误参考错误列表 */
    msg: "succeed",
    data: {
        “ap_id": ”129200“, 
        “sunmi_shop_no”: "20029384774"
    }
}

错误码:

错误码说明
5000数据库错误
5023非法参数
5300非法基站
5339基站已被店铺绑定
xxxx门店创建失败

7 模板管理接口

7.1 接口描述

模板管理接口用来对模板进行上传修改等操作,如果需要完全对接电子价签系统,不使用商米数字店铺任何功能,则需要对接这部分接口。

7.2 接口列表

接口名称接口
上传新建模板/template/create
更新指定模板/template/update
获取模板列表/template/getList
获取模板详情/template/getInfo
删除模板/template/delete
新建商户模板/template/company/create
更新商户模板 /template/company/update
获取商户模板列表/template/company/getList

7.3 接口详情

7.3.1 上传创建模板

接口描述:通过本接口调用,用户可以通过上传json格式的模板来创建新模板。模板json文件可以在数字店铺中下载,也可以在独立提供的模板设计网页中下载。

请求链接:/template/create

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
template_namestring模板名称
template_colorint模板支持的颜色类型 (1-黑白,2-黑白红)
template_screenint模板支持的屏幕类型 (1 – 2.13寸,2 – 2.6寸,3 – 4.2寸)
template_jsonstringjson格式的模板

返回值: 

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

错误码:

错误码说明
5000数据库错误
5005文件错误
5343非法模板
5346模板名称已存在
5041非法对接软件店铺

7.3.2 更新指定模板

接口描述:通过本接口调用,用户可以更新指定模板。

请求链接:/template/update

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
template_idstring
模板唯一标识ID
template_namestring模板名称
template_jsonstringjson格式的模板

返回值: 

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

错误码:

错误码说明
5000数据库错误
5005文件错误
5343非法模板
5346模板名称已存在
5041非法对接软件店铺

7.3.3 获取模板列表

接口描述:通过本接口调用,用户可以获取模板列表。

请求链接:/template/getList

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
page_num否 (默认1)int当前页码
page_size否 (默认10)int当前页条目数量

返回值: 

{
    code:0,       /* 其他错误参考错误列表 */
    msg: "succeed",
    data: {
  ”total_count“: 15,
       "template_list":[{
              "template_id": "100",
              "template_name": "sample",
              "template_color": 1,  /* 暂不支持*/
              "template_screen": 1},
              ... ...
   ]}
}

错误码:

错误码说明
5000数据库错误
5020非法参数
5041非法对接软件店铺

返回字段描述:color

color取值说明
1黑白
2黑白红

返回字段描述:screen

screen取值说明
12.13 寸
22.6 寸
34.2 寸

7.3.4 获取模板详情

接口描述:通过本接口调用,用户可以获取模板的详细属性。

请求链接:/template/getInfo

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
template_idstring模板唯一标识ID

返回值: 

{
    code:0,       /* 其他错误参考错误列表 */
    msg: "succeed",
    data: {
              "template_name": "sample",
              "template_color_name": "BW",
              "template_screen_type_name": "2.6",
              "template_json":  "...",
              "template_color": 1,     /* 暂不支持*/
              "template_screen": 1,  /* 暂不支持*/
             
   }
}

错误码:

错误码说明
5000数据库错误
5005文件错误
5343非法模板
5041非法对接软件店铺

返回字段描述:color

color取值说明
1黑白
2黑白红

返回字段描述:screen

screen取值说明
12.13 寸
22.6 寸
34.2 寸

7.3.5 删除模板

接口描述:通过本接口调用,用户可以删除指定模板。

请求链接:/template/delete

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
template_id_listarray模板唯一标识ID列表

返回值: 

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

错误码:

错误码说明
5000数据库错误
5041非法对接软件店铺

7.3.6 上传商户模板

接口描述:通过本接口调用,用户可以通过上传json格式的模板来创建商户级别新模板。模板json文件可以在数字店铺中下载,也可以在独立提供的模板设计网页中下载。

请求链接:/template/company/create

接口参数

参数名称是否必须类型说明
sunmi_company_nostring商米数字店铺平台中商户的唯一编号
template_namestring模板名称
template_colorint模板支持的颜色类型 (1-黑白,2-黑白红)
template_screenint模板支持的屏幕类型 (1 – 2.13寸,2 – 2.6寸,3 – 4.2寸)
template_jsonstringjson格式的模板

返回值: 

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

错误码:

错误码说明
5000数据库错误
5005文件错误
5343非法模板
5346模板名称已存在
5xxx非法对接软件商户

7.3.7 更新商户模板

接口描述:通过本接口调用,用户可以更新指定商户模板。

请求链接:/template/company/update

接口参数

参数名称是否必须类型说明
sunmi_company_nostring商米数字店铺平台中商户的唯一编号
template_idstring
模板唯一标识ID
template_namestring模板名称
template_jsonstringjson格式的模板

返回值: 

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

错误码:

错误码说明
5000数据库错误
5005文件错误
5343非法模板
5346模板名称已存在
5xxx非法对接软件商户

7.3.8 获取商户模板列表

接口描述:通过本接口调用,用户可以获取商户模板列表。

请求链接:/template/company/getList

接口参数

参数名称是否必须类型说明
sunmi_company_nostring商米数字店铺平台中商户的唯一编号
page_num否 (默认1)int当前页码
page_size否 (默认10)int当前页条目数量

返回值: 

{
    code:0,       /* 其他错误参考错误列表 */
    msg: "succeed",
    data: {
  ”total_count“: 15,
       "template_list":[{
              "template_id": "100",
              "template_name": "sample",
              "template_color": 1,  /* 暂不支持*/
              "template_screen": 1},
              ... ...
   ]}
}

错误码:

错误码说明
5000数据库错误
5020非法参数
5xxx非法对接软件商户

返回字段描述:color

color取值说明
1黑白
2黑白红

返回字段描述:screen

screen取值说明
12.13 寸
22.6 寸
34.2 寸

订单库接口

1 背景介绍

商米数字店铺(SUNMI Store)是商米提供的围绕商户店铺中物联网设备基础上的店铺管理系统。

商米数字店铺作为一个开放平台,支持与第三方SaaS厂商进行各种数据的对接,包括商品信息对接,交易信息对接,会员体系对接等。

基于商米提供的多种物联网设备,可以帮助商户提高数字化程度,基于这些数字化信息,比如人流分析和统计信息,再加上SaaS导入的订单信息,就可以做多维度的分析和报表。

本文描述的是与第三方SaaS厂商进行订单信息对接,确保商米数字店铺的商户可以从SaaS尽可能实时的获取订单信息,用于后续处理和BI分析。

2 接口规范

2.1 协议说明

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

注:消息体大小不得超过1M,超过1M的请求,直接拒绝!

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 开放API接口

3.1 订单库对接

3.1.1 订单字段属性

以下属性均为商米店铺订单属性,仅用来做解释说明用。请SaaS厂商提供自己的订单属性清单,并与商米拉取SaaS系统中的订单属性保持一致

下列属性为商米数字店铺订单为例子的基本属性,对于具体品类的订单,还会有其他字段。

订单字段(order)

参数分组商米数字平台订单参数类型说明必填唯一SaaS合作方订单参数参数说明
订单基础信息order_idstring订单号对接时唯一订单标识,SaaS订单号
order_typeint交易类型标识正常销售,退货等类型 (1-正常销售、 2-退货, 3-换货, 4-挂单,5-报表 , 6 -付款失败,7-取消,8 -其他 )
order_timeint交易时间交易时间戳, 用于收银审计等业务
order_start_timeint交易开始时间如果记录交易开始时间, 可用于收银审计等业务
purchase_amountdouble(精确到小数点后两位)合计应收金额
discount_amountdouble(精确到小数点后两位)合计折扣金额
received_amountdouble(精确到小数点后两位)实收金额
payment_typeint付款方式1-现金、2-支付宝、3-微信、4-QQ钱包、5-京东钱包、6-银行卡刷卡、7-银联二维码、8-其他
customer_countint购买人数/就餐人数若无默认给1
收银设备信息device_snstring交易产生的设备序列号
software_namestring交易SaaS软件名称
software_specstring交易SaaS软件规格
hardware_namestring交易SaaS硬件名称
hardware_specstring交易SaaS硬件规格
cashier_idstring收银员
cashier_deskstring收银台
shop_assistant_idstring营业员
订单来源平台信息order_sourceint订单来源1-线下、 2-线上 (默认为线下订单)
会员信息member_idstring会员卡号
ali_idstring支付宝AliId


wechat_open_idstring微信OpenId
member_pointsdouble会员积分


卡券信息coupon_idstring卡券号
coupon_source int卡券来源1-商家自建,2-支付宝, 3-微信, 4-其他
小票信息receipt_idstring小票号
sunmi_receipt_idstring商米小票唯一识别号
商品信息product_liststring(内容为array[product])商品列表

具体字段见下表

商品字段(product)

商米数字平台订单商品参数类型说明必填唯一SaaS合作方商品参数参数说明
idstring商品编号
namestring商品名称 
seq_numstring商品店铺内部编码


bar_codestring商品国际条码
specstring商品规格
unitstring商品计量单位
quantitydouble(精确到小数点后三位)销售数量
stock_quantitydouble(精确到小数点后三位)库存数量
category_idstring品类编号 
category_namestring品类名称
original_pricedouble(精确到小数点后两位)商品标价(单价标价)
present_pricedouble(精确到小数点后两位)商品实际销售价格
promote_amountdouble(精确到小数点后两位)商品销售优惠金额
subtotal_amountdouble(精确到小数点后两位)商品小计总额(实收)

商品字段(product 附加业态字段)

商米数字平台订单商品附加参数类型说明必填唯一SaaS合作方商品参数参数说明
colorstring颜色代码
sizestring尺寸代码

3.1.2 创建订单推送接口 

接口说明:本接口用于SaaS厂商对订单进行创建,推送通知到我方,商米数字店铺会根据SaaS厂商推送的订单,保存对应订单,商米数字店铺前端设备提供对应的订单显示及查看。

接口链接:/order/create

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号 100939070408
shop_idstring店铺在SaaS体系下的唯一标识(在v2.0及以后版本可使用sunmi_shop_no替代,作为门店唯一标识即可,如果没有shumi_shop_no,可以使用company_id加shop_id作为门店唯一标识) 10001
order_liststring(内容为array)创建订单对象列表 [
{
“order_id”: “d12324b545a5678”,
“order_type”: 1,
“order_time”: 1583246199,
“order_start_time”: 1568875091,
“purchase_amount”: 100,
“discount_amount”: 20,
“received_amount”: 80,
“payment_type”: 1,
“customer_count”: 2,
“order_status”: 1,
“device_sn”: “SS123LTY6917”,
“software_name”: “SUNMI”,
“software_spec”: “app”,
“hardware_name”: “hw”,
“hardware_spec”: “hws”,
“order_source”: 1,
“member_id”: 123456,
“product_list”: [
{
“name”: “p_name”,
“seq_num”: “abc”,
“id”: 5,
“price”: 10,
“quantity”: 3,
“color”: “red”,
“size”: “larse”
}
],
“cashier_id”: “cachier123”,
“cashier_desk”: 123,
“shop_assistant_id”: 666,
“ali_id”: 13111115555,
“wechat_open_id”: “wechat123”,
“member_points”: 156,
“coupon_id”: 123,
“coupon_source”: 1,
“receipt_id”: “rcn12333333”,
“sunmi_receipt_id”: “sunmi666”
}
]

请求示例: 

  'method': 'POST',
  'url': 'https://store.uat.sunmi.com/openapi/order/create',
  'headers': {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  formData: {
    'shop_id': '10001',
    'app_id': 'I4VI99A0JDS21',
    'timestamp': '1581662687',
    'random': '5dsf6698',
    'sign': 'E3CC30458CBDC74E7D959E24B56732F6',
    'order_list': '[{
      "order_id": "d12324b545a5678",
      "order_type": 1,
      "order_time": 1583246199,
      "order_start_time": 1568875091,
      "purchase_amount": 100,
      "discount_amount": 20,
      "received_amount": 80,
      "payment_type": 1,
      "customer_count": 2,
      "order_status": 1,
      "device_sn": "SS123LTY6917",
      "software_name": "SUNMI",
      "software_spec": "app",
      "hardware_name": "hw",
      "hardware_spec": "hws",
      "order_source": 1,
      "member_id": 123456,
      "product_list": [{
          "name": "p_name",
          "seq_num": "abc",
          "id": 5,
          "price": 10,
          "quantity": 3,
          "color": "red",
          "size": "larse"
       }],
      "cashier_id": "cachier123",
      "cashier_desk": 123,
      "shop_assistant_id": 666,
      "ali_id": 13111115555,
      "wechat_open_id": "wechat123",
      "member_points": 156,
      "coupon_id": 123,
      "coupon_source": 1,
      "receipt_id": "rcn12333333",
      "sunmi_receipt_id": "sunmi666"
    }],
 }

返回值: 

{
    "code": 0,
    "msg": "succeed",
    "data": {
        "exist_list": ["12325456778"],
        "invalid_list": []
    }
}

错误列表:

错误代码错误原因
5041非法SaaS厂商
5047非法订单

4 返回值检查

4.1 返回错误分类

作为HTTP消息返回,如果消息签名认证失败,HTTP消息会返回 401等作为提示。 如果消息签名认证通过,则进入业务层处理,此次HTTP请求返回200 OK。

具体业务层面的操作返回JSON值在消息体中。常见的消息返回类型为:

{
    "code": 0,
    "msg": "succeed",
    "data": {}
}

4.2 返回错误代码列表

参考 《错误代码列表》文档。

5 订单库对接示例

商品库

1 背景介绍

商米数字店铺(SUNMI Store)是商米提供的基于店铺物联网设备的店铺管理系统。

商米数字店铺作为一个开放平台,支持与第三方软件进行各种对接,包括设备层面智能摄像机、电子价签的对接,数据层面的商品信息、交易信息对接等。

电子价签等物联网设备需要对接店铺的商品,价格以及策略等信息,所以在数字店铺系统内保存了一个基本的商品库。

对于商品数据来源,用户既可以选择直接在数字店铺的页面进行编辑,也可以选择与第三方软件进行数据打通。

下文列出的就是实现商品信息在第三方软件与商米数字店铺之间实时同步的相关接口。

2 接口规范

2.1 协议说明

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

注:消息体大小不得超过1M,超过1M的请求,直接拒绝!

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 签名信息,详见上文签名规则

3 商米提供接口

3.1. 商品字段属性

下面的表格描述了数字店铺开放平台中商品字段的属性,适用于后面所有的新增、修改等接口。

商品字段中预留了一些自定义字段,对接时可以将第三方软件中的特殊字段对应到这些字段上。


商米数字平台商品参数类型说明是否必须
1idstring数据库ID,唯一,可以与商品编号相同
2seq_numstring商品编号,唯一,可以和数据库ID相同
推荐填写,在网页创建和Excel导入中均会用到
3namestring商品名称
4pricedouble价格, 注意称重商品为斤价还是公斤价
5bar_codestring条码
6aliasstring别名
7unitstring单位
8specstring规格
9levelstring等级
10areastring产地
11brandstring品牌
12qr_codestring二维码链接
13statusstring商品状态
14descriptionstring商品描述
15promote_pricedouble促销价
16promote_price_descriptionstring促销价描述
17member_pricedouble会员价
18member_price_descriptionstring会员价描述
19extra_infojson扩展信息
20extra_price_infojson其它价格信息
21extra_custom_infojson自定义信息

extra_info:


商米数字平台商品参数类型说明是否必须
1pack_sizeint箱规
2stockfloat64库存
3safety_stockfloat64安全库存
4daily_mean_salesfloat64日均销售量
5today_sales_qtyfloat64当日销售量
6cumulated_sales_qtyfloat64累计销售量
7on_order_qtyfloat64在途订单量
8shelf_qtyfloat64陈列量
9shelf_codestring货架编号
10shelf_tierstring货架层
11shelf_columnstring货架列
12display_locationstring摆放位置
13supplier_codestring供应商编号
14supplier_namestring供应商名称
15manufacturerstring生产商名称
16manufacturer_addressstring生产商地址
17expiry_datedatetime过期日期
18storage_lifestring保质期限
19shelf_lifeint已上架时间
20ingredient_tablestring配料表
21fresh_item_codestring生鲜商品码
22supervised_bystring监制单位
23supervision_hotlinestring监督电话
24pricing_staffstring计价员
25category_level1_idstring一级分类编号
26category_level1_namestring一级分类名称
27category_level2_idstring二级分类编号
28category_level2_namestring二级分类名称
29category_level3_idstring三级分类编号
30category_level3_namestring三级分类名称
31category_level4_idstring四级分类编号
32category_level4_namestring四级分类名称
33category_level5_idstring五级分类编号
34category_level5_namestring五级分类名称

extra_price_info:


商米数字平台商品参数类型说明是否必须
1custom_price1float64自定义价格1

2custom_price1_descriptionstring自定义价格1描述
3custom_price2float64自定义价格2

4custom_price2_descriptionstring自定义价格2描述
5custom_price3float64自定义价格3
6custom_price3_descriptionstring自定义价格3描述
7promote_start_datetimestamp促销开始日期
8promote_end_datetimestamp促销结束日期
9member_promote_start_datetimestamp会员促销开始日期
10member_promote_end_datetimestamp会员促销结束日期
11member_pointfloat64会员积分
12promote_reasonstring促销原因
13promote_flagint促销标识

extra_custom_info:


商米数字平台商品参数类型说明是否必须
1custom_text1string自定义字段1
2custom_text2string自定义字段2
3custom_text3string自定义字段3
4custom_text4string自定义字段4
5custom_text5string自定义字段5
6custom_text6string自定义字段6
7custom_text7string自定义字段7
8custom_text8string自定义字段8
9custom_text9string自定义字段9
10custom_text10string自定义字段10
11custom_text11string自定义字段11
12custom_text12string自定义字段12
13custom_text13string自定义字段13
14custom_text14string自定义字段14
15custom_text15string自定义字段15
16custom_text16string自定义字段16
17custom_text17string自定义字段17
18custom_text18string自定义字段18
19custom_text19string自定义字段19
20custom_text20string自定义字段20
21custom_int1int自定义整数1
22custom_int2int自定义整数2
23custom_int3int自定义整数3
24custom_int4int自定义整数4
25custom_int5int自定义整数5
26custom_dec1float64自定义小数1
27custom_dec2float64自定义小数2
28custom_dec3float64自定义小数3
29custom_dec4float64自定义小数4
30custom_dec5float64自定义小数5
31othersstring其他

3.2 新建商品

接口说明:第三方对接的软件新建商品后,通过该接口推送通知到我方,商米数字店铺会根据推送的商品信息新建对应商品。

本接口只对应于新增商品接口,如果商品【数据库ID】已经存在,则会将存在的id添加入exist_list,如果商品信息中的必填字段(比如名称)未输入,则将id添加入invalid_list并返回.。

接口链接:/product/create

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)100939070408
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)10001
product_listarray新建商品对象列表[{“name”:”cola”,”id”:”1″,”bar_code”:”6958644000259″,”unit”:”bottle”,”price”:”3.5″,”member_price”:”3″,”spec”:”250ml”,”level”:””,”brand”:”coca”}]

product 参数类型参考前文中【商品字段属性】。

请求示例

'method': 'POST',
  'url': 'https://store.uat.sunmi.com/openapi/product/create',
  'headers': {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  formData: {
    'shop_id': '10001',
    'app_id': 'I4VI99A0JDS21',
    'timestamp': '1581658876',
    'random': '5dsf6698',
    'sign': 'DDCB590591531D9B85729EE13E9B9095',
    'product_list': '[
        {
	"name": "milk",
	"id": "1",
	"bar_code": "6958644000259",
	"unit": "bottle",
	"price": "4.5",
	"member_price": "3",
	"spec": "250ml",
	"level": "",
	"brand": "test"
    }] '
  }

返回值: 

{
    code:0
    msg: "succeed"
    data: {
        “exist_list”: ["100",
                "200"],
       "invalid_list:["400",
        ]}
}
}

错误列表:

错误代码错误原因
5000数据库错误
5041非法对接软件
5015非法商品

3.3 更新商品

接口说明:第三方对接的软件更新商品后,通过该接口推送通知到我方,商米数字店铺会根据推送的商品信息更新对应商品。如果该商品已经绑定到电子价签上,会触发电子价签的自动更新。

 更新接口只会更新商米数字店铺中已经存在的商品,通过数据库ID匹配到的商品,则会进行更新操作, 未匹配到则新增对应商品,这些新增商品的id可以在返回中”not_exist_list”中查看。

更新操作只会修改接收到的商品字段,不存在的字段则保持原有数据不做处理。

接口链接:/product/update

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)100939070408
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)10001
product_listarray更新商品对象列表[{“name”:”milk”,”id”:”1″,”bar_code”:”6958644000259″,”unit”:”bottle”,”price”:”4.5″,”member_price”:”3″,”spec”:”250ml”,”level”:””,”brand”:”test”}]

product 参数类型参考前文中【商品字段属性】。

请求示例

'method': 'POST',
  'url': 'https://store.uat.sunmi.com/openapi/product/create',
  'headers': {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  formData: {
    'shop_id': '10001',
    'app_id': 'I4VI99A0JDS21',
    'timestamp': '1581658876',
    'random': '5dsf6698',
    'sign': 'DDCB590591531D9B85729EE13E9B9095',
    'product_list': '[
        {
	"name": "milk",
	"id": "1",
	"bar_code": "6958644000259",
	"unit": "bottle",
	"price": "4.5",
	"member_price": "3",
	"spec": "250ml",
	"level": "",
	"brand": "test"
    }] '
  }

返回值: 

{
    "code": 0,
    "msg": "succeed",
    "data": {
        "exist_list": [
            "1"
        ],
        "invalid_list": []
    }
}

错误列表:

错误代码错误原因
5000数据库错误
5041非法对接软件
5015非法商品

3.4 删除商品

接口说明:第三方对接的软件删除商品后,可通过该接口推送通知到我方,商米数字店铺会根据推送的商品信息删除对应商品。

删除接口只会删除商米数字店铺中已经存在的商品,若根据商品数据库ID字段匹配不到,会将不存在的id添加入not_exist_list并返回。匹配到的商品,则会进行删除操作。

接口链接:/product/delete

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_nostring商米数字店铺平台中门店的唯一编号(v2.0之后为必填项)100939070408
shop_idstring第三方对接软件中门店的唯一编号(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)10001
product_key_listlist 唯一标识商品的属性字段列表 [1]

 请求示例

'method': 'POST',
'url': 'https://store.uat.sunmi.com/openapi/product/delete',
'headers': {
  'Content-Type': 'application/x-www-form-urlencoded'
},
formData: {
  'shop_id': '10001',
  'app_id': 'I4VI99A0JDS21',
  'timestamp': '1581659359',
  'random': '5dsf6698',
  'sign': '00E5E55999C3C5BCA85DA3844928A70B',
  'product_key_list': '[1]'
}

返回值: 

{
    "code": 0,
    "msg": "succeed",
    "data": {
        "not_exist_list": [
            "1"
        ]
    }
}

错误列表:

错误代码错误原因
5000数据库错误
5041非法对接软件
5015非法商品

4 返回值检查

4.1 返回错误分类

作为HTTP消息返回,如果消息签名认证失败,HTTP消息会返回 401等作为提示。 如果消息签名认证通过,则进入业务层处理,此次HTTP请求返回200 OK。

具体业务层面的操作返回JSON值在消息体中。常见的消息返回类型为:

{
    code:0
    msg: "succeed"
    data: {}
}

错误列表:

错误代码错误原因
5000数据库错误
5041非法对接软件
5015非法商品

4.2 返回错误代码

参考《错误代码列表》文档

5 对接软件提供接口

在商品对接的过程中,如果有需要在数字店铺从第三方对接软件中拉取该门店的现有商品信息,需要对接软件提供相应的接口。

一般来说不推荐这种做法,所有数据尽可能直接从对接软件中推送到数字店铺。

5.1 获取全量商品 

接口说明:本接口是商米数字开放平台发起到对接软件的请求,用于商米数字平台从对接软件拉取该门店的所有商品。

对于不同的对接软件,返回的内容可能不同,具体模式需要在对接时确认确认,这里给出接口示例。

接口链接:https://example.SaaS.com/api/getProductList(示例接口,仅供参考)

接口参数

参数名称是否必须类型说明
shop_idstring对接软件的店铺标识
page_numint本次请求的页码
page_sizeint本次请求页的内容数量

返回值

{
    code:0
    msg: "succeed"
    data: {}
}

6 商品库对接示例

本部分提供了商品库对接的接口示例。仅供参考。

以下接口需在成功进行商户店铺对接后方能正常使用。店铺对接相关请参考《商户店铺》文档

本部分示例使用参数如下(接口中与签名校验相关的timestamp、random、sign等参数已省略):

app_idsecret_keyshop_id
APPID6917LTYtokenlty1237948

如下图,商户店铺对接后,商米数字店铺的商品库页面无任何商品。

此图像的alt属性为空;文件名为image2019-11-3_14-17-30.png

6.1 新建商品

6.1.1 新建商品成功

商户店铺对接成功后,调用product/create接口来增加商品。

请求参数:

app_idAPPID6917LTY
shop_id7948
product_list[{“name”:”\u53ef\u53e3\u53ef\u4e50\/\u704c\u88c5″,”id”:”1″,”seq_num”:”cola58476″,”bar_code”:”6958644000259″,”unit”:”\u7f50″,”price”:”3.2″,”member_price”:”3″,”spec”:”250ml”,”level”:””,”brand”:”\u53ef\u4e50″}]

返回结果:

{
    "code": 0,
    "msg": "succeed",
    "data": {
        "exist_list": [],
        "invalid_list": []
    }
}

刷新商米数字店铺的商品库页面,可以看到商品库中新增了一条商品

此图像的alt属性为空;文件名为image2019-11-3_14-29-23.png

点击详情查看详细信息:

此图像的alt属性为空;文件名为image2019-11-3_14-29-58.png

6.1.2 新建商品失败-商品已存在

将6.1.1中的请求再次发送,则接口会返回该商品已存在,并给出已存在的商品id。

请求参数:

app_idAPPID6917LTY
shop_id7948
product_list[{“name”:”\u53ef\u53e3\u53ef\u4e50\/\u704c\u88c5″,”id”:”1″,”seq_num”:”cola58476″,”bar_code”:”6958644000259″,”unit”:”\u7f50″,”price”:”3.2″,”member_price”:”3″,”spec”:”250ml”,”level”:””,”brand”:”\u53ef\u4e50″}]

返回结果:

{
    "code": 0,
    "msg": "succeed",
    "data": {
        "exist_list": [
            "1"
        ],
        "invalid_list": []
    }
}

6.1.3 新建商品失败-商品列表不是合法JSON字符串

商品列表中插入字符,使得参数不是合法json字符串

请求参数:

app_idAPPID6917LTY
shop_id7948
product_list[{“name”:”\u53ef\u53e3\u53ef\u4e50\/\u704c\u88c5″,,,”id”:”1″,”seq_num”:”cola58476″,”bar_code”:”6958644000259″,”unit”:”\u7f50″,”price”:”3.2″,”member_price”:”3″,”spec”:”250ml”,”level”:””,”brand”:”\u53ef\u4e50″}]

返回结果:

{
    "code": 1,
    "msg": "product_list: JSON.parse error"
}

6.1.4 新建商品失败-未提供商品必要字段

在商品列表中,不提供商品必填字段“id”。

请求参数:

app_idAPPID6917LTY
shop_id7948
product_list[{“name”:”\u53ef\u53e3\u53ef\u4e50\/\u704c\u88c5″,“id”:”1“,”seq_num”:”cola58476″,”bar_code”:”6958644000259″,”unit”:”\u7f50″,”price”:”3.2″,”member_price”:”3″,”spec”:”250ml”,”level”:””,”brand”:”\u53ef\u4e50″}]

返回结果:

{
    "code": 1,
    "msg": "invalid saas product info"
}

6.2 更新商品

6.2.1 更新商品成功-更新已经存在的商品

商户店铺对接成功后,调用product/update接口来更新商品信息(此处以价格为例)。

请求参数:

app_idAPPID6917LTY
shop_id7948
product_list[{“id”:1, “price”:”3.5″}]

返回结果:

{
    "code": 0,
    "msg": "succeed",
    "data": {
        "not_exist_list": [],
        "invalid_list": []
    }
}

回到商米数字店铺商品库界面,可以发现商品价格已由3.2元变为3.5元,“最后修改时间”已经更新为修改商品价格的时间。

更新前

此图像的alt属性为空;文件名为image2019-11-3_14-29-23.png
此图像的alt属性为空;文件名为image2019-11-3_14-29-58.png

更新后

此图像的alt属性为空;文件名为image2019-11-3_14-54-7.png
此图像的alt属性为空;文件名为image2019-11-3_14-55-57.png

6.2.2 更新商品成功-新建不存在的商品

商户店铺对接成功后,调用product/update接口来新建一个不存在商品信息。

请求参数:

app_idAPPID6917LTY
shop_id7948
product_list[{“id”:2, “name”:”Non-Exist Product”,”seq_num”:”nonexist1″,”price”:”58.2″}]

返回结果:

{
    "code": 0,
    "msg": "succeed",
    "data": {
        "not_exist_list": [
            "2"
        ],
        "invalid_list": []
    }
}

返回值中提示了商品id为“2”的商品原本不存在于商品库中,已采取新建操作。回到商品库,可以看到该商品已经被新建。

更新前

此图像的alt属性为空;文件名为image2019-11-3_14-54-7.png

更新后

此图像的alt属性为空;文件名为image2019-11-3_15-1-15.png

6.2.3 更新商品失败-商品列表不是合法JSON字符串

商品列表中插入字符,使得参数不是合法json字符串

请求参数:

app_idAPPID6917LTY
shop_id7948
product_list[{“name”:”\u53ef\u53e3\u53ef\u4e50\/\u704c\u88c5″,,,”id”:”1″,”seq_num”:”cola58476″,”bar_code”:”6958644000259″,”unit”:”\u7f50″,”price”:”3.2″,”member_price”:”3″,”spec”:”250ml”,”level”:””,”brand”:”\u53ef\u4e50″}]

返回结果:

{
    "code": 1,
    "msg": "product_list: JSON.parse error"
}

6.2.4 更新商品失败-未提供商品必要字段

在商品列表中,不提供商品必填字段“id”。

请求参数:

app_idAPPID6917LTY
shop_id7948
product_list[{“name”:”\u53ef\u53e3\u53ef\u4e50\/\u704c\u88c5″,“id”:”1″,”seq_num”:”cola58476″,”bar_code”:”6958644000259″,”unit”:”\u7f50″,”price”:”3.2″,”member_price”:”3″,”spec”:”250ml”,”level”:””,”brand”:”\u53ef\u4e50″}]

返回结果:

{
    "code": 1,
    "msg": "invalid saas product info"
}

6.3 删除商品

6.3.1 删除商品成功

商户店铺对接成功后,调用product/delete接口来删除商品信息。

请求参数:

app_idAPPID6917LTY
shop_id7948
product_key_list[2]

返回结果:

{
    "code": 0,
    "msg": "succeed",
    "data": {
        "not_exist_list": []
    }
}

回到商品库,可以看到id为2的商品已经被删除。

删除前

此图像的alt属性为空;文件名为image2019-11-3_15-1-15.png

删除后

此图像的alt属性为空;文件名为image2019-11-3_15-7-35.png

6.3.2 删除商品失败-商品不存在

商户店铺对接成功后,调用product/delete接口来删除一个不存在的商品信息。

请求参数:

app_idAPPID6917LTY
shop_id7948
product_key_list[3]

返回结果:

{
     "code": 0,
     "msg": "succeed",
     "data": {
         "not_exist_list": [
             "3"
         ]
     }
 }