0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

电商API接口实录对接:1688混批价格函数处理

邓林 ? 来源:jf_63013664 ? 作者:jf_63013664 ? 2025-08-22 10:09 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

?

在电商开发这行摸爬滚打快十年,对接过不少平台的 API,但若说最让人头疼的,1688商品详情API绝对能排进前三。从批发场景特有的数据结构,到接口权限的严格管控,每一步都藏着 “惊喜”。今天就把这些年踩过的坑、攒下的实战代码分享出来,给同样在 1688 开发路上挣扎的朋友搭个桥。

第一次对接 1688API 时,光是申请权限就卡了整整五天。1688 作为批发平台,对开发者资质审核格外严格,不仅要提供企业营业执照,还要详细说明用途 —— 是用于店铺管理还是第三方工具开发,甚至连预期调用量都要报备。好不容易拿到app_key和secret,签名验证又给了我个下马威。1688 的签名算法要求把所有参数按 ASCII 排序,连时间戳格式都必须是yyyy-MM-dd HH:mm:ss,差个空格都会返回400错误。那段时间对着文档反复调试,终于写出能用的签名函数:

python

运行

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")
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

解决了签名问题,又被 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)
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

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"

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

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}
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

调用频率限制也是个大麻烦。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()
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

这些年和 1688API 打交道,最大的感悟就是:批发场景的特殊性决定了它的数据结构比零售平台复杂得多。从阶梯价格到混合库存,从起订量到混批规则,每一个字段都藏着业务逻辑。

