商品库存变更查询

仅提供已授权的门店数据服务:调用时通过 clientStoreSn 定位门店,平台校验该门店已完成授权(即客户门店与收钱吧门店已完成映射);未授权门店的商品库存变更数据无法查询。

1. 接口说明

按指定日期范围异步导出已授权门店的商品库存变更数据。开放平台受理请求后创建导出任务,任务完成后生成导出文件(库存流水明细 CSV、库存流水 movement Excel),再通过 notifyUrl 回调将下载链接通知开发者;任务失败时同样回调通知失败原因。

接口为异步导出模式:提交后立即返回受理结果,导出结果与任务状态通过回调通知异步获取,无需轮询。任务受理后异步执行导出,处理时长一般不超过 5 分钟,完成后通过 notifyUrl 回调通知开发者。

导出流程

导出流程时序图

  1. 开发者发起查询请求,携带门店、日期范围、回调地址 notifyUrl
  2. 开放平台受理并创建该门店的商品库存变更导出任务。
  3. 任务完成:开放平台回调 notifyUrldownloadUrls 为结果文件下载链接集合。
  4. 任务失败:开放平台回调 notifyUrl,携带失败原因(remark),请联系收钱吧运营人员处理。
项目 说明
接口路径 POST /open-api/v1/goods/stock/query
鉴权方式 HMAC-SHA256,见鉴权与签名
限流 以门店号(clientStoreSn)为维度进行限流,频率限制为 10 QPS

2. 请求参数

字段 类型 必填 示例值 说明
clientStoreSn String SH001 客户门店号,平台据此查询映射的收钱吧门店并校验授权,仅返回该门店下的商品库存变更
sqbStoreSn String 1580000003443730 收钱吧门店号,可不传;如传则优先使用 sqbStoreSn,平台会校验其与 clientStoreSn 的映射关系
requestId String req_001 请求标识,必传。本接口requestId 用于幂等去重,见幂等机制
startTime String 2026-01-01 开始日期,日维度(格式:yyyy-MM-dd)。与 endTime 组成查询时间范围,仅支持查询近 6 个月内的数据,查询跨度最大 31 天,不传时默认查询前一天数据
endTime String 2026-01-31 结束日期,日维度(格式:yyyy-MM-dd)。与 startTime 组成查询时间范围,仅支持查询近 6 个月内的数据,查询跨度最大 31 天,不传时默认查询前一天数据
notifyUrl String https://3rd.example.com/stock/notify 结果回调地址。查询结果生成后回调此地址,回调内容包含 requestId、文件下载链接、生成状态、失败原因

请求示例

{
    "clientStoreSn": "SH001",
    "sqbStoreSn": "1580000003443730",
    "requestId": "req_001",
    "startTime": "2026-01-01",
    "endTime": "2026-01-31",
    "notifyUrl": "https://3rd.example.com/stock/notify"
}

3. 响应参数

接口为异步受理,响应 data 为受理结果,导出结果文件与任务状态通过回调通知异步获取:

字段 类型 必填 说明
data Object 受理结果,结构见 3.1 受理结果

3.1 受理结果

字段 类型 必填 示例值 说明
requestId String req_001 与查询请求的 requestId 一致,用于关联导出结果

响应示例

{
    "code": 0,
    "message": "成功",
    "data": {
        "requestId": "req_001"
    }
}

3.2 回调通知(notifyUrl)

查询结果生成后,开放平台向请求中的 notifyUrl 发起回调通知:生成成功时携带结果文件下载链接,失败时携带失败原因。

回调请求(开放平台 → 开发者)

字段 类型 必填 说明
msgId String 消息 ID,平台生成,唯一标识,重试时不变,用于幂等去重
requestId String 与查询请求的 requestId 一致,用于关联查询结果
clientStoreSn String 客户门店号,与查询请求一致,便于多任务关联
downloadUrls Object 结果文件下载链接集合,生成成功时返回,各链接有效期 24 小时,结构见下方说明
status String 生成状态,枚举见商品枚举附录
remark String 失败原因,生成失败时返回

