Java 集成 速卖通开发.
一、申请成为开发者
申请入口:http://isvhz.aliexpress.com/isv/index.htm
说明文档:http://activities.aliexpress.com/open/applyisv.php、http://gw.api.alibaba.com/dev/doc/intl/sys_join.htm?ns=aliexpress.open
二、获得店铺授权并获得临时code临牌(两分钟有效)
网址链接:http://gw.api.alibaba.com/dev/tools/app_signature.html
输入店铺信息后,速卖通就会返回给你临时Token
三、用临时Token获取授权Token和refresh_token
参考网址:http://gw.api.alibaba.com/dev/doc/intl/sys_auth.htm?ns=aliexpress.open
备注 :临时令牌code只有两分钟的有效时间,access_token 有10个小时的有效时间,refresh_token 有半年的有效时间,所以呢,超过了两分钟,以上的接口就不能用了哦!那要怎么办呢?总不能我每次用的时候都走一遍授权吧?当然不用咯,可以用refresh_token去获取access_token (具体的接口内容就在以上文档的下面,可以自己去看哦,就不细讲了)。这里不禁还是要问:半年授权一次也很让人头疼啊!不要急。当 refresh_token 在30天内就要过期的时候,可以重新刷新时间呢(接口内容也在那个文档下面哦,至于refresh_token_timeout 到期时间接口里就有哦)
四、Java SDK 开发
说明:官网的SDK实在不想吐槽了,不知道是那个开发团队整的,根本没法使。我去Github上整了一套,自己搞了下、
这位哥们已经写的很详细了,大家仔细看下就行,最后附上我获得签名认证过程的代码,我是在hybris上开发的,所以可能有点不一样,不过核心内容都一样,主要是参考那个哥们的......
- AliExpressTypeModel aliExpressTypeModel = orderService.queryAliExpressTypeByCode("12345678");
- if (aliExpressTypeModel!=null) {
- String host = "gw.api.alibaba.com";
- String redirect_uri = "http://authhz.alibaba.com/auth/authCode.htm";
- Map<String, String> params1 = new HashMap<>();
- params1.put("client_id", aliExpressTypeModel.getAppKey());
- params1.put("redirect_uri", redirect_uri);
- params1.put("client_secret", aliExpressTypeModel.getAppSecret());
- params1.put("code", aliExpressTypeModel.getOneCode());
- String getTokenResult = AuthService.getToken(host, params1, true);
- if (getTokenResult == null) {
- LOG.info("临时令牌超过两分钟已失效......");
- //临时令牌已失效,用refresh_token去获取access_token
- params1.put("refresh_token", aliExpressTypeModel.getRefreshToken());
- String refreshTokenResult = AuthService.refreshToken(host, params1);
- if (refreshTokenResult == null) {
- LOG.info("长时令牌超过半年已失效,请重新授权并执行脚本导入......");
- } else {
- JSONObject refreshJsonObject = JSONObject.parseObject(refreshTokenResult);
- LOG.info("获取到的授权令牌是:" + refreshJsonObject.get("access_token").toString());
- aliExpressTypeModel.setAccessToken(refreshJsonObject.get("access_token").toString());
- modelService.save(aliExpressTypeModel);
- //如果refresh_token只有30天的有效期了,则刷新refresh_token、
- String refreshokenimeout = aliExpressTypeModel.getRefreshokenimeout();
- if (refreshokenimeout != null) {
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSSZ");
- TimeZone utcZone = TimeZone.getTimeZone("UTC");
- simpleDateFormat.setTimeZone(utcZone);
- try {
- Date date = simpleDateFormat.parse(refreshokenimeout);
- Date now = new Date();
- int days = (int) ((date.getTime() - now.getTime()) / (1000 * 3600 * 24));
- if (days < 30) {
- params1.put("refresh_token", aliExpressTypeModel.getRefreshToken());
- params1.put("access_token", aliExpressTypeModel.getAccessToken());
- String postponeToken = AuthService.postponeToken(host, params1);
- JSONObject postponeTokenObject = JSONObject.parseObject(postponeToken);
- aliExpressTypeModel.setRefreshToken(postponeTokenObject.get("refresh_token").toString());
- aliExpressTypeModel.setRefreshokenimeout(postponeTokenObject.get("refresh_token_timeout").toString());
- modelService.save(aliExpressTypeModel);
- }
- } catch (ParseException e) {
- e.printStackTrace();
- }
- }
- return refreshJsonObject.get("access_token").toString();
- }
- } else {
- JSONObject codeJsonObject = JSON.parseObject(getTokenResult);
- LOG.info("获取到的授权令牌是:" + codeJsonObject.get("access_token").toString());
- aliExpressTypeModel.setRefreshToken(codeJsonObject.get("refresh_token").toString());
- aliExpressTypeModel.setAccessToken(codeJsonObject.get("access_token").toString());
- aliExpressTypeModel.setRefreshokenimeout(codeJsonObject.get("refresh_token_timeout").toString());
- modelService.save(aliExpressTypeModel);
- return codeJsonObject.get("access_token").toString();
- }
- }
- return null;
Java 集成 速卖通开发.的更多相关文章
- Java 集成速卖通开发.
一.申请成为开发者 申请入口:http://isvhz.aliexpress.com/isv/index.htm 说明文档:http://activities.aliexpress.com/open/ ...
- 外贸开发,用java调用速卖通api第一步,token的获取。
第一步 定义速卖通api的常量 public String client_id; public String client_key; public String site; 第二步 获取登 ...
- 速卖通API开发步骤
http://gw.api.alibaba.com/dev/doc/intl/sys_auth.htm?ns=aliexpress.open#concept 关键字段说明 1.appKey和appSe ...
- 速卖通AE平台+聚石塔+奇门 完整教程V2
公司是跨境电商,在阿里马马的速卖通平台上开有店铺,并且基于速卖通开放平台,自主研发了ERP系统,居今已有3年多的时间了,一直很稳定. 今年初,速卖通AE开放平台改版,并入淘宝开放平台中,我们的麻烦就开 ...
- 速卖通api--获取商品信息
<? $productId = 'xxxx';//你的产品id $access_token = 'xxxxx';//你的授权码 $appSecret = 'xxxx';/ ...
- 速卖通api--发起授权
<? $reqURL_onLine = "https://gw.api.alibaba.com/openapi/http/1/system.oauth2/getToken/494739 ...
- 使用速卖通开放平台云API调用菜鸟组件实现云打印
公司是跨境电商,使用速卖通平台卖玩具,我们自己研发的ERP是基于速卖通开放平台API,实现订单的发货提交,打印面单等功能 近期公司要求使用菜鸟组件云打印,去平台里看下,有这个API,如下图所示 实现也 ...
- 速卖通---发布商品aeopAeProductPropertys这个字段值报07004013的错误
由于文档的说明很少,导致里面改填写那些值都是靠自己推敲出来,当然可以根据他们的错误提示了研究,他们的错误提示也给出了相关的帮助了, 例如通过categoryid的200000001获取到"i ...
- 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA
开发环境搭建好之后,还需要一个集成开发环境也就是IDE来进行编程.这里推荐的IDE是IDEA,那个老掉牙的Eclipse还是先放一边吧,(手动滑稽). IDEA的下载地址:http://www.jet ...
随机推荐
- Fielddata is disabled on text fields by default. Set fielddata=true on [gender] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memor
ES进行如下聚合操作时,会报如题所示错误: ➜ Downloads curl -XPOST 'localhost:9200/bank/_search?pretty' -d ' { "size ...
- 自己动手写Redis客户端(C#实现)4 - 整数回复
整数回复 整数回复就是一个以 ":" 开头, CRLF 结尾的字符串表示的整数. 比如说, ":0\r\n" 和 ":1000\r\n" 都 ...
- 微信公众号批量爬取java版
最近需要爬取微信公众号的文章信息.在网上找了找发现微信公众号爬取的难点在于公众号文章链接在pc端是打不开的,要用微信的自带浏览器(拿到微信客户端补充的参数,才可以在其它平台打开),这就给爬虫程序造成很 ...
- java基础回顾(2)
java中只有两种类型:基础类型.引用类型 8中基本类型:byte short int long float double char boolean,其中byte类型取值范围[-2^7~2^7-1] ...
- Serializable 都这么牛逼了,Parcelable 还要你何用?
一些闲聊 距离上一篇文章似乎又是很久了,看起来也没有很多反馈,催更就更不用说了.哈哈,放弃了. 话说最近公司在招聘一批至少 5 年开发经验的 Android 开发工程师,我也是忙开了花,激动得不行呀. ...
- java版Web Socket,实现消息推送
# web socket是什么? WebSocket协议是基于TCP的一种新的网络协议. 它实现了浏览器与服务器全双工(full-duplex)通信,允许服务器主动发送信息给客户端. ## 用途 实时 ...
- 【转】three.js详解之入门篇
原文链接:https://www.cnblogs.com/shawn-xie/archive/2012/08/16/2642553.html 开场白 webGL可以让我们在canvas上实现3D效 ...
- C++PRIMER 阅读笔记 第三章
本章主要介绍 string vector 和 bitset, 不能贪多,现在本文主要介绍 string 与 vector 头文件中最好不要使用namespace std, 因为头文件会直接被预处理器放 ...
- 项目实战6—Mysql实现企业级日志管理、备份与恢复实战
Mysql实现企业级日志管理.备份与恢复实战 环境背景:随着业务的发展,公司业务和规模不断扩大,网站积累了大量的用户信息和数据,对于一家互联网公司来说,用户和业务数据是根基.一旦公司的数据错乱或者丢失 ...
- RabbitMQ安装步骤
给centos安装epel yum 源 # rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.r ...