?
在电商开发这行摸爬滚打快十年,对接过不少平台的 API,但若说最让人头疼的,1688商品详情API绝对能排进前三。从批发场景特有的数据结构,到接口权限的严格管控,每一步都藏着 “惊喜”。今天就把这些年踩过的坑、攒下的实战代码分享出来,给同样在 1688 开发路上挣扎的朋友搭个桥。
第一次对接 1688API 时,光是申请权限就卡了整整五天。1688 作为批发平台,对开发者资质审核格外严格,不仅要提供企业营业执照,还要详细说明用途 —— 是用于店铺管理还是第三方工具开发,甚至连预期调用量都要报备。好不容易拿到app_key和secret,签名验证又给了我个下马威。1688 的签名算法要求把所有参数按 ASCII 排序,连时间戳格式都必须是yyyy-MM-dd HH:mm:ss,差个空格都会返回400错误。那段时间对着文档反复调试,终于写出能用的签名函数:
运行
import hashlib import time import urllib.parse def generate_1688_sign(params, secret): # 按参数名ASCII排序 sorted_params = sorted(params.items(), key=lambda x: x[0]) # 拼接成key=value&key=value格式 query_str = "&".join([f"{k}={urllib.parse.quote(str(v), safe='')}" for k, v in sorted_params]) # 首尾加上secret sign_str = f"{secret}{query_str}{secret}" # SHA1加密后转大写 return hashlib.sha1(sign_str.encode()).hexdigest().upper() # 使用示例 params = { "method": "alibaba.item.get", "app_key": "your_app_key", "item_id": "6123456789", "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), "format": "json", "v": "1.0" } params["sign"] = generate_1688_sign(params, "your_secret")

解决了签名问题,又被 1688 特有的 “批发属性” 坑了一把。普通电商 API 返回的价格通常是单售价,而 1688 会返回阶梯价——1-10 件多少钱、10-50 件多少钱,甚至还有混批规则。有次给客户做采购系统,直接取了第一个价格字段,结果导致小批量采购时报价出错,被运营追着改了一下午。后来专门写了个阶梯价解析函数:
python
运行
def parse_wholesale_price(price_data): """解析1688阶梯价格""" try: prices = [] # 1688返回的price字段是字符串格式,需要转换 for range_price in price_data.get("price", "").split(";"): if "-" in range_price: quantity_range, price = range_price.split("-") min_qty, max_qty = quantity_range.split(":") prices.append({ "min_quantity": int(min_qty), "max_quantity": int(max_qty), "price": float(price) }) # 按起订量排序 return sorted(prices, key=lambda x: x["min_quantity"]) except Exception as e: print(f"价格解析错误: {e}") return [] # 示例调用 raw_price = {"price": "1:10:99;10:50:89;50:0:79"} # 1-10件99元,10-50件89元,50件以上79元 parsed_prices = parse_wholesale_price(raw_price)

