操作日志

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) int 当前页1
page_size 否  (默认10) int 当前页条目数量 10
  • 备注:查询时间范围为90天

请求示例:

"method": "POST",
"url": "https://store.uat.sunmi.com/openapi/operation/company/log/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": 5,
		"operate_list": [{
			"operate_event": "patrol.plan.create",
			"operate_event_detail": "patrol.plan.create",
			"operate_source": "web",
			"operate_time": 1606707030,
			"operate_payload": {
				"params": {
					"period_type": 2,
					"plan_end_time": 1607011199,
					"plan_name": "操作日志巡店计划测试",
					"plan_start_time": 1606752000,
					"plan_task_type": 6,
					"week_day_list": []
				},
				"result": "success"
			}
		}, {
			"operate_event": "patrol.template.update",
			"operate_event_detail": "patrol.template.second_group.create",
			"operate_source": "web",
			"operate_time": 1606706053,
			"operate_payload": {
				"params": {
					"check_item_list": [{
						"full_score": 10,
						"name": "操作日志点检项测试"
					}],
					"first_group_id": 115,
					"second_group_name": "操作日志二级类测试",
					"template_id": 10
				},
				"result": "success"
			}
		}, {
			"operate_event": "patrol.template.update",
			"operate_event_detail": "patrol.template.second_group.delete",
			"operate_source": "web",
			"operate_time": 1606706031,
			"operate_payload": {
				"params": {
					"second_group_id": 120
				},
				"result": "success"
			}
		}, {
			"operate_event": "patrol.template.update",
			"operate_event_detail": "patrol.template.first_group.create",
			"operate_source": "web",
			"operate_time": 1606706024,
			"operate_payload": {
				"params": {
					"first_group_name": "操作日志大类测试",
					"template_id": 10
				},
				"result": "success"
			}
		}, {
			"operate_event": "patrol.template.update",
			"operate_event_detail": "patrol.template.second_group.create",
			"operate_source": "web",
			"operate_time": 1606706009,
			"operate_payload": {
				"params": {
					"check_item_list": [{
						"full_score": 10,
						"name": "测试1"
					}],
					"first_group_id": 32,
					"second_group_name": "操作日志测试",
					"template_id": 10
				},
				"result": "success"
			}
		}]
	},
	"code": 0,
	"msg": "succeed"
}
  • 备注,相关枚举值如有需要详见具体业务

返回参数说明:

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

operate_event:

取值说明
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_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.first_group.create创建模板一级检查大类
patrol.template.first_group.update更新模板一级检查大类
patrol.template.first_group.delete删除模板一级检查大类
patrol.template.second_group.create创建模板二级检查类(包含点检项)
patrol.template.second_group.update更新模板二级检查类(包含点检项)
patrol.template.second_group.delete删除模板二级检查类(包含点检项)
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最后一次巡检时间(秒)

错误码:

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

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门店考评总次数

错误码:

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

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总共使用次数

错误码:

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

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 检查次数

错误码:

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

IPC 会员对接Demo

1 店铺对齐

您可以下载商米助手APP (测试环境的商米助手,会单独提供), 注册并创建商户。 您也可以通过我们的商米数字店铺web(测试版)链接 https://store.uat.sunmi.com/ 进行注册。注册完成之后,您可以

调用

https://store.uat.sunmi.com/openapi/shop/bind

接口将店铺进行对齐,接口所需参数可参考 《商米数字店铺开放平台 -> 商户店铺》

2 设备配网

通过商米助手APP进行FS识客摄像机设备的配网和绑定工作,然后进行进店划线和调焦以保证识别率和准确性。下图为设备配网成功后的状态,指示灯变为蓝色。

在设备完成配置后,您可以在商米助手app或商米数字店铺web端上看到该设备的直播视频以及客流数据

3 设定门店设备人脸分组

接下来您需要对该门店下所有设备配置人脸分组。目前每个门店支持最多十个人脸分组。( 其中包含一个自带的生客分组,一个 自带的熟客 分组 )根据不同的分组信息,不同分组的人进入摄像机的进店区域之后会自动上报信息。在会员场景下,请在调用接口的入参 type 指定为 5.

调用

https://store.uat.sunmi.com/openapi/face/group/create

接口将店铺进行对齐,接口所需参数可参考 《商米数字店铺开放平台 -> 智能摄像机IPC -> 云端API -> 接口文档 -> 第5章》

在成功调用该接口会,您会在返回结果中获得一个 group_id, 作为该分组的唯一标识。

4 录入会员信息

要对会员进行实时识别,您需要首先录入会员信息到平台,建立相应的底库。

调用

https://store.uat.sunmi.com/openapi/member/create

接口将会员信息在我方平台创建,接口所需参数可参考 《商米数字店铺开放平台 -> 智能摄像机IPC -> 会员库》

在接口成功返回之后,您的会员信息即已经录入我方平台。接下来需要把指定的会员信息下发到指定门店的摄像机中。这样在该门店的摄像机上即可以保留相关的特征数据,用来做人脸抓拍后的比对工作。

调用接口

https://store.uat.sunmi.com/openapi/member/assign

接口将会员信息下发到指定门店的摄像机,接口所需参数可参考 《商米数字店铺开放平台 -> 智能摄像机IPC -> 会员库》

在此之后,该会员的记录会添加到门店数据中,在客流数据等场景下都可以体现。您也可以在商米助手app和商米数字店铺web上看到客流统计数据的变化。相关的openAPI接口也都已经开放, 接口将店铺进行对齐,接口所需参数可参考 《商米数字店铺开放平台 -> 智能摄像机IPC -> 云端API -> 接口文档 -> 6人流统计接口》中可以

5 实时到店推送

如果您需要对会员到店的情况,需要获得实时提醒,可以采用消息中心的接口进行订阅。

调用

https://store.uat.sunmi.com/openapi/hook/add

接口可以先订阅您要收到推送的门店以及推送的HTTP地址。事件event选择为2001 .

之后在FS摄像机侦测到会员进店之后,就会实时推送至此订阅的HTTP地址链接。返回的消息大致如下。

{
    "ipc_id": "512369745691",
    "face_id": "235698745612",
    "gender": 1,
    "age_range": 4,
    "group_id": "8927",
    "group_name": "stranger",
    "group_type": 2,
    "member_id": "2938203938",  //如果获取的人员为录入会员,则返回会员id,非会员,则返回为""
}

设备

云接口

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 寸