downloadUrls 结构说明

字段 类型 必填 说明
detailUrl String 库存流水明细文件下载链接
movementUrl String 库存movement 文件下载链接

回调请求示例

{
    "msgId": "MSG20260101120000001",
    "requestId": "req_001",
    "clientStoreSn": "SH001",
    "downloadUrls": {
        "detailUrl": "https://files.3rd.example.com/stock/2026-01-01/req_001_detail.csv",
        "movementUrl": "https://files.3rd.example.com/stock/2026-01-01/req_001_movement.csv"
    },
    "status": "SUCCESS",
    "remark": null
}

回调验签

回调请求与主动调用接口复用同一套签名鉴权规范(见鉴权与签名):签名参数通过请求头 X-AccessKeyX-TimestampX-NonceX-Signature 携带,接收方需使用自身 accessSecret 验签,验签不通过应丢弃该回调。防重放机制同样适用(X-Timestamp 与服务器时间差 ≤ 5 分钟,X-Nonce 5 分钟内不可重复使用)。

回调响应(开发者 → 开放平台)

回调必须遵循推送与回调机制尤其是其中的响应要求(HTTP 200、Content-Type: application/json、Body 为 {"status": "success"}、3 秒内响应)为强制项,不满足即视为回调失败并触发重试;重试策略、幂等处理与消息兼容机制同见该文件。

4. 导出文件内容

导出文件包含两个文件:库存流水 movement 文件(Excel)与库存流水明细文件(CSV),分别对应回调 downloadUrls 中的 movementUrldetailUrl

4.1 库存流水 movement 文件(Excel)

每行一条商品的库存 movement 记录,字段如下:

字段 类型 必填 说明
sqbStoreSn String 收钱吧门店号
clientStoreSn String 客户门店号
spuId String 商品 id
clientSpuId String 客户商品 id
title String 商品标题
skuId String 规格 id
clientSkuId String 客户规格 id
skuName String 规格名称
openingDate String 期初日期,格式 yyyy-MM-dd
openingStock BigDecimal 期初库存
stockIncrease BigDecimal 库存增加
stockDecrease BigDecimal 库存减少
closingDate String 期末日期,格式 yyyy-MM-dd
closingStock BigDecimal 期末库存

示例(10 条)

sqbStoreSn clientStoreSn spuId clientSpuId title skuId clientSkuId skuName openingDate openingStock stockIncrease stockDecrease closingDate closingStock
1580000003443730 SH001 9990418 SPU1001 统一老坛泡椒面 9990418 SKU1001 默认 2026-01-01 50 20 5 2026-01-31 65
1580000003443730 SH001 9990099 SPU1002 伊利纯牛奶250ml 9990099 SKU1002 默认 2026-01-01 80 30 25 2026-01-31 85
1580000003443730 SH001 9990111 SPU1003 可口可乐330ml 9990111 SKU1003 330ml 2026-01-01 100 50 40 2026-01-31 110
1580000003443730 SH001 9990122 SPU1004 乐事薯片原味 9990122 SKU1004 原味 2026-01-01 45 15 20 2026-01-31 40
1580000003443730 SH001 9990133 SPU1005 双汇王中王火腿肠 9990133 SKU1005 默认 2026-01-01 60 20 18 2026-01-31 62
1580000003443730 SH001 9990144 SPU1006 农夫山泉550ml 9990144 SKU1006 550ml 2026-01-01 200 60 55 2026-01-31 205
1580000003443730 SH001 9990155 SPU1007 奥利奥原味夹心饼干 9990155 SKU1007 原味 2026-01-01 40 12 15 2026-01-31 37
1580000003443730 SH001 9990166 SPU1008 青岛啤酒500ml 9990166 SKU1008 500ml 2026-01-01 90 30 35 2026-01-31 85
1580000003443730 SH001 9990177 SPU1009 中华健齿白牙膏120g 9990177 SKU1009 默认 2026-01-01 25 10 6 2026-01-31 29
1580000003443730 SH001 9990188 SPU1010 康师傅香辣牛肉面 9990188 SKU1010 默认 2026-01-01 30 10 8 2026-01-31 32

