记录对接京东宙斯API -- 发布商品
记录对接京东宙斯API -- 发布商品
- 1. SDK的问题
- 2. 提交工单, 反应不及时的问题(纯属吐槽, 勿怪!!!).
- 3. 对接同步SOP类型的商品信息API
- 3.1. 通过类目和属性类型,获取类目的属性列表,不限制等级,可以查询销售属性
- 3.2. 上传单张图片
- 3.3. 下面直接上运费模板和获取品牌的代码:
- 运费模板:
- 品牌
- 4. 修改商品.
1. SDK的问题
第一次下载的SDK用不了, JAR 里缺失的代码非常多. 连最起码的文档中的demo也无法执行. 面对这种问题, 咱也没辙, 只能去京东JOS哪里提交工单, 询问客服了!!!
2. 提交工单, 反应不及时的问题(纯属吐槽, 勿怪!!!).
当你去提交工单咨询问题的时候, 那真是时慢时快; 慢的时候能让你等半天, 快的时候基本上十五钟内基本也有回复了.
3. 对接同步SOP类型的商品信息API
1. 需求: 把本系统发布的商品同步到旗舰店内. 从而到达在本系统发布的商品不用在京东店铺进行二次发布. 2. 实际对接的状况: 1). 因为之前SDK的问题. 而导致无法使用官方Demo中案例进行请求接口. 所以帖主就在寻找其他请求的办法, 最终在文档API最下方发现了一个供开发人员测试调用接口的测试工具.
京东宙斯发布商品的API链接: 发布商品
2). 在看完文档API后, 发现要把本系统的商品同步到京东店铺内, 还真不是一件容易的事情, 最重要的一点要彼此的结构差不多, 当然你的产品在设计原型的时候知道有这个需求, 在设计原型的就会考虑到模仿京东的发布商品页面的格式(暂时就这样说吧.), 所以在设计表结构的时候, 也自然会向这个方向靠拢(ennn...废话有点多.), 但想法是好的, 现实是骨感的, 而我就遇到了很多问题.比如: 类目ID, 京东这边发布商品需要审核通过的三级类目ID(目前必须是审核通过且为三级的类目), 否则无法发布成功. 关于类目还有一点问题: 在我对接的时候, 刚好遇上京东对商品这一块的业务进行升级, 原有的三级类目升级成了四级, 但我在发布商品的时候又告诉我 "类目必须是三级", 而我传递的类目ID明明是三级的,且又不行, 还有就是返回的提示语也有问题, 我这明明是发布商品, 然后返回的提示语却是修改商品醉了, 后来去提问工单后, 才了解到京东升级了商品这一块的业务后, 需要人工手动去商家后台进行迁移类目, 等客户那边迁移好, 几天过去了, 心好累....废话过后, 接下来就是帖代码了:
3.1. 通过类目和属性类型,获取类目的属性列表,不限制等级,可以查询销售属性
PS: 我这种调用方式是因为SDK缺失的缘故, 如果不缺失的话, 还是按照官方Demo来.
/*** @Author * @Description 通过类目和属性类型,获取类目的属性列表,不限制等级,可以查询销售属性 * @Date 13:58 2019/6/18* @Param [accessToken, cid]* @Param [accessToken, 类目ID]* @return com.alibaba.fastjson.JSONObject**/public JSONObject findAttrsByCategoryIdUnlimitCate(String accessToken, Integer cid){String method = "jingdong.category.read.findAttrsByCategoryIdUnlimitCate";String timestamp = DateUtils.convertDate2String("yyyy-MM-dd HH:mm:ss", new Date());Map<String, Object> map = new HashMap<>();map.put("cid", cid);map.put("field", "attrValueList,attrGroup");// map.put("attributeType", 4); // 属性类型:1.关键属性 2.不变属性 3.可变属性 4.销售属性 目前暂时限制死.String requestParam = JSONUtils.toJsonString(map);HashMap<String, Object> params = new HashMap<>();params.put("v", V);params.put("method", method);params.put("timestamp", timestamp);params.put("app_key", APPKEY);params.put("app_secret", APPSECRET);params.put("access_token", accessToken);params.put("360buy_param_json", map);// 生成签名String sign = jdSign(params);try {String url = SERVER_URL +"?v=" + V +"&method=" + method +"&app_key=" + APPKEY +"&access_token=" + accessToken +"&360buy_param_json=" + URLEncoder.encode(requestParam, "UTF-8") +"×tamp=" + URLEncoder.encode("timestamp", "UTF-8") +"&sign=" + sign;LOGGER.warn("=============== URL: " + url);JSONObject jsonObject = HttpUtils.doGetJson(url);LOGGER.warn("===============京东API 通过类目和属性类型, 获取类目的属性列表: " + jsonObject.toString() + "=====================");return jsonObject;} catch (Exception e) {LOGGER.warn("===============京东API 通过类目和属性类型, 获取类目的属性列表!!! =====================");e.printStackTrace();}return null;}
类目API的链接: 通过类目和属性类型,获取类目的属性列表,不限制等级,可以查询销售属性
3). 商品图片的问题.想要发布商品成功, 你必须要使用京东内的图片, 也就是说: 你需要在同步商品之前就把商品图片上传到京东服务器内. 这个操作很简单, 估计大家都做过, 这里我就不多废话了.直接贴代码:
3.2. 上传单张图片
/*** @Author * @Description 上传单张图片* @Date 11:29 2019/7/17* @Param [accessToken, imageData, pictureCateId, pictureName]* @Param [accessToken, 图片二进制文件流,允许png、jpg、gif、jpeg、bmp图片格式,1M以内,* 上传到的图片分类ID,为空上传至 默认分类,* 图片名称,不超过64字节,为空默认 未命名]* @return com.alibaba.fastjson.JSONObject**/public ImgzonePictureUploadResponse pictureUpload(String accessToken, byte[] imageData, Long pictureCateId, String pictureName){try {JdClient client = new DefaultJdClient(SERVER_URL, accessToken, APPKEY, APPSECRET);ImgzonePictureUploadRequest request = new ImgzonePictureUploadRequest();request.setImageData(imageData);request.setPictureCateId(pictureCateId);request.setPictureName(pictureName);ImgzonePictureUploadResponse response = client.execute(request);LOGGER.warn("===============京东API 上传单张图片: " + JSONUtils.toJsonString(response) + "=====================");return response;} catch (Exception e) {e.printStackTrace();}return null;}
京东上传图片的API链接: 上传单张图片
4). SKU设置的问题.帖主在这里可是踩了很多坑, 因为你设置了SKU, 那必须要在添加类目的属性(即三级类目的属性值). 填写SKU属性时(saleAttrs), 有一个必要的条件: 在类目属性返回的字段中, 有一个 attributeType 字段, 只有这个字段为 4 的时候, 才可以添加进去, 而且必须要字符串数组; 当然文档上有说明. 还有一点就是现在的我也没有搞明白: 就是你设置了 saleAttrs 值时, 你也要传递 multiCateProps 值, 否则如果不传递的话, 会出现一个情况: 有时可以发布成功, 有时会失败. 头大!!(还是自己太菜了导致的, 唉....)
5). 以上四点搞好了, 基本也就差运费模板(transportId)和品牌ID(brandId)了.这里我说明一下, 在发布商品的API文档中品牌ID不是必填的, 在实际操作发现如果你不填的话, 如导致发布失败, 出现稀奇古怪的错误提示. 还有一个关联板式(templateId)的字段也是, 即使可以不填, 也填上 0L(预防万一).如果有其他大神看到了, 发现我说的是不对的, 麻烦及时告知我一下, 我马上修改过来. (新人一枚, 大家勿怪!!!)
3.3. 下面直接上运费模板和获取品牌的代码:
运费模板:
运费模板API的链接: 根据venderId获取单品模板
/*** @Author * @Description 获取京东商家的单品运费模板.* @Date 15:18 2019/6/12* @Param [accessToken]* @return com.alibaba.fastjson.JSONObject**/public JSONObject findFreightTemplateListData(String accessToken){String method = "jingdong.SkuFareTemplateService.getTemplates";String timestamp = DateUtils.convertDate2String("yyyy-MM-dd HH:mm:ss", new Date());HashMap<String, Object> params = new HashMap<>();params.put("v", V);params.put("method", method);params.put("timestamp", timestamp);params.put("app_key", APPKEY);params.put("app_secret", APPSECRET);params.put("access_token", accessToken);String sign = jdSign(params);try {String url = "https://api.jd.com/routerjson?" +"v=" + V +"&method=" + method +"&app_key=" + APPKEY +"&access_token=" + accessToken +"×tamp=" + URLEncoder.encode(timestamp, "UTF-8") +"&sign=" + sign;LOGGER.warn("=============== URL: " + url);JSONObject jsonObject = HttpUtils.doGetJson(url);LOGGER.warn("===============京东API 获取京东商家的单品运费模板: " + jsonObject.toString() + "=====================");return jsonObject;} catch (Exception e) {LOGGER.warn("===============京东API 获取京东商家的单品运费模板!!! =====================");e.printStackTrace();}return null;}
品牌
品牌API的链接: 查询商家已授权的品牌
/*** @Author * @Description 查询商家已授权的品牌* @Date 14:54 2019/7/18* @Param [accessToken]* @return java.util.List<com.jd.open.api.sdk.response.list.VenderBrandPubInfo>**/public List<VenderBrandPubInfo> venderBrandQuery(String accessToken){try {JdClient client = new DefaultJdClient(SERVER_URL, accessToken, APPKEY, APPSECRET);PopVenderCenerVenderBrandQueryRequest request = new PopVenderCenerVenderBrandQueryRequest();// request.setName("填写京东店铺内的品牌名称"); // 可以指定查询PopVenderCenerVenderBrandQueryResponse response = client.execute(request);List<VenderBrandPubInfo> brandList = response.getBrandList();LOGGER.warn("===============京东API 获取商家可用的经营分类列表: " + JSONUtils.toJsonString(response) + "=====================");return brandList;} catch (Exception e) {LOGGER.warn("===============京东API 获取商家可用的经营分类列表失败!!! =====================");e.printStackTrace();}return null;}
4. 修改商品.
修改商品的接口, 其实和发布商品的差别不大, 你既然可以成功调用发布商品的接口, 那修改商品的接口也一样可以调用成功. 只不过, 调用修改商品的接口, 需要你必须传递商品, 还有就是你修改商品信息的参数.
PS: 记录日常开发中的点点滴滴…
记录对接京东宙斯API -- 发布商品相关推荐
- php对接京东宙斯平台,利用京东联盟API获取自定义推广链接
本文将简单介绍下京东联盟.京东宙斯两个平台,以及如何利用京东宙斯平台的京东联盟API来快速获取自定义推广链接. 关于京东联盟 京东联盟(去官网看看)是一个CPS模式的营销平台,我们可以使用自己的网站放 ...
- .net Core 2.2实现京东宙斯API采用OAuth授权方式调用
1.实现对接京东接口,这里主要是写了采用Oauth授权的方式调用. 2.VS2017 使用了.net core 2.2 控制台程序,json库使用 jil(这个比较轻量级,加载数据较快,但也需要注意有 ...
- 京东开普勒php接口,PHP调用京东联盟开普勒、宙斯API模板
本篇文章介绍的内容是PHP调用京东联盟开普勒.宙斯API模板 ,现在分享给大家,有需要的朋友可以参考一下 京东开普勒的 Appkey 和 AppSecret 在这里可以看到(需要先创建应用):http ...
- 京东宙斯杯创新应用大赛 - 作品投票排名
京东宙斯杯创新应用大赛 - 作品投票排名 http://yuncode.net/appjcloudvote.html
- PHP调用京东联盟开普勒、宙斯API模板
京东开普勒的 Appkey 和 AppSecret 在这里可以看到(需要先创建应用):http://kepler.jd.com/console/app/app_list.action 授权介绍在这里: ...
- 京东宙斯php版本sdk不能用_多主机平台玩家的福音,北通宙斯T6精英版体验测评...
「链接」 熟悉枫叔的都知道,作为一个游戏圈的老油条,虽然阅游无数,但论操作还真不能以大神自居.为了便于测评游戏截图.录屏的便捷,往往主机游戏但凡推出了PC端,都会选择PC来体验.不过,这也导致很多首发 ...
- 京东宙斯杯应用大赛 推荐宝 刷票记录 有图有真相
推荐宝(id=1771) 推荐宝刷票记录:http://yuncode.net/appjcloudvote/rankRecord/1771.html 前几天看到csdn到处都是他的刷票链接,现在已经不 ...
- php京东宙斯平台授权源码,好京客云平台授权京东宙斯
好京客官网 www.haojingke.com * * * * * 注册好好京客之后第一件时间就是授权京东云平台 ![](https://box.kancloud.cn/aae59bcc36caf6c ...
- 京东宙斯平台使用方法(accesstoken,appkey,appsecret参数和SDK的获取)
1.注册成为开发者 链接:https://dev.jd.com/ 2.创建应用 3.获取appsrecet和appkey,SDK(获取) 新建应用之后在左边应用证书栏位可以查看到appkey,apps ...
最新文章
- valgrind——hisi平台valgrind
- springmvc开启事务_java面试题 一 :SpringMvc的流程
- 5130S-52S-PWR-HI 堆叠配置
- solr4.8单机部署(solr4.8+tomcat7)
- TCP,UDP学习总结
- 1075 - Incorrect table definition;there can be only one auto column and it must be defined as a key
- Spark的RDD检查点实现分析
- (寻找第K小的数amp;amp;寻找第K小的数的和)
- 问题四十八:怎么用ray tracing画superhyperboloid(超级双曲面)
- dpl直播源_上千个高清无码直播源,爽歪歪!
- 医学统计学-为什么是个医学生就都要学R语言?
- 如何使用 LumaQQ 核心 API
- 利用Java开源库把汉字转拼音(推荐OK)_爱题巴.爱技术.小川哥_百度空间
- Excel之分类汇总,定位,组合
- Qt::WA_QuitOnClose
- 交通-地铁客流量python时间序列预测
- 程序员日常照片大合集!快来大饱眼福!
- sqlserver 认证多少钱_SQLServer认证
- 2021阳城一中高考成绩查询入口,2019阳城一中录取分数线(附2019高考成绩喜报)...
- 监听pda扫描_android系统PDA扫描枪,扫描完成后自带回车,为什么回车监听第一次不起作用,手动提交一次后才能正常提交...