×

微店 item_get 接口对接全攻略:从入门到精通

万邦科技Lex 万邦科技Lex 发表于2025-10-07 10:58:12 浏览204 评论0

抢沙发发表评论

        注册账号免费测试微店API数据接口

微店开放平台的item_get接口是获取商品详情的核心工具,适用于个人店铺、电商平台、供应链系统等场景,可获取商品基本信息、价格、库存、规格等关键数据。本文将全面讲解该接口的对接流程、使用技巧和最佳实践,帮助开发者快速掌握从入门到精通的全流程掌握。

一、接口基础认知

  1. 核心功能item_get接口用于获取微店商品的详细信息,包括但不限于:
    • 基本信息:商品 ID、标题、描述、主图及图片列表

    • 价格信息:原价、售价、会员价、促销价

    • 库存信息:总库存、规格库存、库存预警值

    • 交易信息:销量、好评率、上架时间

    • 规格信息:颜色、尺寸等多规格组合及对应价格 / 库存

  2. 接口端点
    • 正式环境:https://api.weidian.com/item/get

    • 沙箱环境:https://sandbox.api.weidian.com/item/get(测试使用)

  3. 请求方式:仅支持 HTTP POST
  4. 数据格式:请求与响应均为 JSON 格式
  5. 认证方式:采用appkey+signature签名认证,无需令牌(Token)