4.2 库存流水明细文件(CSV)

导出文件为 CSV 格式,每行一条库存变更流水记录,由库存流水字段与商品信息字段拼接成宽表:

extra(Map)、extendBarcodes(List)等复合类型字段,以 JSON 字符串形式输出。

字段 类型 必填 说明
id Long 库存流水 id
stockId String 库存 id
sqbStoreId String 收钱吧门店 id
sqbStoreSn String 收钱吧门店号
clientStoreSn String 客户门店号
bizScene String 业务场景,枚举见商品枚举附录
bizType Integer 业务类型,枚举见商品枚举附录
bizSn String 业务单号(订单号、入库单号等)
operatorId String 操作员 id
before BigDecimal 变更前库存值
after BigDecimal 变更后库存值
change BigDecimal 变化量(带符号,正增负减)
changeType Integer 库存变更类型,枚举见商品枚举附录
extra Map 扩展信息(如来源 source、备注 remark、商品名等)
ctime Long 创建时间(毫秒)
mtime Long 更新时间(毫秒)
spuId String 商品 id
clientSpuId String 客户商品 id
skuId String 规格 id
clientSkuId String 客户规格 id
skuName String 规格名称
title String 商品标题
pinyin String 首字母拼音
barcode String 条码
extendBarcodes List 副条码
productType Integer 商品类型,枚举见商品枚举附录
saleType Integer 售卖类型,枚举见商品枚举附录
unit String 单位
coverImage String 封面图 URL
description String 商品描述
sysCode String 简码
pluCode Long 条码秤 PLU 码
saleStatus Integer 售卖状态,枚举见商品枚举附录
status Integer 状态,枚举见商品枚举附录
categoryId String 分类 id
supplierId Long 供应商 id
brandId Long 品牌 id

示例(10 条)

extraextendBarcodes 等复合字段以 JSON 字符串形式输出,字段含逗号/引号时按 CSV 规则使用双引号包裹转义。

