人流统计接口

  1. 设置进门拌线坐标
  2. 获取进门拌线坐标
  3. 获取指定时间内的到访人流统计信息
  4. 获取指定时间内的路过人流统计信息
  5. 获取指定时间内的离开人流统计信息
  6. 获取指定时间内的到访列表
  7. 获取指定人脸的到访记录

目前仅商米AI识客摄像机支持该模块。

1. 设置进门拌线坐标

描述

进门拌线是IPC设备用来判断某个人是否已经进来的基础,因此对于人脸识别和客流统计,需要通过此接口来设置这个拌线的坐标。

接口

public void setDoorLine(String deviceId, int resolution, int start_x, int start_y, int end_x, int end_y, RpcCallback‹RpcResponse› callback);

参数说明

参数名称 描述示例
deviceIdIPC序列号C201D98T00094
resolution只能取值0和1,0表示1080P的分辨率,1表示720P的分辨率,目前仅支持1080P分辨率0
start_x拌线的左边端点X坐标,1080p范围0<=x<=1920,720p范围0<=x<=1280500
start_y拌线的左边端点Y坐标,1080p范围0<=y<=1080,720p范围0<=y<=720 500
end_x拌线的右边端点X坐标,1080p范围0<=x<=1920,720p范围0<=x<=1280 500
end_y拌线的右边端点Y坐标,1080p范围0<=y<=1080,720p范围0<=y<=720 500
callback调用结果

响应参数

字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、277,278,见错误码的描述

2. 获取进门拌线坐标

描述

获取进门拌线的坐标信息。

接口

public void getDoorLine(String deviceId, RpcCallback‹RpcResponse‹DoorLineConfig›› callback);

参数说明

参数名称描述示例
deviceIdIPC序列号C201D98T00094
callback调用结果

响应参数

字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、260、261、262、263、264、276、277、279,见错误码的描述
dataDoorLineConfig返回码成功才会有此字段,详见RpcResponse.DoorLineConfig

3. 获取指定时间内的到访人流统计信息

描述

获取指定某一时间内的人流统计信息,如果设备不存在这个时间内的信息则会返回错误。

接口

public void getComeInPeopleStat(String deviceId, long start_time, long end_time, int period, RpcCallback‹RpcResponse‹PeopleStatCollection›› callback);

参数说明

参数名称描述示例
deviceIdIPC序列号C201D98T00094
start_timeUnix格式时间戳,精确至秒,开始时间,时间是整小时或者整天或者半小时的时间戳,譬如2019-07-01,2019-07-01 10:00,或者
2019-07-01 10:30这样的时间对应的时间戳
1578969264
end_timeUnix格式时间戳,精确至秒,结束时间。时间要求同上 1579055640
period人流统计信息的粒度,分为30min、hour和day三种统计粒度,取值分别为1,2和32
callback调用结果

响应参数

字段名称 类型 描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
dataPeopleStatCollection返回码成功才会有此字段,详见RpcResponse.PeopleStatCollection

4. 获取指定时间内的路过人流统计信息

描述

获取指定某一时间内的经过人流统计信息,如果设备不存在这个时间内的信息则会返回错误。

接口

public void getPassByPeopleStat(String deviceId, long start_time, long end_time, int period, RpcCallback‹RpcResponse‹PeopleStatCollection›› callback);

参数说明

参数名称描述示例
deviceIdIPC序列号C201D98T00094
start_timeUnix格式时间戳,精确至秒,开始时间,时间是整小时或者整天或者半小时的时间戳,譬如2019-07-01,2019-07-01 10:00,或者
2019-07-01 10:30这样的时间对应的时间戳
1578969264
end_timeUnix格式时间戳,精确至秒,结束时间。时间要求同上 1579055640
period人流统计信息的粒度,分为30min、hour和day三种统计粒度,取值分别为1,2和32
callback调用结果

响应参数

字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
dataPeopleStatCollection返回码成功才会有此字段,详见RpcResponse.PeopleStatCollection

5. 获取指定时间内的离开人流统计信息

描述

获取指定某一时间内的人流统计信息,如果设备不存在这个时间内的信息则会返回错误。

接口

public void getGoOutPeopleStat(String deviceId, long start_time, long end_time, int period, RpcCallback‹RpcResponse‹PeopleStatCollection›› callback);

参数说明

参数名称描述示例
deviceIdIPC序列号C201D98T00094
start_timeUnix格式时间戳,精确至秒,开始时间,时间是整小时或者整天或者半小时的时间戳,譬如2019-07-01,2019-07-01 10:00,或者
2019-07-01 10:30这样的时间对应的时间戳
1578969264
end_timeUnix格式时间戳,精确至秒,结束时间。时间要求同上 1579055640
period人流统计信息的粒度,分为30min、hour和day三种统计粒度,取值分别为1,2和32
callback调用结果

响应参数

字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
dataPeopleStatCollection返回码成功才会有此字段,详见RpcResponse.PeopleStatCollection

6. 获取指定时间内的到访列表

描述

获取指定时间内,来过次数排名前N的人脸ID列表信息。

接口

public void getVisitorList(String deviceId, Map‹String, String› options, RpcCallback‹RpcResponse‹VisitorCollection›› callback);

参数说明

参数名称描述示例
deviceIdIPC序列号C201D98T00094
options限定获取来访记录的参数,option说明中的所有参数都需要转换成String类型传入。见下表options说明
callback调用结果

options说明

参数名称 类型 描述是否必须 示例
start_timelongUnix时间戳Y1578969264
end_timelongUnix时间戳Y1579055640
orderint表示抵达次数排名前order的人脸信息Y50
group_namestring指定某个人脸分组,默认为所有人脸分组Nvip
genderint性别,1表示男性,2表示女性,默认不分性别N1
age_rangeint年龄段,1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁,
5表示29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100
N4
ageint年龄,与上面age_range是或的关系,不是与的关系。即查询age_range或
者age满足的人脸,只要有一个符合即可。
N4
item1string可以根据自定义属性来匹配,自定义属性1的匹配。如果需要使用自定义属
性查询,请确保指定的人脸分组添加过对应的自定义属性,否则查询失败(生
人与熟人分组不能添加自定义属性)
N value1
item2string自定义属性2的匹配N value2
item3string自定义属性3的匹配N value3
item4string自定义属性4的匹配N value4
item5string自定义属性5的匹配N value5
page_numint当前页码,默认值和最小值为1N1
page_sizeint当前页面条目数,默认为10,范围为[1, 100]N10

