记录对接京东宙斯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") +"&timestamp=" + 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 +"&timestamp=" + 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 -- 发布商品相关推荐

  1. php对接京东宙斯平台,利用京东联盟API获取自定义推广链接

    本文将简单介绍下京东联盟.京东宙斯两个平台,以及如何利用京东宙斯平台的京东联盟API来快速获取自定义推广链接. 关于京东联盟 京东联盟(去官网看看)是一个CPS模式的营销平台,我们可以使用自己的网站放 ...

  2. .net Core 2.2实现京东宙斯API采用OAuth授权方式调用

    1.实现对接京东接口,这里主要是写了采用Oauth授权的方式调用. 2.VS2017 使用了.net core 2.2 控制台程序,json库使用 jil(这个比较轻量级,加载数据较快,但也需要注意有 ...

  3. 京东开普勒php接口,PHP调用京东联盟开普勒、宙斯API模板

    本篇文章介绍的内容是PHP调用京东联盟开普勒.宙斯API模板 ,现在分享给大家,有需要的朋友可以参考一下 京东开普勒的 Appkey 和 AppSecret 在这里可以看到(需要先创建应用):http ...

  4. 京东宙斯杯创新应用大赛 - 作品投票排名

    京东宙斯杯创新应用大赛 - 作品投票排名   http://yuncode.net/appjcloudvote.html

  5. PHP调用京东联盟开普勒、宙斯API模板

    京东开普勒的 Appkey 和 AppSecret 在这里可以看到(需要先创建应用):http://kepler.jd.com/console/app/app_list.action 授权介绍在这里: ...

  6. 京东宙斯php版本sdk不能用_多主机平台玩家的福音,北通宙斯T6精英版体验测评...

    「链接」 熟悉枫叔的都知道,作为一个游戏圈的老油条,虽然阅游无数,但论操作还真不能以大神自居.为了便于测评游戏截图.录屏的便捷,往往主机游戏但凡推出了PC端,都会选择PC来体验.不过,这也导致很多首发 ...

  7. 京东宙斯杯应用大赛 推荐宝 刷票记录 有图有真相

    推荐宝(id=1771) 推荐宝刷票记录:http://yuncode.net/appjcloudvote/rankRecord/1771.html 前几天看到csdn到处都是他的刷票链接,现在已经不 ...

  8. php京东宙斯平台授权源码,好京客云平台授权京东宙斯

    好京客官网 www.haojingke.com * * * * * 注册好好京客之后第一件时间就是授权京东云平台 ![](https://box.kancloud.cn/aae59bcc36caf6c ...

  9. 京东宙斯平台使用方法(accesstoken,appkey,appsecret参数和SDK的获取)

    1.注册成为开发者 链接:https://dev.jd.com/ 2.创建应用 3.获取appsrecet和appkey,SDK(获取) 新建应用之后在左边应用证书栏位可以查看到appkey,apps ...

最新文章

  1. valgrind——hisi平台valgrind
  2. springmvc开启事务_java面试题 一 :SpringMvc的流程
  3. 5130S-52S-PWR-HI 堆叠配置
  4. solr4.8单机部署(solr4.8+tomcat7)
  5. TCP,UDP学习总结
  6. 1075 - Incorrect table definition;there can be only one auto column and it must be defined as a key
  7. Spark的RDD检查点实现分析
  8. (寻找第K小的数amp;amp;寻找第K小的数的和)
  9. 问题四十八:怎么用ray tracing画superhyperboloid(超级双曲面)
  10. dpl直播源_上千个高清无码直播源,爽歪歪!
  11. 医学统计学-为什么是个医学生就都要学R语言?
  12. 如何使用 LumaQQ 核心 API
  13. 利用Java开源库把汉字转拼音(推荐OK)_爱题巴.爱技术.小川哥_百度空间
  14. Excel之分类汇总,定位,组合
  15. Qt::WA_QuitOnClose
  16. 交通-地铁客流量python时间序列预测
  17. 程序员日常照片大合集!快来大饱眼福!
  18. sqlserver 认证多少钱_SQLServer认证
  19. 2021阳城一中高考成绩查询入口,2019阳城一中录取分数线(附2019高考成绩喜报)...
  20. 监听pda扫描_android系统PDA扫描枪,扫描完成后自带回车,为什么回车监听第一次不起作用,手动提交一次后才能正常提交...

热门文章

  1. 牛牛和DRB迷宫Ⅰ【动态规划】
  2. 逐梦高新,智赢未来,第四届顺德高新区运动嘉年华正式拉开序幕
  3. 最全面的Android资料大全
  4. 可自动调节OpenCV弹出窗口大小
  5. 中文正则字符大全集2
  6. gremlin 语法
  7. 边带娃边赚钱,昨日共计165.52
  8. Linux安全篇-iptables
  9. linux网络编程 epoll水平触发、边沿触发、反应堆模型、线程池思想
  10. 2020届秋招正式批次面试经验