id,stockId,sqbStoreId,sqbStoreSn,clientStoreSn,bizScene,bizType,bizSn,operatorId,before,after,change,changeType,extra,ctime,mtime,spuId,clientSpuId,skuId,clientSkuId,skuName,title,pinyin,barcode,extendBarcodes,productType,saleType,unit,coverImage,description,sysCode,pluCode,saleStatus,status,categoryId,supplierId,brandId
10001,stock1001,store001,1580000003443730,SH001,retail,1,ORDER20260101001,OP001,50,48,-2,3,"{""source"": ""POS"", ""remark"": ""销售出库""}",1767571200000,1767571200000,9990418,SPU1001,9990418,SKU1001,默认,统一老坛泡椒面,tyltjpm,6925303797515,[],1,1,袋,,,JPM001,9990418,1,0,352984,50001,60001
10002,stock1001,store001,1580000003443730,SH001,retail,4,PO20260102001,OP001,48,68,20,2,"{""source"": ""ERP"", ""remark"": ""采购入库""}",1767571201000,1767571201000,9990418,SPU1001,9990418,SKU1001,默认,统一老坛泡椒面,tyltjpm,6925303797515,[],1,1,袋,,,JPM001,9990418,1,0,352984,50001,60001
10003,stock1002,store001,1580000003443730,SH001,retail,3,ADJ20260102001,OP001,80,78,-2,1,"{""source"": ""MANUAL"", ""remark"": ""盘点调整""}",1767571202000,1767571202000,9990099,SPU1002,9990099,SKU1002,默认,伊利纯牛奶250ml,ylcnn,6907992822716,[],1,1,盒,,,,,1,0,352984,50002,60002
10004,stock1003,store001,1580000003443730,SH001,retail,1,ORDER20260103001,OP001,100,97,-3,3,"{""source"": ""POS"", ""remark"": ""销售出库""}",1767571203000,1767571203000,9990111,SPU1003,9990111,SKU1003,330ml,可口可乐330ml,kkkl,6922255800510,[],1,1,瓶,,,,,1,0,352985,50003,60003
10005,stock1004,store001,1580000003443730,SH001,retail,5,RO20260103001,OP001,45,42,-3,3,"{""source"": ""POS"", ""remark"": ""退货出库""}",1767571204000,1767571204000,9990122,SPU1004,9990122,SKU1004,原味,乐事薯片原味,lssp,6924743915235,[],1,1,袋,,,,,1,0,352986,50004,60004
10006,stock1005,store001,1580000003443730,SH001,retail,6,ST20260104001,OP001,60,60,0,4,"{""source"": ""STOCKTAKE"", ""remark"": ""盘点无差异""}",1767571205000,1767571205000,9990133,SPU1005,9990133,SKU1005,默认,双汇王中王火腿肠,shwz,6901389631250,[],1,1,根,,,,,1,0,352984,50005,60005
10007,stock1001,store001,1580000003443730,SH001,retail,1,ORDER20260104001,OP001,68,65,-3,3,"{""source"": ""POS"", ""remark"": ""销售出库""}",1767571206000,1767571206000,9990418,SPU1001,9990418,SKU1001,默认,统一老坛泡椒面,tyltjpm,6925303797515,[],1,1,袋,,,JPM001,9990418,1,0,352984,50001,60001
10008,stock1003,store001,1580000003443730,SH001,retail,4,PO20260105001,OP001,97,117,20,2,"{""source"": ""ERP"", ""remark"": ""采购入库""}",1767571207000,1767571207000,9990111,SPU1003,9990111,SKU1003,330ml,可口可乐330ml,kkkl,6922255800510,[],1,1,瓶,,,,,1,0,352985,50003,60003
10009,stock1002,store001,1580000003443730,SH001,retail,7,LOSS20260105001,OP001,78,76,-2,3,"{""source"": ""MANUAL"", ""remark"": ""过期报损""}",1767571208000,1767571208000,9990099,SPU1002,9990099,SKU1002,默认,伊利纯牛奶250ml,ylcnn,6907992822716,[],1,1,盒,,,,,1,0,352984,50002,60002
10010,stock1004,store001,1580000003443730,SH001,retail,1,ORDER20260105001,OP001,42,40,-2,3,"{""source"": ""POS"", ""remark"": ""销售出库""}",1767571209000,1767571209000,9990122,SPU1004,9990122,SKU1004,原味,乐事薯片原味,lssp,6924743915235,[],1,1,袋,,,,,1,0,352986,50004,60004

5. 完整请求示例

5.1 请求示例

{
  "clientStoreSn": "SH001",
  "requestId": "req_001",
  "startTime": "2026-01-01",
  "endTime": "2026-01-31",
  "notifyUrl": "https://3rd.example.com/stock/notify"
}

5.2 响应示例

{
  "code": 0,
  "message": "成功",
  "data": {
    "requestId": "req_001"
  }
}

6. 错误码

本接口业务错误码(51xxx 段)

错误码 含义 处理建议
51001 sqbStoreSnclientStoreSn 映射不匹配 校验传入的收钱吧门店号,确保与客户门店的映射关系一致
51002 查询日期范围超限 日期跨度不超过 31 天,且仅支持查询近 6 个月内的数据

完整错误码表见错误码。接口响应中的 code 为统一包装结果码,业务数据在 data 中体现。

results matching ""

    No results matching ""