?审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    9101

    浏览量

    154366
  • API
    API
    +关注

    关注

    2

    文章

    1738

    浏览量

    64628
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    抖音 API 接口:抖音平台电活动热度实时监测

    ? 抖音作为全球领先的短视频平台,其商业务近年来蓬勃发展,吸引了众多商家和消费者。实时监测活动热度,对于商家优化营销策略、平台提升用户体验至关重要。抖音
    的头像 发表于 08-21 15:30 ?78次阅读
    抖音<b class='flag-5'>电</b><b class='flag-5'>商</b> <b class='flag-5'>API</b> <b class='flag-5'>接口</b>:抖音平台电<b class='flag-5'>商</b>活动热度实时监测

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

    ? 在数字化浪潮中,抖音小店凭借直播带货模式迅速崛起,成为品牌和商家的新战场。然而,如何从海量直播数据中提取有价值的洞察,优化销售策略?抖音
    的头像 发表于 08-20 15:20 ?149次阅读
    抖音<b class='flag-5'>电</b><b class='flag-5'>商</b> <b class='flag-5'>API</b> <b class='flag-5'>接口</b>:开启抖音小店直播带货数据新洞察

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

    ? 在当今竞争激烈的环境中,商品评论是消费者决策的关键参考。然而,手动收集和分析多个平台(如淘宝、京东、拼多多等)的评论数据耗时耗力,且容易出错。
    的头像 发表于 08-11 14:53 ?173次阅读
    <b class='flag-5'>电</b><b class='flag-5'>商</b> <b class='flag-5'>API</b> <b class='flag-5'>接口</b>:多平台商品评论分析的利器

    利用电 API 接口,轻松完成多平台价格监控

    ? 在竞争激烈的市场,价格策略直接影响销售转化率。传统人工比价耗时费力,而API
    的头像 发表于 08-11 14:35 ?533次阅读
    利用电<b class='flag-5'>商</b> <b class='flag-5'>API</b> <b class='flag-5'>接口</b>,轻松完成多平台<b class='flag-5'>价格</b>监控

    API的实时数据处理

    ? 在现代电平台中,API(应用程序接口)扮演着核心角色,它连接用户、商家和后台系统,实现数据的高效交换。随着商业务规模的扩大,实时数据处理
    的头像 发表于 07-23 15:39 ?182次阅读
    <b class='flag-5'>电</b><b class='flag-5'>商</b><b class='flag-5'>API</b>的实时数据<b class='flag-5'>处理</b>

    API速率限制的应对策略

    自动化连接不同系统,让订单生成变得轻松、快捷。本文将逐步解析API如何成为的核心工具,并展示如何用它简化订单流程。 API在订单生成中的核心作用
    的头像 发表于 07-17 14:43 ?134次阅读
    <b class='flag-5'>电</b><b class='flag-5'>商</b><b class='flag-5'>API</b>速率限制的应对策略

    API集成入门:从零开始搭建高效接口

    ? 在当今数字化时代,API(应用程序接口)集成已成为企业提升效率、实现系统互联的关键技术。无论是同步商品信息、处理订单,还是整合支付系
    的头像 发表于 07-10 14:23 ?223次阅读
    <b class='flag-5'>电</b><b class='flag-5'>商</b><b class='flag-5'>API</b>集成入门:从零开始搭建高效<b class='flag-5'>接口</b>

    抖音 API 接口和传统接口,直播数据处理谁更快?

    ? 在直播蓬勃发展的今天,数据处理速度成为平台竞争力的关键。抖音作为新兴力量,其API
    的头像 发表于 07-09 15:39 ?177次阅读
    抖音<b class='flag-5'>电</b><b class='flag-5'>商</b> <b class='flag-5'>API</b> <b class='flag-5'>接口</b>和传统<b class='flag-5'>电</b><b class='flag-5'>商</b><b class='flag-5'>接口</b>,直播数据<b class='flag-5'>处理</b>谁更快?

    拼多多 API 接口与竞品,数据抓取速度大较量

    在当今商行业,数据抓取速度是衡量平台竞争力的核心指标之一。高效的 API(应用程序接口)能显著提升数据分析、库存管理和用户个性化推荐的效率。本文将深入比较拼多多
    的头像 发表于 07-09 15:29 ?356次阅读

    淘宝 API 接口 VS 其他平台,优势究竟在哪?

    、亚马逊等)相比,淘宝 API 究竟有哪些独特优势?本文将逐步分析,帮助开发者、商家和决策者做出明智选择。 1. 淘宝
    的头像 发表于 07-09 15:11 ?215次阅读
    淘宝<b class='flag-5'>电</b><b class='flag-5'>商</b> <b class='flag-5'>API</b> <b class='flag-5'>接口</b> VS 其他平台,优势究竟在哪?

    淘宝 vs 京东 API 接口,谁才是数据王者?

    ? 在当今数字化时代,API(应用程序编程接口)是企业获取和分析数据的关键工具。淘宝和京东作为中国两大
    的头像 发表于 07-08 15:51 ?297次阅读
    淘宝 vs 京东<b class='flag-5'>电</b><b class='flag-5'>商</b> <b class='flag-5'>API</b> <b class='flag-5'>接口</b>,谁才是数据王者?

    小红书 API 接口,种草效果评估实用秘籍!

    ? ?在当今社交电时代,小红书作为种草内容的核心平台,其 API 接口为企业提供了强大的数据驱动能力。种草效果评估不仅关乎营销 ROI
    的头像 发表于 07-07 14:27 ?271次阅读
    小红书<b class='flag-5'>电</b><b class='flag-5'>商</b> <b class='flag-5'>API</b> <b class='flag-5'>接口</b>,种草效果评估实用秘籍!

    拼多多 API 接口:竞品分析的绝佳工具!

    解析拼多多 API 如何助力企业高效开展竞品分析,确保内容真实可靠,基于行业实践。 什么是拼多多 API 接口? 拼多多
    的头像 发表于 07-04 16:17 ?479次阅读
    拼多多<b class='flag-5'>电</b><b class='flag-5'>商</b> <b class='flag-5'>API</b> <b class='flag-5'>接口</b>:竞品分析的绝佳工具!

    京东 API 接口,订单管理高效解决方案!

    ? 在当今高速发展的时代,京东作为领先的平台,其 API 接口为商家和开发者提供了强大的
    的头像 发表于 07-04 16:12 ?263次阅读
    京东<b class='flag-5'>电</b><b class='flag-5'>商</b> <b class='flag-5'>API</b> <b class='flag-5'>接口</b>,订单管理高效解决方案!

    淘宝 API 接口,商品价格监控必备神器!

    ? 在当今竞争激烈的环境中,商品价格波动频繁且迅速。商家需要实时跟踪竞品价格,消费者则渴望抓住最优促销时机。淘宝
    的头像 发表于 07-04 16:04 ?292次阅读
    淘宝<b class='flag-5'>电</b><b class='flag-5'>商</b> <b class='flag-5'>API</b> <b class='flag-5'>接口</b>,商品<b class='flag-5'>价格</b>监控必备神器!