4.0 KiB
4.0 KiB
商品搜索接口(新版)
用于通过商品名称或编码查询商品关键信息,是创建订单的前置步骤。
认证流程
第一步:登录获取 JWT
POST https://accounts.77ircloud.com/api/v2/accounts/login
Content-Type: application/json
请求体:
{
"userName": "112983083",
"password": "77ircloud",
"loginServerType": 4
}
返回的 jwtToken 即为 authorization 值:
{
"code": 200,
"data": {
"jwtToken": "eyJhbGci...",
"expires_in": 604800000
}
}
第二步:带 JWT 请求商品接口
请求头:
authorization:{jwtToken}— 注意:没有 Bearer 前缀x-exclude-login-mutex:77ircloud— 固定值
商品搜索
GET https://suite.77ircloud.com/product-aggregation/v1/products?pageSize=30¤tPage=1&queryTag=true&queryInventories=true&loadSortingTag=true&loadSortingTagName=true&q={关键词}
参数说明:
| 参数 | 必填 | 说明 |
|---|---|---|
q |
✅ | 搜索关键词(商品名称或商品编码) |
pageSize |
✅ | 每页数量 |
currentPage |
✅ | 页码(从1开始) |
queryTag |
可选 | 是否查询标签 |
queryInventories |
可选 | 是否查询库存 |
loadSortingTag |
可选 | 是否查询分拣标签 |
loadSortingTagName |
可选 | 是否查询分拣标签名称 |
返回示例:
{
"code": 200,
"data": {
"totalCount": 4,
"currentPage": 1,
"pageSize": 30,
"items": [
{
"name": "嘉吉尚选霸王鸡肉条1kg",
"skuId": 2116793372668192,
"multiUnitId": 2116793372668193,
"unitName": "包",
"basePrice": 18.9,
"availableAmount": 1035.0,
"specJson": "{\"规格\":\"包=约33片/包、件=1kg*10包\"}",
"code": "165-009-00068",
"levelPrices": [
{"index": 1, "price": 18.9},
{"index": 2, "price": 18.0},
{"index": 3, "price": 19.5},
{"index": 4, "price": 18.5}
]
}
]
}
}
关键字段说明
| 字段 | 说明 | 用途 |
|---|---|---|
skuId |
商品SKU ID | 下单时用 productSku |
multiUnitId |
单位ID | 下单时用 unitId |
unitName |
单位名称(如"包") | 展示用 |
basePrice |
参考单价 | 填写 salePrice 和 originalPrice |
availableAmount |
当前可用库存 | 判断是否充足 |
完整调用示例
import urllib.request, json, urllib.parse
# Step 1: 登录获取 JWT
login_data = json.dumps({
"userName": "112983083",
"password": "77ircloud",
"loginServerType": 4
}).encode()
login_req = urllib.request.Request(
"https://accounts.77ircloud.com/api/v2/accounts/login",
data=login_data,
headers={"Content-Type": "application/json"},
method="POST"
)
with urllib.request.urlopen(login_req, timeout=10) as resp:
jwt = json.loads(resp.read())['data']['jwtToken']
# Step 2: 搜索商品
keyword = "嘉吉尚选霸王鸡肉条"
q = urllib.parse.quote(keyword)
url = f"https://suite.77ircloud.com/product-aggregation/v1/products?pageSize=30¤tPage=1&queryTag=true&queryInventories=true&loadSortingTag=true&loadSortingTagName=true&q={q}"
search_req = urllib.request.Request(url, headers={
"authorization": jwt,
"x-exclude-login-mutex": "77ircloud"
})
with urllib.request.urlopen(search_req, timeout=15) as resp:
data = json.loads(resp.read())
items = data.get('data', {}).get('items', [])
for item in items:
print(f"商品: {item['name']}")
print(f" skuId: {item['skuId']}")
print(f" multiUnitId: {item['multiUnitId']}")
print(f" 单位: {item['unitName']}")
print(f" 库存: {item['availableAmount']}")
注意事项
- 每次查询都需要重新登录获取 JWT(有效期约7天)
- authorization 没有 Bearer 前缀,直接写 JWT 字符串
- 搜索关键词用 URL 编码,中文需要 encode
- 搜索结果可能为空,可尝试不同的关键词组合(如品牌名、商品简称等)