一、参数配置错误(最高频原因)
1. 核心参数缺失或无效
现象:返回错误码
2002(商品不存在)、400(参数错误)常见场景:
未传
itemId(商品 ID)或shopId(店铺 ID),或参数拼写错误(如写成itemid/shopid,微店部分接口区分大小写);itemId/shopId格式错误(如商品 ID 为纯数字,却传入字符串含特殊字符;店铺 ID 多为 8-10 位数字,传入过长 / 过短值);商品已下架 / 删除,或
itemId对应商品不属于当前shopId(如用 A 店铺 ID 调用 B 店铺商品)。排查:
从微店商品页 URL 重新提取有效 ID(PC 端 URL:
https://weidian.com/item.html?itemID=xxx,xxx为itemId;店铺 URL:https://weidian.com/?userid=xxx,xxx为shopId);直接访问商品 URL,确认商品是否正常上架。
2. 时间戳 / 随机数参数异常
现象:返回错误码
3003(签名无效)、400(请求过期)常见场景:
timestamp(时间戳)与微店服务器时间误差超过 5 分钟(微店签名校验时间严格,防止重放攻击);nonce(随机数)重复使用(同一nonce+timestamp组合仅允许一次有效请求)。排查:
确保服务器时间同步(开启 NTP 时间同步),
timestamp用当前秒级 / 毫秒级时间戳(按微店文档要求);每次请求生成唯一
nonce(如 10 位随机整数),避免重复。
3. 分页 / 筛选参数超出限制
现象:返回空数据、
400(参数无效)常见场景:
批量调用
item/list接口时,pageSize超过微店限制(通常单页最大 20 条,传入 50/100 条);pageNo(页码)超出实际页数(如仅 3 页数据,却请求第 10 页)。排查:按微店文档限制设置分页参数,先请求第 1 页确认总页数后再批量调用。
二、身份认证失败(签名 / 密钥问题)
1. 签名生成错误
现象:返回错误码
3003(签名无效)、401(未授权)常见场景:
未按微店签名规则拼接参数(如顺序错误:需按
appkey+timestamp+nonce+secret拼接,而非随机顺序);签名算法错误(微店多采用 MD5 加密,部分接口用 HMAC-SHA1,却误用 SHA256 等其他算法);
签名串拼接时遗漏参数(如未包含
timestamp或nonce),或字符串大小写错误(如appkey小写拼接,实际为大写)。排查:
对照微店官方签名文档,重新校验签名生成流程(可打印拼接后的签名串,确认无遗漏 / 错误);
用官方提供的签名测试工具(若有)验证签名正确性。
2. 密钥 / APP 信息错误
现象:返回错误码
3001(appkey 无效)、3003(签名无效)常见场景:
误用测试环境
appkey/appsecret调用正式环境接口,或反之;appkey已过期、被禁用(如应用未通过审核、违规被平台冻结);密钥泄露后未及时重置,导致签名校验失败。
排查:
在微店开放平台 “应用管理” 中确认
appkey/appsecret状态正常(未禁用、未过期);测试 / 正式环境密钥严格区分,上线后禁用测试密钥。
三、权限与合规问题
1. 接口权限未开通
现象:返回错误码
1001(权限不足)、403(禁止访问)常见场景:
应用未申请商品详情相关权限(如
item/detail、item/spec接口),仅开通了订单、用户等无关权限;个人开发者申请了企业级权限(如批量获取商品接口仅对企业开发者开放);
权限申请已提交,但未通过微店平台审核(审核周期 1-3 个工作日)。
排查:
登录微店开放平台,在 “应用 - 接口权限” 中确认目标接口已开通(状态为 “已授权”);
若为个人开发者,检查接口是否支持个人账号调用(参考微店接口文档的 “权限要求”)。
2. 调用频率超限
现象:返回错误码
4001(调用频率超限)、503(服务暂时不可用)常见场景:
短时间内高频调用(微店对个人开发者默认限制约 10 次 / 分钟,企业开发者 30 次 / 分钟,无明确文档说明,属于隐性限制);
批量采集时未加延迟,匀速高频请求被平台识别为滥用。
排查:
查看接口返回的响应头(如
X-RateLimit-Remaining),确认剩余调用次数;批量调用时添加 1-3 秒随机延迟(
time.sleep(random.uniform(1,3))),超限后暂停 5-10 分钟再重试。
3. 违规调用触发风控
现象:返回错误码
403(禁止访问)、接口无响应或返回空白常见场景:
采集非公开商品数据(如商家设置 “仅好友可见” 的商品);
用于商业滥用(如批量爬取他人商品数据转售、恶意比价),被平台风控系统拦截;
同一 IP / 账号短期内调用多个不同
shopId的商品,触发异常行为检测。排查:
确认采集的商品为公开可访问状态(直接访问商品 URL 无需登录即可查看);
检查调用场景是否符合微店《API 使用协议》,避免违规用途。
四、网络环境问题
1. 网络不通或超时
现象:请求超时(
timeout)、无法连接服务器(ConnectionRefused)常见场景:
服务器网络未放行微店 API 域名(
api.weidian.com、weidian.com),被防火墙拦截;跨境网络、弱网环境导致请求延迟过高(超时时间设置过短,如 5 秒内未响应);
本地网络 IP 被微店封禁(因之前高频违规调用)。
排查:
用
ping api.weidian.com、telnet api.weidian.com 443测试网络连通性;更换网络环境(如切换手机热点)或使用高匿代理 IP,测试是否能正常调用;
延长请求超时时间(设置为 10-15 秒),添加重试机制(最多 3 次,重试间隔逐步延长)。
2. 未使用 HTTPS 协议
现象:返回错误码
400(协议错误)、500(服务器内部错误)常见场景:调用时使用
http://api.weidian.com(明文传输),微店 API 强制要求 HTTPS 加密传输。排查:将请求 URL 改为
https://api.weidian.com,确保启用 SSL 证书校验(禁用verify=False,避免中间人攻击)。
五、接口自身问题
1. 接口版本更新或参数变更
现象:原本正常的调用突然失败,返回
400(参数错误)、404(接口不存在)常见场景:
微店更新 API 版本(如从 v1 升级到 v2),旧接口被废弃,未及时适配新接口地址 / 参数;
接口返回字段结构变更(如价格字段从
price改为currentPrice),导致解析失败,但调用本身已成功(需区分 “调用失败” 和 “解析失败”)。排查:
查看微店开放平台的 “接口更新日志”,确认目标接口是否有版本变更;
直接打印接口原始响应(
response.text),对比文档确认参数 / 返回结构是否匹配。
2. 微店服务器故障
现象:所有调用均返回
500(服务器内部错误)、503(服务不可用),或接口无响应常见场景:微店平台维护、服务器宕机(概率较低,属于偶发情况)。
排查:
访问微店开放平台官网,查看是否有 “系统维护公告”;
用浏览器直接访问 API 地址(拼接参数后),确认是否返回正常 JSON 格式响应。
六、快速排查流程(按优先级)
校验核心参数:确认
itemId/shopId有效、商品已上架;验证签名与密钥:重新生成签名,确认
appkey/appsecret有效、环境匹配;检查权限与频率:确认接口已开通,调用频率未超限;
测试网络连通性:用 HTTPS 协议、更换 IP / 网络环境测试;
查看原始响应:打印
response.status_code和response.text,根据错误码精准定位(微店错误码多为明确提示)。
常见错误码与对应原因速查表
| 错误码 | 核心原因 | 排查重点 |
|---|---|---|
| 1001 | 权限不足 | 接口未开通、个人账号调用企业权限 |
| 2002 | 商品不存在 | itemId 无效、商品下架 / 删除、shopId 不匹配 |
| 3001 | appkey 无效 | 密钥过期、禁用、环境混用(测试 / 正式) |
| 3003 | 签名无效 | 签名规则错误、参数遗漏、时间戳 /nonce 异常 |
| 4001 | 调用频率超限 | 高频调用未加延迟,超过平台隐性限制 |
| 400 | 参数错误 | 参数拼写错误、格式无效、缺失必填项 |
| 403 | 禁止访问 | 违规调用、IP 被封禁、非公开商品数据 |
| 500/503 | 服务器问题 | 微店系统维护、服务器故障(偶发) |
| 超时 | 网络问题 | 防火墙拦截、IP 封禁、网络延迟过高 |