item_get_app 接口实战:手把手拿到 1688 商品「原数据+H5」

部署运行你感兴趣的模型镜像

关键词:item_get_app、1688、H5 原数据、签名、限流、缓存

一、接口定位

item_get_app 是 1688 开放平台专为「无线 H5 商品详情页」场景提供的私有接口,一次性返回两份数据

  1. 商品原数据(JSON):标题、价格、SKU、库存、阶梯价、主图、详情图、店铺、类目、属性、运费模板等 80+ 字段;

  2. H5 渲染数据(HTML):官方最新版详情页骨架,含图文、视频、规格选择器,可直接嵌入 App WebView。

相比老接口 alibaba.item.getitem_get_app 字段更全、图片带宽更高,且自带「已登录」态下的批发价/混批标签,适合需要「所见即所得」的选品/铺货/小程序场景。

二、前置条件

步骤说明
1. 企业认证账号必须完成 1688 企业实名
2. 创建应用控制台新建「无线应用」→ 勾选 item_get_app 权限
3. 签约套餐免费版 5 次/秒 5000 次/日;选品/ERP 场景建议 专业版(50 次/秒 50 万/日)
4. 白名单填写服务器出口 IP;如用代理网关,需同时把代理 IP 填入

三、核心参数

字段类型必须示例备注
methodStringitem_get_app固定值
app_keyString12345678控制台查看
timestampString2025-12-19 14:23:45格式 yyyy-MM-dd HH:mm:ss
item_idLong610947572360商品数字 ID
fieldsString*原数据字段过滤,逗号分隔;传空默认全字段
need_htmlBooleantrue是否同时返回 H5 骨架,默认 false
signString——见下方签名算法

四、签名算法(官方 HMAC-SHA1)

  1. 除 sign 外所有参数按 Key 升序排序

  2. 拼成 key=value&key=value 字符串,value 需 URL encode

  3. 首尾拼接 app_secret 作为密钥,做 HMAC-SHA1 加密,再转大写

  4. 把结果放到 sign 字段即可

伪代码:

String toSign = "app_key=xxx&fields=xxx&item_id=xxx&method=xxx&need_html=true&timestamp=2025-12-19+14%3A23%3A45";
String sign = HmacSHA1(app_secret + toSign + app_secret).toUpperCase();

五、完整请求示例(Python)

import time, hmac, hashlib, requests, urllib.parse

APP_KEY    = '你的AppKey'
APP_SECRET = '你的AppSecret'
ITEM_ID    = 610947572360

url = 'https://gw.open.1688.com/openapi/param2/1/item_get_app/{}'.format(APP_KEY)

params = {
    "method"    : "item_get_app",
    "app_key"   : APP_KEY,
    "timestamp" : time.strftime("%Y-%m-%d %H:%M:%S"),
    "item_id"   : ITEM_ID,
    "fields"    : "item_id,title,price,sku_list,pics,spec_info,shop_name",
    "need_html" : "true"
}

# 1. 排序+拼串
query = '&'.join([f"{k}={urllib.parse.quote(str(params[k]))}" for k in sorted(params)])
# 2. HMAC-SHA1 签名
sign = hmac.new((APP_SECRET + query + APP_SECRET).encode(),
                digestmod=hashlib.sha1).hexdigest().upper()
params['sign'] = sign

# 3. 发送 GET
resp = requests.get(url, params=params, timeout=10)
data = resp.json()

if 'error_response' in data:
    print('失败:', data['error_response']['msg'])
else:
    item = data['item_get_app_response']['item']
    print('标题:', item['title'])
    print('价格:', item['price'])
    print('H5 骨架长度:', len(item['html']))

返回片段(已脱敏):

{
  "item_get_app_response": {
    "item": {
      "item_id": 610947572360,
      "title": "2025冬季新款羽绒服女",
      "price": "268.00",
      "sku_list": [ {...} ],
      "pics": [ "https://img.alicdn.com/imgextra/..." ],
      "html": "<!DOCTYPE html><html>...(官方H5骨架)</html>"
    }
  }
}

六、常见踩坑指南

坑点现象解决
timestamp 格式错401 签名无效必须带 - 和 :,且 URL 编码后空格变 + 
参数未升序403 签名不对用 TreeMap / sorted() 保证顺序
need_html=true 却返回空套餐权限不足专业版才给 H5 字段,免费版只返回原数据
QPS 超限429 Too Many Requests降到 5 次/秒以内,或升级套餐 
item_id 不存在1001 商品不存在先通过搜索接口确认商品状态,再入库

七、生产级优化建议

  1. 字段过滤:只拿业务所需字段,响应体积可缩小 70%+,解析更快

  2. 本地缓存:对类目、属性等静态数据缓存 24 h,减少无效调用

  3. 异步刷新:access_token 24 h 过期,提前 10 min 刷新;H5 骨架 12 h 不变可缓存

  4. 阶梯重试:429 时按 1s→2s→4s 退避,最多 3 次

  5. 双链路容灾:主走官方网关,异常时自动切换第三方代理网关(只需换域名,签名逻辑不变)

八、一句话总结

item_get_app 是 1688 官方「原数据 + H5 骨架」二合一接口,按本文的签名算法、字段过滤和缓存策略,可直接把 1688 商品详情页搬到自己 App/小程序里,所见即所得,选品铺货一步到位

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值