[特殊字符]《京东宙斯迁移公告解读:老接口 360buy.ware.get→ jingdong.ware.read.get平滑切换(附Python源码)》 《京东宙斯迁移公告解读老接口360buy.ware.get→jingdong.ware.read.get平滑切换附Python源码》京东早期商品查询接口曾用360buy.ware.getmethod值jingdong.ware.get现在官方统一推荐jingdong.ware.read.get新版只读商品读取接口权限更清晰、支持SKU快照字段。老接口逐步下线切新接口只需改 method 微调 fields签名/网关/AccessToken 完全不变。一、老 vs 新接口对照项目老接口(逐步下线)新接口(推荐)Method​jingdong.ware.get/360buy.ware.get✅jingdong.ware.read.get网关​https://api.jd.com/routerjson同不变签名算法​MD5(AppSecretKV_ASCIIAppSecret) 秒级timestamp完全相同不需改必传参数​wareId/fields同wareId/fields建议补充skus_json返回结构​{jingdong_ware_get_response:{ware:{...}}}{jingdong_ware_read_get_response:{ware:{...}}}权限申请​老权限入口应用→接口权限→申请jingdong.ware.read.getSKU库存可见​需 seller token同传 seller AccessToken 可看stockNumin skus_json✅结论代码中只改method字符串 fields补全skus_json,stock_num其余Client / 签名 / 网关 / token一行不动即可平滑迁移。二、Python老接口 vs 新接口调用对比 兼容封装# jd_ware_migration.py 京东商品接口迁移演示 old: jingdong.ware.get → new: jingdong.ware.read.get 同一个 JdClient 复用仅 method fields 不同 import hashlib import json import requests import time from typing import Dict, Optional 封装好API供应商demo urlhttps://console.open.onebound.cn/console/?iLex # ─────────── JOS Client (内联与你之前用的一致) ─────────── class JdClient: GW https://api.jd.com/routerjson def __init__(self, ak, ask): self.ak, self.ask ak, ask def _sign(self, p: Dict) - str: filt sorted((k, v) for k, v in p.items() if v is not None and str(v).strip() ! and k ! sign) qs .join(f{k}{v} for k, v in filt) return hashlib.md5(f{self.ask}{qs}{self.ask}.encode() ).hexdigest().upper() def _call(self, method: str, biz: Dict, token: str None) - Dict: p { app_key: self.ak, method: method, timestamp: str(int(time.time())), # ← 秒级 format: json, v: 2.0, sign_method: md5, 360buy_param_json: json.dumps(biz, ensure_asciiFalse, separators(,, :)) } if token: p[access_token] token p[sign] self._sign(p) r requests.post(self.GW, datap, timeout15) r.raise_for_status() d r.json() resp_key method.replace(., _) _response if resp_key not in d: for k in d: if k.endswith(_response): resp_key k break data d.get(resp_key, d) if error_response in str(data): err d.get(resp_key, {}).get(error_response) or d.get(error_response) if err: raise Exception(fJOS [{err.get(code)}]: f{err.get(zh_desc) or err.get(en_desc)}) raise Exception(fJOS err: {d}) return data # ─── 老接口(不推荐, 仅作对比) ─── def get_ware_old(self, ware_id: str, fields: str None, token: str None) - Dict: fields fields or ware_id,title,price,jd_price,stock_num,skus_json,image_path return self._call( jingdong.ware.get, # ← 老 method {wareId: ware_id, fields: fields}, token ).get(ware, {}) # ─── ✅ 新接口(推荐迁移目标) ─── def get_ware_new(self, ware_id: str, fields: str None, token: str None) - Dict: fields fields or ( ware_id,title,brand_name,cid,category_name, price,jd_price,market_price,stock_num, skus_json,image_path,desc,outer_id ) return self._call( jingdong.ware.read.get, # ← 新 method {wareId: ware_id, fields: fields}, token ).get(ware, {}) 封装好API供应商demo urlhttps://console.open.onebound.cn/console/?iLex # # 使用示例 # if __name__ __main__: cli JdClient(YOUR_JD_APP_KEY, YOUR_JD_APP_SECRET) WARE_ID 100012345678 # ← 替换真实 wareId SELLER_TOKEN None # 查自己店铺SKU库存传卖家AccessToken try: # ★ 迁移后只用这一行 ★ ware cli.get_ware_new(WARE_ID, tokenSELLER_TOKEN) print(✅ [新接口] 商品标题:, ware.get(title)) print( 京东价:, ware.get(jd_price)) print( SPU库存:, ware.get(stock_num)) # skus_json 解析 import json as _json skus_raw ware.get(skus_json) or if skus_raw: skus _json.loads(skus_raw) print(f SKU数:{len(skus)}) for s in skus[:2]: print(f skuId:{s.get(skuId)} 价:{s.get(jdPrice)} f库:{s.get(stockNum)} 商家码:{s.get(outerId,)}) print(\n→ 迁移完成仅需改 methodjingdong.ware.read.get fields补skus_json) except Exception as e: print(❌, e) print(→ 确认: AppKey/Secret正确、接口 jingdong.ware.read.get 已申请、wareId有效)三、迁移 Checklist照着做应用后台申请新权限​→ 接口权限 → 勾选jingdong.ware.read.get→ 提交通常即时生效代码改动- method jingdong.ware.get method jingdong.ware.read.get - fields ware_id,title,price fields ware_id,title,price,jd_price,stock_num,skus_json,image_pathwareId参数名不变驼峰同老接口回归测试沙箱调通签名 ✓生产比对新旧返回字段一致性标题/价格/SKU数应一致自家店铺查 SKU 库存需传access_token同旧逻辑下线老调用确认所有环境切新 method 后删除get_ware_old()分支四、避坑坑现象解决新接口返回 403未申请jingdong.ware.read.get应用→接口权限→申请skus_json空公开查询别人商品 / 未传 token查自己店铺商品须传卖家 AccessToken​老代码wareId写成ware_id部分SDK自动映射推荐用wareId(首字母大写)与文档保持一致返回结构 key 变jingdong_ware_get_response→jingdong_ware_read_get_response解析用.get(ware)不依赖外层 keytimestamp毫秒Invalid TimestampJOS用秒级​int(time.time())五、面试/方案一句话京东商品查询老接口jingdong.ware.get迁jingdong.ware.read.get只改 method 字符串 fields 补skus_json,stock_num网关/签名/AccessToken 完全不变应用需申请新接口权限返回值结构外层key变但内层ware节点字段一致解析取.get(ware)即兼容。需要我补京东订单增量同步(jingdong.pop.order.search) APScheduler断点续跑​ 或京东库存快照定时校正脚本​ 吗

