1688「跨境寻源通」(Cross-border Sourcing / Supply API)是1688为跨境电商卖家(亚马逊/Shopee/TikTok等)提供的专属接口集,相比普通开放平台API增加了跨境属性(HS编码、申报品名、箱规、英文标题)、代发物流模板及账期支付支持。下面给你完整的接入流程和可直接运行的Python封装。
一、 跨境寻源通与普通1688 API的区别
维度 | 普通开放平台API | 跨境寻源通(Supply) API |
|---|---|---|
适用对象 | 国内B2B采购 | 跨境电商卖家(需额外认证) |
商品字段 | 中文标题/国内规格 | +英文标题、HS Code、申报价值、箱规、原产国 |
支付方式 | 担保交易 | 支持账期(Credit)、跨境代付 |
物流 | 普通快递 | 跨境小包/海外仓发货模板 |
费用 | 基础免费 | 基础查询免费;增值功能需买「跨境资源包」 |
权限申请 | 普通应用 | 需「跨境寻源」标签应用+企业实名 |
⚠️ 前提:应用创建时选择「跨境寻源/ISV应用」并在开放平台签署《跨境数据使用协议》,否则调不通。
二、 费用模型(2026版)
项目 | 收费 | 说明 |
|---|---|---|
商品查询/详情(含跨境字段) | ✅ 免费 | supply.product.get等,受QPS限制(默认10) |
代发订单创建/同步 | ✅ 免费 | 同普通订单API |
实时库存/阶梯价(跨境增强) | ⚠️ 资源包 | 同普通API进阶包,¥980~2980/年档位 |
数据推送/选品洞察 | ⚠️ 增值包 | 按档位收费,大卖家按需 |
超量按量 | ≈¥0.005/次 | 极少触发 |
👉 结论:中小跨境卖家做商品同步+代发订单,基础免费额度够用,买资源包主要是为了提QPS和实时库存。
三、 Python封装:跨境商品查询 + 订单代发
跨境寻源通的签名、网关与普通API基本一致,区别在
method命名空间和部分业务参数。# ali1688_supply_client.py
import hashlib
import time
import requests
import urllib.parse
from typing import Dict, List, Optional
# 封装好API供应商demo url=https://console.open.onebound.cn/console/?i=Lex
class Ali1688SupplyClient:
"""
1688 跨境寻源通(Supply) API Client
网关与签名规则和标准1688 Open API一致,仅 method/业务参数不同
"""
GATEWAY = "https://gw.open.1688.com/openapi/param2/2"
def __init__(self, app_key: str, app_secret: str, access_token: str):
self.app_key = app_key
self.app_secret = app_secret
self.access_token = access_token # 跨境应用必须传登录态(session key)
# ────────────────────────────────────────
# 标准1688 MD5签名
# ────────────────────────────────────────
def _sign(self, params: Dict) -> str:
filtered = sorted((k, v) for k, v in params.items() if v is not None)
qs = ''.join(f"{k}{v}" for k, v in filtered)
raw = f"{self.app_secret}{qs}{self.app_secret}"
return hashlib.md5(raw.encode('utf-8')).hexdigest().upper()
def _call(self, method: str, biz_params: Dict) -> Dict:
api_params = {
"method": method,
"app_key": self.app_key,
"session": self.access_token,
"timestamp": str(int(time.time() * 1000)),
"format": "json",
"v": "2.0",
"sign_method": "md5",
}
api_params["param2"] = urllib.parse.quote_plus(
str(biz_params).replace("'", '"')
)
api_params["sign"] = self._sign(api_params)
resp = requests.get(self.GATEWAY, params=api_params, timeout=15)
resp.raise_for_status()
data = resp.json()
if "error_response" in data:
err = data["error_response"]
raise Exception(f"1688 Supply Error [{err.get('code')}]: {err.get('msg')}")
# 不同method返回key略有不同,统一提取
result_key = list(data.keys() - {"error_response"})[0]
return data[result_key]
# ────────────────────────────────────────
# 1. 查询跨境商品详情(含HS Code/英文标题)
# ────────────────────────────────────────
def get_cross_border_product(self, offer_id: str) -> Dict:
"""
对应 method: alibaba.supply.product.get
返回含 crossBorderInfo { hsCode, enTitle, declareUnit, originCountry ... }
"""
biz = {"offerId": offer_id}
return self._call("alibaba.supply.product.get", biz)
# ────────────────────────────────────────
# 2. 创建跨境代发订单(简化示例)
# ────────────────────────────────────────
def create_cross_order(self,
offer_id: str,
sku_id: str,
quantity: int,
consignee: Dict) -> str:
"""
consignee 示例:
{
"fullName": "Zhang San",
"mobile": "8613800138000",
"country": "US",
"province": "California",
"city": "Los Angeles",
"address": "123 Main St",
"zip": "90001"
}
"""
biz = {
"offerId": offer_id,
"quantity": quantity,
"skuId": sku_id,
"consignee": consignee,
"payType": "CREDIT", # 账期支付(需开通) 或 GUARANTEE
"crossBorder": "true" # 标记为跨境订单
}
res = self._call("alibaba.supply.trade.create", biz)
order_id = res.get("orderId")
return order_id
# ────────────────────────────────────────
# 3. 查询代发订单物流(同普通API可复用)
# ────────────────────────────────────────
def get_order_logistics(self, order_id: str) -> List[Dict]:
biz = {"orderId": order_id}
res = self._call("alibaba.logistics.trade.ship", biz)
return res.get("logisticsOrders", []) or []
# =========================================================
# 使用示例
# =========================================================
if __name__ == "__main__":
client = Ali1688SupplyClient(
app_key="YOUR_APP_KEY",
app_secret="YOUR_APP_SECRET",
access_token="YOUR_ACCESS_TOKEN" # 跨境应用需OAuth2获取
)
try:
# ① 查跨境商品(含HS编码)
prod = client.get_cross_border_product("698812345678")
cross_info = prod.get("crossBorderInfo", {})
print("英文标题:", cross_info.get("enTitle"))
print("HS Code:", cross_info.get("hsCode"))
print("申报单位:", cross_info.get("declareUnit"))
# ② 创建代发订单(示例)
# order_id = client.create_cross_order(
# offer_id="698812345678",
# sku_id="1234567890",
# quantity=5,
# consignee={...}
# )
# print("代发订单ID:", order_id)
except Exception as e:
print("❌", e)四、 关键避坑清单
- 应用类型必须选对:普通「自用型应用」调跨境接口返回
无权访问,需重建应用选「跨境寻源/ISV」。 - AccessToken必需:跨境接口涉及买家身份(账期/地址),
session参数不可省略,用OAuth2授权码换token。 - HS Code字段可能为空:部分供应商未填跨境信息,
hsCode返回null,ERP需做默认值或人工补全。 - 账期支付开通:
payType=CREDIT需先在1688卖家后台开通「信任付/账期」,否则下单报错。 - QPS限制:免费应用默认≈10/s,高频同步建议买资源包提至50~100/s,并加重试退避。
五、 对接链路(面试叙述版)
跨境ERP/选品系统 │ OAuth2 AccessToken ▼ Supply API → alibaba.supply.product.get │ └─ offerId + HS Code + EN Title + 箱规 ▼ 写入ERP商品主数据(SKU映射) │ ▼ 买家下单后 create_cross_order → 1688代发 │ ▼ logistics.trade.ship 轮询 同步物流单号 → ERP出库单
如需要,我可以补充1688 OAuth2获取AccessToken完整代码或SKU与ERP内部编码映射表设计。