响应参数

参数名称 类型 描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
dataVisitorCollection返回码成功才会有此字段,详见RpcResponse.VisitorCollection

7. 获取指定人脸的到访记录

描述

查询指定某个人在指定时间内的到访记录。

接口

public void getFaceVisitDetail(String deviceId, long start_time, long end_time, String faceId, RpcCallback‹RpcResponse‹VisitDetails›› callback);

参数说明

参数名称描述示例
deviceIdIPC序列号C201D98T00094
start_timeUnix时间戳,开始时间1578969264
end_timeUnix时间戳,结束时间1579055640
faceId人脸ID 000001
callback调用结果

响应参数

字段名称类型描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
dataVisitDetails返回码成功才会有此字段,详见RpcResponse.VisitDetails

  1. 设置进门拌线坐标
  2. 获取进门拌线坐标
  3. 获取指定时间内的到访人流统计信息
  4. 获取指定时间内的路过人流统计信息
  5. 获取指定时间内的离开人流统计信息
  6. 获取指定时间内的到访列表
  7. 获取指定人脸的到访记录

At present, this module is only available to SUNMI FS.

1. 设置进门拌线坐标

描述

进门拌线是IPC设备用来判断某个人是否已经进来的基础,因此对于人脸识别和客流统计,需要通过此接口来设置这个拌线的坐标。

接口

public void setDoorLine(String deviceId, int resolution, int start_x, int start_y, int end_x, int end_y, RpcCallback‹RpcResponse› callback);

参数说明

参数名称 描述示例
deviceIdIPC序列号C201D98T00094
resolution只能取值0和1,0表示1080P的分辨率,1表示720P的分辨率,目前仅支持1080P分辨率0
start_x拌线的左边端点X坐标,1080p范围0<=x<=1920,720p范围0<=x<=1280500
start_y拌线的左边端点Y坐标,1080p范围0<=y<=1080,720p范围0<=y<=720 500
end_x拌线的右边端点X坐标,1080p范围0<=x<=1920,720p范围0<=x<=1280 500
end_y拌线的右边端点Y坐标,1080p范围0<=y<=1080,720p范围0<=y<=720 500
callback调用结果

响应参数

字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、277,278,见错误码的描述

2. 获取进门拌线坐标

描述

获取进门拌线的坐标信息。

接口

public void getDoorLine(String deviceId, RpcCallback‹RpcResponse‹DoorLineConfig›› callback);

参数说明

参数名称描述示例
deviceIdIPC序列号C201D98T00094
callback调用结果

响应参数

字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、260、261、262、263、264、276、277、279,见错误码的描述
dataDoorLineConfig返回码成功才会有此字段,详见RpcResponse.DoorLineConfig

3. 获取指定时间内的到访人流统计信息

描述

获取指定某一时间内的人流统计信息,如果设备不存在这个时间内的信息则会返回错误。

接口

public void getComeInPeopleStat(String deviceId, long start_time, long end_time, int period, RpcCallback‹RpcResponse‹PeopleStatCollection›› callback);

参数说明

参数名称描述示例
deviceIdIPC序列号C201D98T00094
start_timeUnix格式时间戳,精确至秒,开始时间,时间是整小时或者整天或者半小时的时间戳,譬如2019-07-01,2019-07-01 10:00,或者
2019-07-01 10:30这样的时间对应的时间戳
1578969264
end_timeUnix格式时间戳,精确至秒,结束时间。时间要求同上 1579055640
period人流统计信息的粒度,分为30min、hour和day三种统计粒度,取值分别为1,2和32
callback调用结果

响应参数

字段名称 类型 描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
dataPeopleStatCollection返回码成功才会有此字段,详见RpcResponse.PeopleStatCollection

4. 获取指定时间内的路过人流统计信息

描述

获取指定某一时间内的经过人流统计信息,如果设备不存在这个时间内的信息则会返回错误。

接口

public void getPassByPeopleStat(String deviceId, long start_time, long end_time, int period, RpcCallback‹RpcResponse‹PeopleStatCollection›› callback);

参数说明

参数名称描述示例
deviceIdIPC序列号C201D98T00094
start_timeUnix格式时间戳,精确至秒,开始时间,时间是整小时或者整天或者半小时的时间戳,譬如2019-07-01,2019-07-01 10:00,或者
2019-07-01 10:30这样的时间对应的时间戳
1578969264
end_timeUnix格式时间戳,精确至秒,结束时间。时间要求同上 1579055640
period人流统计信息的粒度,分为30min、hour和day三种统计粒度,取值分别为1,2和32
callback调用结果

响应参数

字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
dataPeopleStatCollection返回码成功才会有此字段,详见RpcResponse.PeopleStatCollection

5. 获取指定时间内的离开人流统计信息

描述

获取指定某一时间内的人流统计信息,如果设备不存在这个时间内的信息则会返回错误。

接口

public void getGoOutPeopleStat(String deviceId, long start_time, long end_time, int period, RpcCallback‹RpcResponse‹PeopleStatCollection›› callback);

参数说明

参数名称描述示例
deviceIdIPC序列号C201D98T00094
start_timeUnix格式时间戳,精确至秒,开始时间,时间是整小时或者整天或者半小时的时间戳,譬如2019-07-01,2019-07-01 10:00,或者
2019-07-01 10:30这样的时间对应的时间戳
1578969264
end_timeUnix格式时间戳,精确至秒,结束时间。时间要求同上 1579055640
period人流统计信息的粒度,分为30min、hour和day三种统计粒度,取值分别为1,2和32
callback调用结果

响应参数

字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
dataPeopleStatCollection返回码成功才会有此字段,详见RpcResponse.PeopleStatCollection

6. 获取指定时间内的到访列表

描述

获取指定时间内,来过次数排名前N的人脸ID列表信息。

接口

public void getVisitorList(String deviceId, Map‹String, String› options, RpcCallback‹RpcResponse‹VisitorCollection›› callback);

