VVIC(搜款网)是中国知名的服装批发市场平台,提供丰富的服装货源和供应链服务。其商品 API 允许开发者通过编程方式获取平台上的商品数据,用于电商系统集成、数据分析、选品工具开发等场景。以下是针对 VVIC 商品 API 的深度解析和使用指南:
一、API 概述与权限获取
- API 接入流程
注册开发者账号:访问开放平台注册并完成实名认证
创建应用:在开发者后台创建应用,获取AppKey和AppSecret
申请 API 权限:提交 API 使用申请,审核通过后获得调用权限
获取 AccessToken:通过授权流程获取访问令牌,用于 API 调用 - 认证方式
OAuth 2.0:主要认证方式,支持authorization_code和client_credentials模式
签名认证:部分接口需要对请求参数进行签名验证
二、核心 API 接口 - 商品搜索 API (/api/item/search)
功能:根据关键词搜索商品
参数:
keyword:搜索关键词(必选)
page:页码(默认 1)
pageSize:每页数量(默认 20,最大 100)
sortType:排序方式(price_asc/price_desc/sale_count 等)
categoryId:分类 ID
minPrice/maxPrice:价格区间 - 商品详情 API (/api/item/detail)
功能:获取单个商品详细信息
参数:
itemId:商品 ID(必选)
fields:返回字段列表(可选,如 title,price,images 等) - 商品分类 API (/api/category/list)
功能:获取商品分类树
参数:
parentId:父分类 ID(默认 0,获取一级分类)
三、API 调用示例
以下是使用 Python 实现 VVIC 商品 API 调用的示例代码:
python
运行
import requests
import hashlib
import time
import json
class VVICAPI:
def init(self, app_key, app_secret, access_token=None):
"""初始化VVIC API客户端"""
self.app_key = app_key
self.app_secret = app_secret
self.access_token = access_token
self.base_url = "https://api.vvic.com"
def generate_sign(self, params):
"""生成API签名"""
# 1. 参数排序
sorted_params = sorted(params.items(), key=lambda x: x[0])
# 2. 拼接字符串
sign_str = self.app_secret
for k, v in sorted_params:
sign_str += f"{k}{v}"
sign_str += self.app_secret
# 3. MD5加密
return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
def get_access_token(self, grant_type="client_credentials"):
"""获取访问令牌"""
url = f"{self.base_url}/oauth2/token"
params = {
"app_key": self.app_key,
"app_secret": self.app_secret,
"grant_type": grant_type
}
response = requests.post(url, data=params)
return response.json()
def search_items(self, keyword, page=1, page_size=20, sort_type="default"):
"""搜索商品"""
if not self.access_token:
token_info = self.get_access_token()
self.access_token = token_info.get("access_token")
url = f"{self.base_url}/api/item/search"
timestamp = int(time.time() * 1000)
params = {
"app_key": self.app_key,
"timestamp": timestamp,
"access_token": self.access_token,
"keyword": keyword,
"page": page,
"page_size": page_size,
"sort_type": sort_type
}
# 生成签名
params["sign"] = self.generate_sign(params)
response = requests.get(url, params=params)
return response.json()
def get_item_detail(self, item_id, fields=None):
"""获取商品详情"""
if not self.access_token:
token_info = self.get_access_token()
self.access_token = token_info.get("access_token")
url = f"{self.base_url}/api/item/detail"
timestamp = int(time.time() * 1000)
params = {
"app_key": self.app_key,
"timestamp": timestamp,
"access_token": self.access_token,
"item_id": item_id
}
if fields:
params["fields"] = fields
# 生成签名
params["sign"] = self.generate_sign(params)
response = requests.get(url, params=params)
return response.json()
使用示例
if name == "main":
# 替换为你的AppKey和AppSecret
app_key = "你的AppKey"
app_secret = "你的AppSecret"
# 初始化API客户端
api = VVICAPI(app_key, app_secret)
# 1. 搜索商品
search_result = api.search_items("连衣裙", page=1, page_size=10, sort_type="price_asc")
print(f"搜索结果: {len(search_result.get('data', {}).get('items', []))}个商品")
# 2. 获取商品详情
if search_result.get('data', {}).get('items'):
first_item_id = search_result['data']['items'][0]['item_id']
item_detail = api.get_item_detail(first_item_id)
print(f"商品详情: {item_detail.get('data', {}).get('title')}")
四、API 响应数据结构
- 商品搜索响应示例
json
{
"code": 200,
"message": "成功",
"data": {
"total": 1258,
"page": 1,
"page_size": 10,
"items": [
{
},"item_id": "1000001", "title": "2025夏季新款连衣裙", "price": "129.00", "original_price": "199.00", "sale_count": 1234, "images": [ "https://img.vvic.com/1000001_1.jpg", "https://img.vvic.com/1000001_2.jpg" ], "shop": { "shop_id": "50001", "shop_name": "时尚女装批发店", "location": "广州" }
{
}"item_id": "1000002", "title": "雪纺连衣裙 显瘦百搭", "price": "159.00", "original_price": "229.00", "sale_count": 876, "images": [ "https://img.vvic.com/1000002_1.jpg", "https://img.vvic.com/1000002_2.jpg" ], "shop": { "shop_id": "50002", "shop_name": "女装精品店", "location": "杭州" }
]
}
} - 商品详情响应示例
json
{
"code": 200,
"message": "成功",
"data": {
"item_id": "1000001",
"title": "2025夏季新款连衣裙",
"price": "129.00",
"original_price": "199.00",
"sale_count": 1234,
"description": "这款连衣裙采用优质面料...",
"images": [
"https://img.vvic.com/1000001_1.jpg",
"https://img.vvic.com/1000001_2.jpg",
"https://img.vvic.com/1000001_3.jpg"
],
"skus": [
{
},"sku_id": "1000001_1", "spec": "S/白色", "price": "129.00", "stock": 50
{
}"sku_id": "1000001_2", "spec": "M/白色", "price": "129.00", "stock": 30
],
"shop": {
"shop_id": "50001",
"shop_name": "时尚女装批发店",
"location": "广州",
"score": 4.8
},
"category": {
"category_id": "2001",
"category_name": "连衣裙"
}
}
}
五、关键参数与使用技巧 - 常用筛选参数
keyword:搜索关键词,支持模糊匹配
categoryId:商品分类 ID,可通过分类 API 获取
minPrice/maxPrice:价格区间筛选
location:发货地筛选(如 "广州","杭州")
isNew:是否新品
isHot:是否热销 - 分页处理
page:页码,从 1 开始
pageSize:每页数量,建议不超过 50 以保证性能
total:总结果数,用于计算总页数 - 性能优化
批量请求:部分接口支持批量获取商品信息,减少请求次数
缓存机制:对热门商品或变化不频繁的数据设置缓存
异步处理:使用 asyncio/aiohttp 实现并发请求,提高处理效率
六、常见问题与解决方案 - 签名错误
原因:参数排序错误、时间戳偏差、编码问题
解决方案:
确保参数按字典序排序
同步服务器时间(误差不超过 30 秒)
使用 UTF-8 编码处理所有参数 - 权限不足
原因:未申请 API 权限或权限过期
解决方案:
在开发者后台检查并申请相应 API 权限
刷新 AccessToken - 频率限制
默认限制:新应用通常限制为 1000 次 / 天
解决方案:
控制请求频率,避免短时间内大量请求
联系 VVIC 开放平台申请提升 API 调用配额
七、应用场景
电商选品工具:分析商品销量、价格和评价,辅助选品决策
价格监控系统:实时跟踪商品价格变动,及时调整销售策略
供应链管理:集成商品库存数据,优化采购和库存管理
跨境电商平台:将 VVIC 商品数据同步到跨境电商平台,实现一键铺货
数据分析平台:聚合多平台商品数据,进行市场趋势分析
通过 VVIC 商品 API,开发者可以构建功能丰富的电商工具和应用。在实际开发中,建议根据业务需求合理选择 API 接口,注意数据处理和性能优化,并遵守 VVIC 开放平台的使用规范。