相关新闻

最新新闻

STM32CubeIDE 一站式开发环境:从零安装到首个工程调试全指南

STM32CubeIDE 一站式开发环境:从零安装到首个工程调试全指南

如果你是一名刚刚接触 STM32 开发的工程师或学生,面对 Keil、IAR、STM32CubeIDE 等众多开发工具,是否感到无从下手?如果你已经习惯了某种开发环境,是否又在纠结是否有必要切换到 STM32 官方主推的这款 IDE?又或者&…

2026/8/25 18:24:58
Ubuntu 22.04 裸机安装全攻略:从驱动兼容到系统优化

Ubuntu 22.04 裸机安装全攻略:从驱动兼容到系统优化

1. 项目概述:为什么选择裸机安装Ubuntu?如果你正在看这篇内容,大概率是厌倦了虚拟机里Ubuntu的卡顿,或者想彻底告别Windows,又或者新买了一块固态硬盘想体验纯粹的Linux开发环境。没错,从虚拟机到物理机&am…

2026/8/25 18:24:58
Matplotlib核心架构与面向对象绘图:从Figure/Axes到高级定制

Matplotlib核心架构与面向对象绘图:从Figure/Axes到高级定制

1. 项目概述:为什么你需要认真认识Matplotlib?如果你刚开始用Python处理数据,或者已经写过几行print()和循环,那么迟早会遇到一个场景:你有一堆数字,但不知道怎么把它们变成一张能让人看懂的图。这时候&…

2026/8/25 18:24:58
AI求职工具:多平台自动投递与智能匹配技术解析

AI求职工具:多平台自动投递与智能匹配技术解析

1. 项目背景与核心价值这个标题描述了一款面向求职者的AI工具,能够自动同步投递11个主流招聘平台,并通过智能算法吸引HR主动联系。在当前竞争激烈的就业市场中,这种工具解决了三个核心痛点:信息孤岛问题:求职者通常需要…

2026/8/25 18:24:58
Python自动化批量导入TXT单词到有道词典生词本

Python自动化批量导入TXT单词到有道词典生词本

1. 项目概述:从零散文本到高效词汇管理手头攒了一堆单词,全在txt文件里躺着,想系统学习却无从下手?手动一个个添加到词典生词本里,效率低到让人抓狂。这几乎是每个语言学习者和技术文档查阅者都遇到过的问题。无论是从…

2026/8/25 18:24:58
前端招聘现状与技术学习优先级分析

前端招聘现状与技术学习优先级分析

1. 从面试官视角看前端招聘现状最近帮朋友公司面了几轮前端,最大的感受是:这个行业里真正懂技术的人可能比想象中少得多。有个候选人简历写着"精通Vue3响应式原理",结果连effect和track的关系都说不清楚;另一个号称&quo…

2026/8/25 18:19:58