参数说明

参数名称描述示例
deviceIdIPC序列号C201D98T00094
options限定获取来访记录的参数,option说明中的所有参数都需要转换成String类型传入。见下表options说明
callback调用结果

options说明

参数名称 类型 描述是否必须 示例
start_timelongUnix时间戳Y1578969264
end_timelongUnix时间戳Y1579055640
orderint表示抵达次数排名前order的人脸信息Y50
group_namestring指定某个人脸分组,默认为所有人脸分组Nvip
genderint性别,1表示男性,2表示女性,默认不分性别N1
age_rangeint年龄段,1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁,
5表示29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100
N4
ageint年龄,与上面age_range是或的关系,不是与的关系。即查询age_range或
者age满足的人脸,只要有一个符合即可。
N4
item1string可以根据自定义属性来匹配,自定义属性1的匹配。如果需要使用自定义属
性查询,请确保指定的人脸分组添加过对应的自定义属性,否则查询失败(生
人与熟人分组不能添加自定义属性)
N value1
item2string自定义属性2的匹配N value2
item3string自定义属性3的匹配N value3
item4string自定义属性4的匹配N value4
item5string自定义属性5的匹配N value5
page_numint当前页码,默认值和最小值为1N1
page_sizeint当前页面条目数,默认为10,范围为[1, 100]N10

响应参数

参数名称 类型 描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
dataVisitorCollection返回码成功才会有此字段,详见RpcResponse.VisitorCollection

7. 获取指定人脸的到访记录

描述

查询指定某个人在指定时间内的到访记录。

接口

public void getFaceVisitDetail(String deviceId, long start_time, long end_time, String faceId, RpcCallback‹RpcResponse‹VisitDetails›› callback);

参数说明

参数名称描述示例
deviceIdIPC序列号C201D98T00094
start_timeUnix时间戳,开始时间1578969264
end_timeUnix时间戳,结束时间1579055640
faceId人脸ID 000001
callback调用结果

响应参数

字段名称类型描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
dataVisitDetails返回码成功才会有此字段,详见RpcResponse.VisitDetails



用户接口

5.1 接口规范

5.1.1 协议说明

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

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

5.1.2 签名规则

参考《鉴权认证》文档。

5.1.3 公共参数

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

5.2 接口列表

接口名称接口
注册用户 /user/register

5.3 接口详情

5.3.1  注册用户

接口描述: 通过本接口调用,实现商米数字平台用户注册 。

请求链接:/user/register

接口版本:v1.0.0

接口参数

参数名称 是否必须 类型 说明 示例
usernamestring商米数字平台商户管理员账户,目前仅支持手机号码。13216886688
country_codeint注册区域:1-国内 2-国外。默认11

返回值: 

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

错误码:

错误码说明
204手机号码已经存在

门店接口

4.1 接口规范

4.1.1 协议说明

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

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

4.1.2 签名规则

参考《鉴权认证》文档。

4.1.3 公共参数

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

4.2 接口列表

接口名称接口
创建门店 /shop/create
更新门店信息 /shop/update
绑定授权商米门店/shop/bind
解绑商米门店授权 /shop/unbind
启用商米门店/shop/enable
禁用商米门店/shop/disable
获取对接软件创建门店列表/shop/getList
获取对接软件创建门店详情/shop/getInfo
获取对接软件门店绑定状态/shop/getBindInfo
获取商米店铺组织树/shop/getOrgTree

4.3 接口详情

4.3.1 绑定授权商米门店

接口描述: 通过本接口调用,用户可以将第三方对接软件上的某门店与商米数字店铺中的门店进行绑定,绑定之后第三方对接软件可以通过接口对相关门店的数据和设备进行操作

请求链接:/shop/bind

接口参数

参数名称是否必须类型说明
shop_idstring第三方对接软件中门店的唯一标识
shop_namestring第三方对接软件中门店的门店名称
sunmi_shop_nostring商米数字店铺的门店组织编号
sunmi_shop_keystring商米数字店铺的门店对接凭证

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/shop/bind",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "shop_id": "10096",
    "shop_name": "myShop",
    "sunmi_shop_no": "560279010307",
    "sunmi_shop_key": "MG4LJ5ERHUBDMF5XOOU8",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

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

错误列表:

错误编号错误原因
5000数据库错误
5032非法店铺
5041非法对接软件
5042对接软件中的门店已绑定
5043对接商米店铺密钥错误

4.3.2 解绑商米门店授权

接口描述:通过本接口调用,用户可以将SaaS上的某门店与商米数字店铺中的门店解除绑定。

请求链接:/shop/unbind

接口参数

参数名称是否必须类型说明
shop_idstring第三方对接软件中门店的标识,对接的软件提供
sunmi_shop_nostring商米数字店铺的门店组织编号

请求示例: 

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

返回值: 

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

错误列表:

错误编号错误原因
5032非法店铺
5041 非法对接软件
5000数据库错误

4.3.3 更新门店信息

接口描述

通过本接口调用,用户可以将第三方对接软件上的店铺信息同步到商米数字店铺。(联系人姓名和电话暂时不支持更改)

请求链接:/shop/update

接口参数

参数名称是否必须类型说明
shop_idstring第三方对接软件中门店的标识,对接的软件提供
sunmi_shop_nostring商米数字店铺的门店组织编号
shop_namestring第三方对接软件中门店的门店名称

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/shop/update",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "shop_id": "10096",
    "shop_name": "myShopNew",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

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

错误列表:

错误编号错误原因
5032非法店铺
5041 非法对接软件
5000数据库错误

4.3.4 创建门店

接口描述

通过本接口调用,第三方对接软件可以在商米数字店铺平台上在指定商户下创建门店。

请求链接:/shop/create

接口参数

参数名称是否必须类型说明
shop_idstring第三方对接软件中门店的标识,对接的软件提供
shop_namestring第三方对接软件中门店的名称
sunmi_company_nostring商米数字店铺平台的企业编号
sunmi_parent_shop_nostring商米数字店铺的上级组织编号 ,
如果是在当前企业下直接创建门店,不用赋值;如果是在指定组织下创建门店,需要填写其对应的上级组织编号
tagint组织类型,1-部门, 0-门店, 默认0