二、对接前置准备

  1. 开发者账号注册访问微店开放平台注册账号,完成实名认证(个人或企业均可,企业账号权限更高)。
  2. 创建应用与获取密钥
    • 在开放平台控制台创建应用,填写应用名称、用途等信息

    • 应用创建后,在「应用详情」中获取appkeyappsecretappsecret需严格保密,不可泄露)

  3. 权限申请
    • 微店接口权限默认开放基础功能,item_get接口无需额外申请

    • 若需获取敏感信息(如卖家联系方式),需单独提交权限申请并通过审核

  4. 环境准备
    • 开发语言:支持 Python/Java/PHP 等任意可发起 HTTP 请求的语言

    • 测试工具:Postman 或微店开放平台提供的在线接口调试工具

    • 依赖库:Python 需安装requests库(pip install requests

三、接口调用流程

  1. 参数组装接口参数分为「公共参数」和「业务参数」:
    示例参数结构:

  2. {  "appkey": "your_appkey",  "timestamp": 1620000000,  "signature": "签名值",  "item_id": "12345678",  "fields": "item_id,title,price,stock" }

  3. 签名生成签名是微店接口安全验证的核心,生成步骤:
    1. 收集所有参数(除signature外),按参数名 ASCII 码升序排序

    2. 拼接为key=value&key=value格式(如appkey=xxx&item_id=123&timestamp=1620000000

    3. 尾部追加&appsecret=your_appsecret

    4. 对拼接字符串进行 MD5 加密(32 位小写),结果即为signature

  4. 发送请求
    1. 请求头需设置Content-Type: application/json

    2. 将参数以 JSON 格式放入请求体,发送 POST 请求到接口地址

  5. 响应处理解析返回的 JSON 数据,成功响应包含item字段(商品详情),错误响应包含error_codeerror_msg
  6. 四、代码实现示例(Python)

  7. 以下是调用微店item_get接口的完整代码,包含签名生成、请求发送、响应解析和错误处理:
    • 公共参数appkey(应用标识)、timestamp(时间戳,秒级)、signature(签名)

    • 业务参数item_id(商品 ID,必填)、fields(需返回的字段列表,可选)

import requests
import hashlib
import time
import json

class WeidianItemApi:
    def __init__(self, appkey, appsecret):
        self.appkey = appkey
        self.appsecret = appsecret
        self.url = "https://api.weidian.com/item/get"  # 正式环境
        # 沙箱环境:https://sandbox.api.weidian.com/item/get

    def generate_signature(self, params):
        """生成签名"""
        # 1. 按参数名ASCII升序排序
        sorted_params = sorted(params.items(), key=lambda x: x[0])
        # 2. 拼接为key=value&key=value格式
        sign_str = "&".join([f"{k}={v}" for k, v in sorted_params])
        # 3. 追加appsecret
        sign_str += f"&appsecret={self.appsecret}"
        # 4. MD5加密(32位小写)
        signature = hashlib.md5(sign_str.encode()).hexdigest()
        return signature

    def item_get(self, item_id, fields=None):
        """
        获取商品详情
        :param item_id: 商品ID
        :param fields: 需要返回的字段,多个用逗号分隔,如"item_id,title,price"
        :return: 商品详情数据
        """
        # 1. 组装基础参数
        params = {
            "appkey": self.appkey,
            "timestamp": int(time.time()),  # 秒级时间戳
            "item_id": item_id
        }
        # 2. 可选字段
        if fields:
            params["fields"] = fields

        # 3. 生成签名
        params["signature"] = self.generate_signature(params)

        try:
            # 4. 发送POST请求
            response = requests.post(
                url=self.url,
                json=params,
                headers={"Content-Type": "application/json"},
                timeout=10
            )
            response.raise_for_status()  # 触发HTTP错误(如404、500)
            result = response.json()

            # 5. 处理响应
            if result.get("errcode") == 0:
                # 成功响应
                return {
                    "success": True,
                    "data": result.get("item", {})
                }
            else:
                # 错误响应
                return {
                    "success": False,
                    "error_code": result.get("errcode"),
                    "error_msg": result.get("errmsg")
                }

        except Exception as e:
            return {
                "success": False,
                "error_msg": f"请求异常: {str(e)}"
            }

# 使用示例
if __name__ == "__main__":
    # 替换为自己的appkey和appsecret
    APPKEY = "your_appkey"
    APPSECRET = "your_appsecret"

    # 初始化API客户端
    api = WeidianItemApi(APPKEY, APPSECRET)

    # 调用接口,获取商品ID为12345678的详情
    # 指定返回字段:商品ID、标题、售价、库存、主图
    result = api.item_get(
        item_id="12345678",
        fields="item_id,title,price,stock,main_img"
    )

    if result["success"]:
        item = result["data"]
        print(f"商品ID: {item.get('item_id')}")
        print(f"商品标题: {item.get('title')}")
        print(f"售价: {item.get('price')} 元")
        print(f"库存: {item.get('stock')} 件")
        print(f"主图地址: {item.get('main_img')}")
    else:
        print(f"获取失败: {result['error_msg']} (错误码: {result.get('error_code')})")

五、参数与返回字段详解

  1. 核心参数说明
    • 基础信息:item_idtitle(标题)、desc(描述)、main_img(主图)、imgs(图片列表)

    • 价格信息:price(售价)、original_price(原价)、vip_price(会员价)

    • 库存信息:stock(总库存)、spec_stock(规格库存)

    • 交易信息:sales(销量)、rating(好评率)、create_time(上架时间)

    • item_id:商品唯一标识,可从微店商品详情页 URL 中提取(如 URL 为https://weidian.com/item.html?id=12345678,则item_id=12345678

    • fields:指定返回字段,建议按需填写(减少数据传输量),常用字段包括:

  2. 多规格商品处理若商品有多个规格(如颜色 + 尺寸),返回结果中specs字段包含规格详情:
    json
    "specs": [
      {
        "spec_id": "s1",
        "spec_name": "颜色",
        "values": [{"value_id": "v1", "value_name": "红色"}]
      },
      {
        "spec_id": "s2",
        "spec_name": "尺寸",
        "values": [{"value_id": "v2", "value_name": "M"}]
      }],"spec_skus": [
      {
        "sku_id": "123",
        "spec_ids": "v1,v2",  // 规格值组合
        "price": 99,          // 该规格售价
        "stock": 100          // 该规格库存
      }]

六、错误处理与调试

  1. 常见错误码解析
    • 10001:签名错误 → 检查签名生成逻辑、参数排序、appsecret是否正确

    • 10002appkey无效 → 确认应用是否已激活,appkey是否拼写错误

    • 20001:商品不存在 → 检查item_id是否正确,商品是否已下架

    • 20002:权限不足 → 申请对应接口权限或检查商品是否为公开可见

    • 40001:请求频率超限 → 降低调用频率(微店默认 QPS 限制为 10)

  2. 调试技巧
    • 使用微店开放平台的在线接口调试工具验证参数和签名

    • 检查timestamp是否为当前时间(误差需≤5 分钟)

    • 打印完整的请求参数和响应结果,对比文档确认格式是否正确

七、最佳实践与注意事项

  1. 性能优化
    • 按需指定fields参数,避免返回冗余数据

    • 实现本地缓存(建议缓存时间 1-5 分钟),减少接口调用次数

    • 批量获取商品详情时,采用并发控制(如线程池),但需遵守 QPS 限制

  2. 合规使用
    • 遵守《微店开放平台服务协议》,不得用于爬虫、数据倒卖等违规行为

    • 展示微店商品数据时,需明确标注来源并保留原商品链接

    • 个人信息(如卖家联系方式)需获得用户授权后才可获取和使用

  3. 稳定性保障
    • 实现接口超时重试机制(建议最多 3 次重试,间隔 1-3 秒)

    • 对返回数据进行合法性校验(如价格、库存是否为合理数值)

    • 监控接口调用成功率,异常时及时告警

通过本文的指南,开发者可以系统掌握微店item_get接口的对接方法和使用技巧。在实际应用中,应根据业务场景合理设计调用策略,平衡数据实时性与接口性能,构建稳定高效的商品信息获取功能。


群贤毕至

访客