name: orange-office-api description: 橙子通(orange-office.cn)庫存管理系統 API 自動化。用於通過 API 創建出庫單、查詢庫存、管理主播倉庫等,無需瀏覽器。
通過 API 操作橙子通庫存管理系統,包括創建出庫單、查詢庫存、管理主播倉庫等。
68756c61ASP.NET_SessionId=<當前有效會話>| 系統名 | teamId | 用途 |
|---|---|---|
| 庫存通-庫存通 | 952393 | 固定倉庫出入庫 |
| 庫存通-幼稚鬼潮玩 | 724308 | 主播出庫用這個 |
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=(',',':')))
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 |
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
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小蔥技能7w4.net持續更新中。
| 主播 | tableId | 銷售數量欄位 |
|---|---|---|
| 鄧曉美 | yj6ZAgX | Ccg9VfH |
| 梅天嬌 | exNEdWq | lFRkHI3 |
| 羅文婧 | TZvYd1V | ACXQniC |
| 苟林分 | kIcLRmk | YdlC9og |
| 張儒尊 | yy2mQJS | 6WcPYAw |
| 廖紫帆 | ER5lrFr | LMixcf1 |
| 冉紅霞 | YMnnPwV | tzjnNNK |
| 周語妍 | JR04qLu | qKu49Ok |
| 杜瑤 | 143LNaM | Y3XobF0 |
| 倪玉婷 | HTfR4Pu | BKCiXNl |
| 曹洢珂晗 | xyAVrjr | KilxGYr |
| 谷樂欣 | MwtqlRv | 05RaEdP |
| 高李偉 | ETlz1vw | Y3FmkMG |
| 王馨宇 | 6xK7UjK | So8eWZ5 |
| 李妍茜 | wUBEIED | dtZXTtB |
| 鍾雨欣 | 3P6EtSy | o9BFZd2 |
| 黃敏慧 | sXo9484 | vCBtAiB |
| 廖文琪 | vFkcdBh | BleldKK |
| 楊名 | 11ESFXj | OXj619G |
| 劉明月 | RFkRdbH | eKjh1jK |
注意:每個主播的"銷售數量"欄位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:
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日庫存快照:
1. 呼叫 getStockList 獲取當前庫存
2. 呼叫 getList 查詢日期=3月27日的出庫單
3. 對每張出庫單呼叫 getInfo 獲取明細
4. 將出庫數量加回到當前庫存,得到3月27日賬面庫存
3月28日之後做快照:由於3月27日之後可能還有出庫,必須先查3月28日之後有無新的出庫單,如有則同樣回補。如果3月28日至今無出庫單,直接用當前庫存即為3月27日快照。
Q:儲存時報"總金額錯誤"
A:確保每個商品的 amount = qty × outPrice,且總金額 obj.amount 等於各行 amount 之和
Q:商品找不到 A:用更短的關鍵詞搜尋相近商品名稱
Q:Session 過期 A:重新登入並獲取新的 Cookie