请求示例:  

  'method': 'POST',
  'url': 'http://store.dev.sunmi.com/openapi/shop/create',
  'headers': {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  formData: {
    'app_id': 'APPID6917LTY',
    'timestamp': '1583301592',
    'random': '5dsf6698',
    'sign': '4C0C0516EC44BE0022BE80CED28E2A45',
    'sunmi_company_no': '476934507308',
    'shop_id': '0001',
    'shop_name': 'shop_test'
  }

返回值: 

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

错误列表:

错误编号错误原因
5000数据库错误
5032非法店铺
5033非法sunmi company no
5041 非法对接软件
5042 对接软件的门店已绑定
5444非法的sunmi_parent_shop_no, 应该选择tag=1的门店

4.3.5 获取对接软件创建门店列表

接口描述:通过本接口调用,用户可以获取门店详情信息。

请求链接:/shop/getList

接口参数

参数名称是否必须类型说明示例
sunmi_company_nostring 商米数字店铺平台企业编号 476934507308
page_num否(默认1)int当前页码1
page_size否 (默认10)int当前页条目数量10

请求示例:  

  'method': 'POST',
  'url': 'https://store.uat.sunmi.com/openapi/shop/getList',
  'headers': {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  formData: {
    'app_id': 'APPID6917LTY',
    'timestamp': '1583302143',
    'random': '5dsf6698',
    'sign': '98F0E7619590B36E5BA34B94E815A97C',
    'sunmi_company_no': '476934507308'
  }

返回值: 

{
    "code": 0,     /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
        "total_count": 1,
        "shop_list": [
            {
                "saas_shop": {
                    "company_id": "1000",
                    "shop_id": "0001",
                    "company_name": "company_test",
                    "shop_name": "shop_test",
                    "contact_person": "xs",
                    "phone": "13813807411",
                    "mail": "",
                    "industry_id": 0,
                    "industry_name": "",
                    "province": "",
                    "city": "",
                    "district": "",
                    "address": "",
                    "format": 0,
                    "status": 1
                },
                "sunmi_shop": {
                    "sunmi_shop_no": "803743210109",
                    "shop_name": "shop_test",
                    "contact_person": "xs",
                    "phone": "13813807411",
                    "mail": "",
                    "industry_id": 0,
                    "industry_name": "",
                    "province": "",
                    "city": "",
                    "district": "",
                    "address": "",
                    "format": 0,
                    "status": 1
                }
            }
        ]
    }
}

错误列表:

错误编号错误原因
5041 非法对接软件
5000数据库错误
5033非法sunmi company no
5020非法参数

4.3.6 获取对接软件创建门店详情

接口描述:通过本接口调用,用户可以获取门店详情信息。

请求链接:/shop/getInfo

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_nostring商米数字店铺的门店组织编号 803743210109

请求示例:  

  'method': 'POST',
  'url': 'https://store.uat.sunmi.com/openapi/shop/getInfo',
  'headers': {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  formData: {
    'app_id': 'APPID6917LTY',
    'timestamp': '1583302480',
    'random': '5dsf6698',
    'sign': 'FF37DC3C9563263BB97528AF0E065C9D',
    'sunmi_shop_no': '803743210109 '
  }

返回值: 

{
    "data": {
        "saas_shop": {
            "company_id": "1000",
            "shop_id": "0001",
            "company_name": "company_test",
            "shop_name": "shop_test",
            "contact_person": "xs",
            "phone": "13813807411",
            "mail": "",
            "industry_id": 0,
            "industry_name": "",
            "province": "",
            "city": "",
            "district": "",
            "address": "",
            "format": 0,
            "status": 1
        },
        "sunmi_shop": {
            "sunmi_shop_no": "803743210109",
            "shop_name": "shop_test",
            "contact_person": "xs",
            "phone": "13813807411",
            "mail": "",
            "industry_id": 0,
            "industry_name": "",
            "province": "",
            "city": "",
            "district": "",
            "address": "",
            "format": 0,
            "status": 1
        }
    }
}

错误列表:

错误编号错误原因
5041非法对接软件
5000数据库错误
5032非法店铺

4.3.7 获取对接软件门店绑定状态

接口描述:通过本接口调用,用户可以查看saas店铺绑定商米店铺的状态。

请求链接:/shop/getBindInfo

接口参数

参数名称是否必须类型说明
shop_idstring第三方对接软件中门店的标识,对接的软件提供

请求示例:  

  'method': 'POST',
  'url': 'https://store.uat.sunmi.com/openapi/shop/getBindInfo',
  'headers': {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  formData: {
    'app_id': 'APPID6917LTY',
    'timestamp': '1583302789',
    'random': '5dsf6698',
    'sign': '8F889204B0600F25A4C121E6FF16D0D8',
    'shop_id': '0001'
  }

已经绑定商米店铺返回值: 

{
    "code": 0,   /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
        "status": 1,   /*已绑定状态*/
        "bound_info": {
            "company_id": "1000",
            "shop_id": "0001",
            "sunmi_company_no": "476934507308",
            "sunmi_shop_no": "803743210109"
        }
    }
}

未绑定商米店铺返回值: 

{
    "code": 0,     /* 其他错误参考错误列表 */
    "msg": "succeed"
    "data": {
        "status": 2,  /*未绑定状态*/
        "bound_info": {
            "company_id": "",
            "shop_id": "",
            "sunmi_company_no": "",
            "sunmi_shop_no": ""
        }
    }
}

返回字段描述:status

status说明
1已绑定商米店铺
2未绑定任何商米店铺

返回字段描述: bound_info

参数名称说明
shop_id对接软件中门店标识
company_id对接软件中商户标识
sunmi_shop_no商米数字店铺中对应门店标识

错误列表:

错误编号错误原因
5032非法店铺
5041非法对接软件
5000数据库错误

4.3.8 获取商米店铺组织树

接口描述:通过本接口调用,用户可以获取数字店铺店铺列表,以树形结构返回。

请求链接:/shop/getOrgTree

接口版本:v2.0

接口参数

参数名称是否必须类型说明
sunmi_company_nostring商米数字店铺的企业编号
sunmi_shop_nostring 商米数字店铺的门店组织编号

不填表示获取企业下所有组织,
填表示获取对应组织下的所有门店。

请求示例

'method': 'POST',
   'url': 'https://store.uat.sunmi.com/openapi/shop/getOrgTree',
   'headers': {
     'Content-Type': 'application/x-www-form-urlencoded'
   },
   formData: {
     'app_id': 'APPID6917LTY',
     'timestamp': '1583302789',
     'random': '5dsf6698',
     'sign': '8F889204B0600F25A4C121E6FF16D0D8',
     'sunmi_company_no': '560279010307',
     'sunmi_shop_no': '4529018395'
   }

返回值

{
    "data": {
        "shop_list": [
            {
                "shop_name": "网咖111",
                "sunmi_shop_no": "474358470706",
                "sunmi_parent_shop_no": "",
                "tag": 0,
                "status": 1,
                "children": [
                    {
                        "shop_name": "网咖222",
                        "sunmi_shop_no": "474358470708",
                        "sunmi_parent_shop_no": "474358470706",
                        "tag": 0,
                        "status": 1,
                        "children": []
                    }
                ]
            },
            {
                "shop_name": "sdfsdf",
                "sunmi_shop_no": "474358470707",
                "sunmi_parent_shop_no": "",
                "tag": 0,
                "status": 1,
                "children": []
            }
        ]
    },
    "code": 0,
    "msg": "succeed"
}

返回字段描述:

字段描述
tag组织类型 1-部门, 0-门店
status门店状态 1-启用, 2-停用

错误列表:

错误编号错误原因
5000数据库错误
5041非法对接软件
5033非法sunmi company no
5904商户未授权
5905内部调用远端接店铺中心口出错

4.3.9 启用店铺

接口描述:通过本接口调用,用户可以启用一个店铺,与禁用店铺相对。

请求链接:/shop/enable

接口版本:v2.0

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺的门店组织编号

请求示例

'method': 'POST',
   'url': 'https://store.uat.sunmi.com/openapi/shop/enable',
   'headers': {
     'Content-Type': 'application/x-www-form-urlencoded'
   },
   formData: {
     'app_id': 'APPID6917LTY',
     'timestamp': '1583302789',
     'random': '5dsf6698',
     'sign': '8F889204B0600F25A4C121E6FF16D0D8',
     'sunmi_shop_no': '4529018395'
   }

返回值

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

错误列表:

错误编号错误原因
5000数据库错误
5013非法SaaS厂商
5032非法店铺
5039查询结果超过1条
5041非法对接软件

4.3.10 禁用店铺

接口描述:通过本接口调用,用户可以禁用一个店铺,与启用店铺相对。

请求链接:/shop/disable

接口版本:v2.0

接口参数

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺的门店组织编号

请求示例

'method': 'POST',
   'url': 'https://store.uat.sunmi.com/openapi/shop/disable',
   'headers': {
     'Content-Type': 'application/x-www-form-urlencoded'
   },
   formData: {
     'app_id': 'APPID6917LTY',
     'timestamp': '1583302789',
     'random': '5dsf6698',
     'sign': '8F889204B0600F25A4C121E6FF16D0D8',
     'sunmi_shop_no': '4529018395'
   }

返回值

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

错误列表:

错误编号错误原因
5000数据库错误
5013非法SaaS厂商
5032非法店铺
5039查询结果超过1条
5041非法对接软件

企业接口

3.1 接口规范

3.1.1 协议说明

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

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

3.1.2 签名规则

参考《鉴权认证》文档。

3.1.3 公共参数

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

3.2 接口列表

接口名称接口
创建企业 /company/create
获取对接软件创建企业列表 /company/getList
获取对接软件创建企业详情 /company/getInfo
绑定授权商米企业/company/bind
解绑商米企业授权/company/unbind

3.3 接口详情

3.3.1 创建企业

接口描述:通过本接口调用,用户可以在商米数字店铺平台上创建一个企业,在之后的操作中,可以在该企业下创建多级门店进行管理。

请求链接:/company/create

接口参数

参数名称是否必须类型说明示例
usernamestring企业管理员账户,目前仅支持手机号码,该手机号需要已经在商米数字店铺进行过注册,或者通过用户管理接口/user/register生成初始用户(参考《用户管理》文档)18625776000
company_idstring第三方对接软件中企业的唯一标识COM39208
company_namestring企业名称company_test
contact_personstring联系人姓名xs
phonestring联系人电话 13813807411
mailstring联系邮箱lei.li@outlook.com

请求示例:  

  'method': 'POST',
  'url': 'https://store.uat.sunmi.com/openapi/company/create',
  'headers': {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  formData: {
    'app_id': 'APPID6917LTY',
    'timestamp': '1583299191',
    'random': '5dsf6698',
    'sign': 'A9D0BA14993A3222E7C7FB860D0C51A1',
    'company_name': 'company_test',
    'contact_person': 'xs',
    'phone': '13813807411',
    'username': '18625776000'
  }

返回值: 

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

错误列表:

错误编号错误原因
5010管理员用户不存在
5000数据库错误
5041非法SaaS厂商
5035企业名字已存在
5082rpc call fail

3.3.2  获取对接软件创建企业列表

接口描述:通过本接口调用,saas合作方可以查看指定用户通过开放接口在商米数字店铺平台上创建的企业列表。

请求链接:/company/getList

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
usernamestring企业管理员账户,目前仅支持手机号码,该手机号需要已经在商米数字店铺进行过注册,或者通过用户管理接口/user/create生成初试用户和密码(暂未开放)18625776000
page_num否(默认1)int当前页码1
page_size否 (默认10)int当前页条目数量10

请求示例:  

  'method': 'POST',
  'url': 'https://store.uat.sunmi.com/openapi/company/getList',
  'headers': {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  formData: {
    'app_id': 'APPID6917LTY',
    'timestamp': '1583299623',
    'random': '5dsf6698',
    'sign': 'EDA422052152701EC2579F97BF068D18',
    'username': '18625776000'
  }

返回值: 

{
    "code": 0,   /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
        "total_count": 3,
        "company_list": [
            {
                "sunmi_company_no": "476934507308",
                "username": "18625776000",
                "company_name": "company_test",
                "contact_person": "xs",
                "contact_tel": "13813807411",
                "contact_email": ""
            },
            {
                "sunmi_company_no": "476934506958",
                "username": "18625776000",
                "company_name": "xs_test_01",
                "contact_person": "xs",
                "contact_tel": "13813807411",
                "contact_email": ""
            },
            {
                "sunmi_company_no": "476934506957",
                "username": "18625776000",
                "company_name": "xs_test_02",
                "contact_person": "xs",
                "contact_tel": "13813807411",
                "contact_email": ""
            }
        ]
    }
}

错误列表:

错误编号错误原因
5000数据库错误
5041非法对接软件

3.3.3 获取对接软件创建企业详情

接口描述: 通过本接口调用,第三方对接软件可以查看已授权的企业详情。

请求链接:/company/getInfo

接口参数

参数名称是否必须类型说明示例
sunmi_company_nostring商米数字店铺的企业编号476934507308

请求示例:  

  'method': 'POST',
  'url': 'https://store.uat.sunmi.com/openapi/company/getInfo',
  'headers': {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  formData: {
    'app_id': 'APPID6917LTY',
    'timestamp': '1583300101',
    'random': '5dsf6698',
    'sign': 'F59845336C9492CE61BF63AA8F84B609',
    'sunmi_company_no': '476934507308'
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
        "sunmi_company_no": "476934507308",
        "username": "18625776000",
        "company_name": "company_test",
        "contact_person": "xs",
        "contact_tel": "13813807411",
        "contact_email": ""
    }
}

错误列表:

错误编号错误原因
5000数据库错误
5033非法sunmi company no
5041 非法对接软件

3.3.4 绑定授权商米企业

接口描述:通过本接口调用,用户可以将第三方对接软件上的企业与商米数字店铺中的企业进行绑定。

请求链接:/company/bind

接口版本:v2.0

接口参数

参数名称是否必须类型说明
company_idstring第三方对接软件中企业的唯一标识
sunmi_company_nostring商米数字店铺的企业编号
sunmi_company_keystring商米数字店铺的企业对接凭证
company_namestring企业名称

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/company/bind",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "company_id": "10000",
    "sunmi_company_no": "560279010307",
    "sunmi_company_key": "MG4LJ5ERHUBDMF5XOOU8",
    "company_name": "myCompany",
    "contact_person": "LiLei",
    "phone": "13166668888",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值

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

错误列表:

错误编号错误原因
5000数据库错误
5033非法sunmi company no
5041非法对接软件
5042对接软件中的企业已绑定
5043对接商米店铺密钥错误

3.3.5 解绑商米企业授权

接口描述:通过本接口调用,用户可以将SaaS上的企业与商米数字店铺中的企业解除绑定授权。

请求链接:/company/unbind

接口版本:v2.0

接口参数

参数名称是否必须类型说明
company_idstring第三方对接软件中企业的唯一标识
sunmi_company_nostring商米数字店铺的企业编号

请求示例

'method': 'POST',
   'url': 'https://store.uat.sunmi.com/openapi/company/unbind',
   'headers': {
     'Content-Type': 'application/x-www-form-urlencoded'
   },
   formData: {
     'app_id': 'APPID6917LTY',
     'timestamp': '1583302789',
     'random': '5dsf6698',
     'sign': '8F889204B0600F25A4C121E6FF16D0D8',
     'company_id': '1673',
     'sunmi_company_no': '560279010307'
   }

返回值

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

错误列表:

错误编号错误原因
5000数据库错误
5033非法sunmi company no
5041非法对接软件
5906未找到绑定记录

升级异常的固件恢复方法

1. 概述

本文指导用户通过线下手动升级的方式,恢复升级异常的固件。

2. 获取升级固件

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

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

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

3. 升级规则

  1. 不同机型之间系统固件不能互相升级,例如FS和SS之间不能升级,所以请务必根据自己的机型来获取对应的正式环境固件。
  2. 固件本身有自己的签名机制和升级校验方法,所以请务必从商米处获取固件,切勿随便从第三方获取固件。

4. 详细流程

4.1 拷贝固件到TF卡

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

4.2 升级固件

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

4.3 进行首配

  1. 重启后,长按设备上的Reset按键5秒以上进行恢复出厂设置。
  2. 恢复出厂重启后,使用正式环境的商米APP,按照《用户指南》手册中的软件配置指引完成摄像头的首次配置。
  3. 首配完成后,使用商米助手APP或登录正式环境的WEB服务网站https://store.sunmi.com 将设备固件更新到最新版本
  4. 记得删除原来SD卡中的up.bin文件,避免不必要的意外升级。

操作日志

1 基本描述

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 操作日志接口

4.1 操作日志业务范围

操作功能操作内容操作行为
巡店抓拍配置(商户级业务)新建
修改(包含开启/关闭)
删除
巡店模板配置(商户级业务)新建
修改 (包含 开启/关闭 )
删除
巡店巡店计划配置(商户级业务) 新建
删除
  • 备注:使用商户级别业务需要先进行商户级别的商户店铺体系对接

4.2 接口列表

接口名称接口描述
/log/operation/company/getList(待上线)获取操作日志列表

4.3 接口详情

4.3.1 获取商户级操作日志列表(待上线)

接口描述:通过本接口调用,用户可以获取指定商户或者店铺下,指定时间范围内的操作日志列表

请求链接:/log/operation/company/getList

接口版本:v2.0

接口参数:

参数名称是否必须类型说明示例
sunmi_company_nostring商米数字店铺平台的企业编号 560279010307
start_timestring 查询开始时间, Unix时间戳,秒级别 1578969264
end_timestring 查询结束时间, Unix时间戳,秒级别 1579055640
page_num 否 (默认1) 当前页 1
page_size 否  (默认10) 当前页条目数量 10
  • 备注:查询时间范围为90天

请求示例:

"method": "POST",
"url": "https://store.uat.sunmi.com/openapi/log/operation/company/getList",
"headers": {
  "Content-Type": "application/x-www-form-urlencoded"
},
formData: {
  "sunmi_company_no": "560279010307",
  "app_id": "LMWWQVTW4QGCC",
  "timestamp": 1581383983,
  "random": "5dsf6698",
  "sign": "33C18A18282733A71F998BB5A5E4319D"
  "start_time": "1581333970",
  "end_time": "1581363970",
}

返回值:

{
	"data": {
		"total_count": 4,
		"operate_list": [{
				"operate_event": "patrol",
				"operate_event_detail": "patrol.cronjob.update",
				"operate_source": "app",
				"operate_time": 1604375860,
				"operate_payload": {
					"params": {
						"active_status": 1,
						"cronjob_id": 2255,
						"cronjob_name": "45345435",
						"cronjob_type": 2,
						"device_id_list": [
							3634,
							2319
						],
						"period_type": 1,
						"sub_job_list": [{
								"end_time": 0,
								"start_time": 57480,
								"time_duration": 15,
								"time_slot": 0
							},
							{
								"end_time": 0,
								"start_time": 57540,
								"time_duration": 5,
								"time_slot": 0
							}
						],
						"week_day_list": []
					},
					"result": "success"
				}
			},
			{
				"operate_event": "patrol",
				"operate_event_detail": "patrol.cronjob.create",
				"operate_source": "app",
				"operate_time": 1604375899,
				"operate_payload": {
					"params": {
						"cronjob_name": "sd",
						"cronjob_type": 1,
						"device_id_list": [
							2256
						],
						"period_type": 1,
						"sub_job_list": [{
							"end_time": 42840,
							"start_time": 46380,
							"time_slot": 900
						}],
						"week_day_list": []
					},
					"result": "success"
				}
			},
			{
				"operate_event": "patrol",
				"operate_event_detail": "patrol.cronjob.delete",
				"operate_source": "app",
				"operate_time": 1604382092,
				"operate_payload": {
					"params": {
						"job_id_list": [
							2255
						]
					},
					"result": "success"
				}
			},
			{
				"operate_event": "patrol",
				"operate_event_detail": "patrol.cronjob.delete",
				"operate_source": "app",
				"operate_time": 1604392539,
				"operate_payload": {
					"params": {
						"job_id_list": [
							2257
						]
					},
					"result": "success"
				}
			}
		]
	},
	"code": 0,
	"msg": "succeed"
}
  • 备注,相关枚举值如有需要详见具体业务

返回参数说明:

参数说明
operate_list操作列表
operate_event操作事件
operate_event_detail操作详情
operate_source操作来源
operate_time操作时间
operate_payload操作内容
result操作结果

operate_event:

取值说明
patrol巡店业务

operate_event_detail:

取值说明
patrol.cronjob.create创建定时任务
patrol.cronjob.update更新定时任务(包括开启关闭)
patrol.cronjob.delete删除定时任务
patrol.plan.create创建巡店计划
patrol.plan.delete删除巡店计划
patrol.template.create创建考评模板
patrol.template.update更新考评模板 (包括开启关闭)
patrol.template.delete删除考评模板

operate_source:

取值说明
app商米助手
websunmi store页面
mgt商米后端管理平台
openapiopenapi接口调用

错误码:

错误码说明
5041商户组织参数错误
5000数据库错误

增值服务-巡店服务 接口

1 概述

为了方便Saas合作伙伴可以直接在其平台上使用商米提供的巡店服务业务数据,平台提供了巡店统计数据接口。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唯一标识接入身份,联系商米数字店铺提供
randomstring随机字符串,由数字和字母组成,长度范围为6-10位
timestampint当前的unix timestamp,精度到秒级,10位数字
signstring签名信息,详见2.2

3 巡店数据统计接口

3.1 接口描述

巡店数据统计接口用于Saas合作方获取巡店服务的各种数据统计。

3.2 接口列表

接口名称接口描述
/service/patrol/stat/groupByInspector获取巡检人巡查工作情况统计
/service/patrol/stat/groupByShop 获取门店下巡查工作数据统计
/service/patrol/stat/groupByTemplate获取模板使用情况数据统计
/service/patrol/stat/groupByCheckItem获取模板-检查项使用情况数据统计

3.3 接口详情

3.3.1 获取巡检人巡查工作数据统计

接口描述:通过本接口调用,可以获取到指定门店下基于巡检人统计的巡检人工作数据统计

接口链接:/service/patrol/stat/groupByInspector

接口版本:v2.0

接口参数:

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号560279010307
periodint统计周期1

period参数说明:

参数取值说明
1近7天数据统计
2近30天数据统计
3近90天数据统计
4近180天数据统计
5近365天数据统计

请求示例:

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

返回值:

{
    "data": {
        "patrol_inspector_summary_list": [
            {
                "inspection_user_name": "小明",
                "plan_task_undone_count": 0,
                "plan_task_done_count": 7,
                "plan_task_doing_count": 0,
                "plan_task_total_count": 28,
                "check_total_count": 349,
                "check_done_count": 2,
                "total_time_duration": 295645,
                "task_normal_count": 7,
                "task_non_count": 1602,
                "task_total_count": 1609,
                "task_realtime_count": 699,
                "task_snapshot_count": 523,
                "task_evaluate_count": 40,
                "last_inspection_time": 1600867095
            },
            {
                "inspection_user_name": "xiaohong",
                "plan_task_undone_count": 0,
                "plan_task_done_count": 3,
                "plan_task_doing_count": 0,
                "plan_task_total_count": 12,
                "check_total_count": 9,
                "check_done_count": 4,
                "total_time_duration": 2101,
                "task_normal_count": 3,
                "task_non_count": 81,
                "task_total_count": 84,
                "task_realtime_count": 26,
                "task_snapshot_count": 42,
                "task_evaluate_count": 7,
                "last_inspection_time": 1599535469
            },
            {
                "inspection_user_name": "kunkun",
                "plan_task_undone_count": 0,
                "plan_task_done_count": 0,
                "plan_task_doing_count": 0,
                "plan_task_total_count": 0,
                "check_total_count": 0,
                "check_done_count": 0,
                "total_time_duration": 21,
                "task_normal_count": 0,
                "task_non_count": 2,
                "task_total_count": 2,
                "task_realtime_count": 0,
                "task_snapshot_count": 0,
                "task_evaluate_count": 2,
                "last_inspection_time": 1597661382
            },
            {
                "inspection_user_name": "小白",
                "plan_task_undone_count": 0,
                "plan_task_done_count": 0,
                "plan_task_doing_count": 0,
                "plan_task_total_count": 0,
                "check_total_count": 14,
                "check_done_count": 0,
                "total_time_duration": 13994,
                "task_normal_count": 0,
                "task_non_count": 48,
                "task_total_count": 48,
                "task_realtime_count": 0,
                "task_snapshot_count": 0,
                "task_evaluate_count": 48,
                "last_inspection_time": 1599542974
            }
        ]
    },
    "code": 0,
    "msg": "succeed"
}

返回参数说明:

参数名类型说明
inspection_user_namestring巡检人姓名
plan_task_undone_countint计划任务过期未执行数
plan_task_done_countint计划任务已完成数
plan_task_doing_count int计划任务待执行数
plan_task_total_count int计划任务总数
check_total_countint应审核问题总数
check_done_countint 审核完成数
total_time_durationint 巡检时长(秒)
task_normal_countint任务巡店次数
task_non_countint非任务巡店次数
task_total_countint巡店总次数
task_realtime_countint实时巡店次数
task_snapshot_countint抓拍巡店次数
task_evaluate_countint门店考评次数
last_inspection_timeint最后一次巡检时间(秒)

错误码:

错误码说明

3.3.2 获取门店下巡查工作数据统计

接口描述:通过本接口调用,可以获取到指定门店下基于门店统计的巡检工作数据统计

接口链接: /service/patrol/stat/groupByShop

接口版本:v2.0

接口参数:

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号列表560279010307
periodint统计周期1

period参数:

参数取值说明
1近7天数据统计
2近30天数据统计
3近90天数据统计
4近180天数据统计
5近365天数据统计

请求示例:

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

返回值:

{
    "data": {
        "patrol_shop_summary_list": [
            {
                "check_total_count": 0,
                "scoreless_total_count": 0,
                "avg_score": 5.58,
                "rectify_count": 438,
                "rectify_done_count": 398,
                "realtime_need_count": 393,
                "realtime_total_count": 777,
                "snapshot_problem_count": 286,
                "snapshot_total_count": 645,
                "evaluate_need_count": 45,
                "evaluate_total_count": 126
            }
        ]
    },
    "code": 0,
    "msg": "succeed"
}

返回参数说明:

参数名类型说明
check_total_countint考评检查项总数
scoreless_total_countint有问题检查项数
avg_scorefloat考评得分,百分制
rectify_countint应整改问题数
rectify_done_countint整改完成数
realtime_need_countint 实时巡店需整改数
realtime_total_countint 实时巡店总次数
snapshot_problem_countint抓拍巡检有问题数
snapshot_total_countint抓拍巡检总次数
evaluate_need_countint门店考评需整改数
evaluate_total_countint门店考评总次数

错误码:

错误码说明

3.3.3 获取模板使用情况数据统计

接口描述: 通过本接口调用,可以获取到指定门店下基于门店统计的巡检工作数据统计

接口链接: /service/patrol/stat/groupByTemplate

接口版本:v2.0

接口参数:

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号列表560279010307
periodint统计周期1

period参数说明:

参数取值说明
1近7天数据统计
2近30天数据统计
3近90天数据统计
4近180天数据统计
5近365天数据统计

请求示例:

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

返回值:

{
    "data": {
        "patrol_template_summary_list": [
            {
                "template_id": "549755813846",
                "template_name": "你好世界",
                "total_score": 3925,
                "total_full_score": 5240,
                "total_count": 126
            }
        ]
    },
    "code": 0,
    "msg": "succeed"
}
参数名类型说明
template_idint模板id
template_namestring模板名称
total_scoreint门店下模板累计得分
total_full_scoreint 门店下模板累计总分
total_countint总共使用次数

错误码:

错误码说明

3.3.4 获取模板-检查项使用情况数据统计

接口描述: 通过本接口调用,可以获取到指定门店下基于模板统计的巡检工作数据统计

接口链接: /service/patrol/stat/groupByCheckItem

接口版本:v2.0

接口参数:

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号列表560279010307
periodint统计周期1

period参数说明:

参数取值说明
1近7天数据统计
2近30天数据统计
3近90天数据统计
4近180天数据统计
5近365天数据统计

请求示例:

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

返回值:

{
    "data": {
        "patrol_check_item_summary_list": [
            {
                "template_id": "549755813846",
                "check_item_name": "1",
                "check_score_count": 9,
                "check_total_count": 12
            },
            {
                "template_id": "549755813846",
                "check_item_name": "2dada方式方法将老豆腐江东父老的肌肤豆腐煎豆腐",
                "check_score_count": 1,
                "check_total_count": 1
            },
            {
                "template_id": "549755813846",
                "check_item_name": "调料归类正确",
                "check_score_count": 3,
                "check_total_count": 5
            },
            {
                "template_id": "549755813846",
                "check_item_name": "食品归类正确",
                "check_score_count": 4,
                "check_total_count": 5
            },
            {
                "template_id": "549755813846",
                "check_item_name": "食品细菌含量未超标",
                "check_score_count": 3,
                "check_total_count": 5
            },
            {
                "template_id": "549755813846",
                "check_item_name": "食材未过期",
                "check_score_count": 5,
                "check_total_count": 5
            },
            {
                "template_id": "549755813846",
                "check_item_name": "食材清洗干净",
                "check_score_count": 4,
                "check_total_count": 5
            }
        ]
    },
    "code": 0,
    "msg": "succeed"
}

返回参数说明:

参数名类型说明
template_idint模板id
check_item_namestring检查项名称
check_score_countint检查得分次数
check_total_countint 检查次数

错误码:

错误码说明

IPC 云端openAPI接口

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 店铺设计规范

参考 《商米数字店铺开放平台 -> 店铺绑定》

智能摄像机对接示范

6.1 店铺对齐

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

6.2 设备配网

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

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

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

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

6.3 设备绑定

6.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",
    "mac":"0C25766F5705",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

6.3.2 store页面绑定

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

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

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

6.4 设备配置

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

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

6.4.2 store页面设置进店划线

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

6.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获取实时监控图片

6.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获取历史人流变化趋势(人流总数/生熟客,时间粒度为月)(开发中)