python实例点击获取key和秘钥
"description": { "fields": { "bigPromotionBanner": { "bannerJumpUrl": "https://shop7586850002vz1.1688.com/page/activity.htm?offerId=724783106302#promotion", "bannerUrl": "", "hasBigPromotion": false }, "detailUrl": "https://itemcdn.tmall.com/1688offer/icoss2932620515500292f66bc2481d", "label": "详情描述", "uiType": "od_product_description" }, "id": "description", "meta": { "scriptFileName": "pcOfferDetailDscDetailViewcomposer" }, "position": "body", "tag": "description", "type": "od_product_description" }, "discountCoupon": { "fields": { "bgColor": "#ff0e31", "buttonName": "领券", "couponInfoList": [ { "buttonName": "领券", "displayType": "coupon", "extraInfo": { "$ref": "$.result.data.discountCoupon.fields.promotionModel.promotionList[0].extraInfo" }, "name": "优惠券", "promotionItems": [ { "actionName": "立即领取", "applied": false, "applyDisplayInfo": "仅限新客户领取", "availablePeriod": "有效期:2025.08.02 00:00:00-2025.08.31 23:59:59", "canApply": true, "couponId": 7567749995, "couponType": 0, "couponTypeName": "店铺新宝专属", "detail": "满2元减1元", "displayContent": "1", "extendDetail": "", "label": "满2减1券", "onlySupportMobile": false, "sellerId": 2215803758622, "showDiscountFee": true, "startTime": "Sat Aug 02 00:00:00 CST 2025", "summary": "满2元减1元" } ], "summary": "满2元减1元", "type": "COUPON", "uiType": "COUPON" } ], "couponList": [ { "couponContent": "满2减1券", "couponType": "COUPON" } ], "label": "折扣优惠", "linkUrl": "https://cybert.m.1688.com/43ohz283.html?sceneName=chimera_16527", "offerId": 724783106302, "pageName": "Page_GetCoupon", "promotionModel": { "buttonName": "领券", "promotionList": [ { "buttonName": "领券", "displayType": "coupon", "extraInfo": { "uiType": "COUPON" }, "name": "优惠券", "promotionItems": [ { "actionName": "立即领取", "applied": false, "applyDisplayInfo": "仅限新客户领取", "availablePeriod": "有效期:2025.08.02 00:00:00-2025.08.31 23:59:59", "canApply": true, "couponId": 7567749995, "couponType": 0, "couponTypeName": "店铺新宝专属", "detail": "满2元减1元", "displayContent": "1", "extendDetail": "", "label": "满2减1券", "onlySupportMobile": false, "sellerId": 2215803758622, "showDiscountFee": true, "startTime": "Sat Aug 02 00:00:00 CST 2025", "summary": "满2元减1元" } ], "summary": "满2元减1元", "type": "COUPON", "uiType": "COUPON" } ] }, "style": { "arrowsImg": "https://img.alicdn.com/tfs/TB19FQtP4D1gK0jSZFsXXbldVXa-26-44.png", "textColor": "#FF4000" }, "trackInfo": [], "uiType": "od_discount_coupon" }, "id": "discountCoupon", "meta": { "scriptFileName": "pcOfferDetailDscPromotionViewcomposer" }, "position": "body", "tag": "discountCoupon", "type": "od_discount_coupon"

1688 的库存数据也很有特色,很多商家支持 “预售” 和 “现货” 混合模式,API 返回的库存字段会区分stock(现货)和book_count(预售)。有次做库存监控系统,只抓取了stock字段,导致预售商品显示 “无货”,被客户投诉到老板那里。痛定思痛后,写了个库存整合函数:
python
运行
def parse_stock(stock_data): """整合1688现货与预售库存""" try: # 现货库存 spot_stock = int(stock_data.get("stock", 0)) # 预售库存(部分商家可能不返回) pre_stock = int(stock_data.get("book_count", 0)) # 总可售库存 total_stock = spot_stock + pre_stock return { "spot_stock": spot_stock, "pre_stock": pre_stock, "total_stock": total_stock, "is_pre_sale": pre_stock > 0 } except Exception as e: print(f"库存解析错误: {e}") return {"total_stock": 0}

调用频率限制也是个大麻烦。1688 对免费开发者的限流很严格,每分钟最多 20 次请求,超过就会触发429错误。有次做批量商品采集,没控制好节奏,直接被封了 3 小时接口权限。后来用队列加定时任务实现了平滑调用:
python
运行
import time from queue import Queue from threading import Thread class APICaller: def __init__(self, max_calls_per_minute=20): self.queue = Queue() self.max_calls = max_calls_per_minute self.running = False self.thread = Thread(target=self._process_queue) def start(self): self.running = True self.thread.start() def stop(self): self.running = False self.thread.join() def add_task(self, func, *args, **kwargs): self.queue.put((func, args, kwargs)) def _process_queue(self): while self.running: if not self.queue.empty(): func, args, kwargs = self.queue.get() try: func(*args, **kwargs) finally: self.queue.task_done() # 控制频率:每分钟最多max_calls次 time.sleep(60 / self.max_calls) else: time.sleep(1) # 使用示例 caller = APICaller(max_calls_per_minute=20) caller.start() # 添加100个任务 for item_id in range(100): caller.add_task(fetch_product_detail, item_id) caller.queue.join() caller.stop()

这些年和 1688API 打交道,最大的感悟就是:批发场景的特殊性决定了它的数据结构比零售平台复杂得多。从阶梯价格到混合库存,从起订量到混批规则,每一个字段都藏着业务逻辑。
?审核编辑 黄宇
-
接口
+关注
关注
33文章
9101浏览量
154366 -
API
+关注
关注
2文章
1738浏览量
64628
发布评论请先 登录
抖音电商 API 接口:抖音平台电商活动热度实时监测

抖音电商 API 接口:开启抖音小店直播带货数据新洞察

电商 API 接口:多平台商品评论分析的利器

评论