通过 API 操作橙子通库存管理系统,包括创建出库单、查询库存、管理主播仓库等。
68756c61ASP.NET_SessionId=<当前有效会话>系统名teamId用途库存通-库存通952393固定仓库出入库库存通-幼稚鬼潮玩724308主播出库用这个
python
import hashlib
SALT = '68756c61'
def md5(data: str) -> str:
return hashlib.md5((SALT + data).encode()).digest().hex()
所有 API 请求 body 经过签名, sign = md5(json.dumps(body, separators=(',',':')))
python
headers = {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest',
'sign': md5(json.dumps(body, separators=(',',':'))),
'client': 'pcWeb',
'Cookie': f'ASP.NET_SessionId={SESSION}'
}
功能路径说明创建出库单POST /stock/stockout/create修改出库单POST /stock/stockout/update删除出库单POST /stock/stockout/delete获取出库单列表POST /stock/stockout/getList获取出库单详情POST /stock/stockout/getInfo查询库存POST /stock/prod/getStockList必须带 locId
python
POST /stock/prod/getStockList
{
"keyword": "", "catId": "", "page": 1, "rows": 500,
"sort": "barcode", "order": "descending",
"teamId": 724308, # 场景B用724308,场景A用952393
"ifValue": "Y",
"ifShowSku": "Y",
"ifShowZero": "N",
"locId": 63 # 仓库ID,必须填写
}
返回: response.obj.list[] — 每项含 prodId、 prodName、 stockQty、 outPrice
python
POST /stock/stockout/create
{
"teamId": 724308,
"outNo": "", # 空字符串自动生成
"outDate": "2026-03-26",
"refId": 695620, # 抖店售卖
"refName": "抖店售卖",
"locId": 63, # 仓库ID
"locName": "梅天娇",
"amount": 1234.56, # 总金额 = 各行 amount 之和
"remark": "机器人操作",
"itemList": [
{
"prodId": 9973574,
"qty": 24,
"price": 15, # 单价从 getStockList 的 outPrice 字段获取
"amount": 360, # qty × price,保留2位小数
"outQty": 24,
"stockQty": 36
}
]
}
注意:
outPrice(不是 price)amount = qty × outPrice,保留2位小数amount = 各行 amount 之和系统:库存通-幼稚鬼潮玩(teamId=724308)
主播locId邓晓美15梅天娇63罗文婧57苟林分71张儒尊16廖紫帆68冉红霞9周语妍7杜瑶79倪玉婷44曹洢珂晗80谷乐欣49高李伟69王馨宇30李妍茜29钟雨欣8黄敏慧50廖文琪3杨名10刘明月4
dxXB52LJqnrEb4pjcQQQjq598qjMp697主播tableId销售数量字段邓晓美yj6ZAgXCcg9VfH梅天娇exNEdWqlFRkHI3罗文婧TZvYd1VACXQniC苟林分kIcLRmkYdlC9og张儒尊yy2mQJS6WcPYAw廖紫帆ER5lrFrLMixcf1冉红霞YMnnPwVtzjnNNK周语妍JR04qLuqKu49Ok杜瑶143LNaMY3XobF0倪玉婷HTfR4PuBKCiXNl曹洢珂晗xyAVrjrKilxGYr谷乐欣MwtqlRv05RaEdP高李伟ETlz1vwY3FmkMG王馨宇6xK7UjKSo8eWZ5李妍茜wUBEIEDdtZXTtB钟雨欣3P6EtSyo9BFZd2黄敏慧sXo9484vCBtAiB廖文琪vFkcdBhBleldKK杨名11ESFXjOXj619G刘明月RFkRdbHeKjh1jK
注意:每个主播的"销售数量"字段ID可能不同,操作前必须先调用 get_fields 读取表头确认。
录入主播库存快照时, 必须包含以下全部字段:
字段说明来源日期库存账面日期手动指定,如 2026-03-27T00:00:00+08:00商品编号商品编码API getStockList 返回的 prodNo商品名称商品全名API getStockList 返回的 prodName规格型号包装规格API getStockList 返回的 prodSpec单位计量单位API getStockList 返回的 unit库存数量账面库存计算得出(当前库存 + 当日出库回补)
写入格式:使用 cells 而非 fields,每个字段对应其 fieldId:
javascript
const records = snapshot.map(item => ({
cells: {
[fieldId_日期]: '2026-03-27T00:00:00+08:00',
[fieldId_商品编号]: item.prodNo || '',
[fieldId_商品名称]: item.prodName,
[fieldId_规格型号]: item.prodSpec || '',
[fieldId_单位]: item.unit || '包',
[fieldId_库存数量]: item.qty,
// 以下字段填0或空
[fieldId_今日入库]: 0,
[fieldId_今日剩余]: 0,
[fieldId_销售金额]: '',
[fieldId_送出]: 0,
[fieldId_销售数量]: 0,
[fieldId_今日转仓]: 0
}
}));
日期格式:必须是 ISO 格式(如 2026-03-27T00:00:00+08:00),不能只写 2026-03-27。
计算3月27日库存快照:
getStockList 获取当前库存getList 查询日期=3月27日的出库单getInfo 获取明细3月28日之后做快照:由于3月27日之后可能还有出库,必须先查3月28日之后有无新的出库单,如有则同样回补。如果3月28日至今无出库单,直接用当前库存即为3月27日快照。
Q:保存时报"总金额错误"
A:确保每个商品的 amount = qty × outPrice,且总金额 obj.amount 等于各行 amount 之和
Q:商品找不到 A:用更短的关键词搜索相近商品名称
Q:Session 过期 A:重新登录并获取新的 Cookie