淘宝网Open API 入门教程

[未经本人许可 严禁转载]

淘宝网的Open API开放将近一年了,越来越多的人(包括已工作的和在校的大学生)都在使用淘宝的Open API,有不少ISV应用已上架盈利了。我也使用淘宝的Open Api也大半年了。不过了,由于阿里软件的文档比较的乱,让很多初学者分不清头绪(注:淘宝网的Open API是开放在阿里软件的一个平台上,是什么服务集群平台吧)。当然了,在中国,能够将自己的服务资源开放出来给第三方使用,特别是淘宝网这种大型商业网站来说,阿里巴巴的这种分享精神和开放的胸怀还是令人佩服的。因此在使用Open API过程中,我们如果觉得资料不是很充分,也不要过多的抱怨,开放的同时意味着责任。呵呵!

在这了,趁端午节放假,将我使用淘宝Open api的心得分享出来,先写一篇简单的入门教程,也算是分享和开放吧。

通过阅读阿里软件提供的文档,我们对如何调用淘宝的Open API有了基本的了解。阿里软件Open API平台即服务集成平台SIP相关的文档链接如下(在使用SIP平台上的Open API还是先要了解下该平台的相关策略如安全策略,访问控制策略等):

http://wiki.isv.alisoft.com/index.php/%E6%9C%8D%E5%8A%A1%E9%9B%86%E6%88%90%E5%B9%B3%E5%8F%B0

服务集群平台就不多唠叨了,去上面的文档地址去看看。我就简要的讲讲就我所知道的一些值得注意的地方:

1.                  淘宝的Open API每分钟访问的次数是有限制的,好像是400次/分钟,即一个应用访问任何一个淘宝的API,一分钟内最多只能访问400次;

2.                  在次数方面,除了上面的控制外,还有日访问次数控制。如果你的应用是上架的,则日访问量没有限制;如果你的应用没有上架,那么一天之内,你访问淘宝的Open API的次数累计起来不能超过1000次。不要有意见哦,人家的资源也是有限的,而且还是免费的。

3.                  服务集成平台的api的安全级别分为四类:无安全策略校验;签名校验;用户授权校验(包含签名校验);可选用户授权校验(包含签名校验)。淘宝的Open API大多都是需要用户授权的。所谓用户授权就是应用软件在操作用户的淘宝数据时,就需要用户授权。如淘宝卖家在使用店铺管理软件维护自己的店铺时,淘宝网就需要淘宝卖家对该店铺软件进行授权,只有授权了,店铺管理软件才能操作淘宝卖家的数据。

4.                  授权除了上面所描述的外,授权还有时效性。就是授权是有期限的,现在淘宝授权一次的最大有效时效为一个小时。如果在一个小时内,没用调用任何淘宝的API,则授权过期了,需要重新授权。而对于未上架的应用,授权时效内不管有没有调用Open API,授权期限过后就需要重新授权。看来,上架的应用还是有相当大的空间优势。

其他的就不多唠叨了,还没有在阿里软件注册应用的,还得先去阿里软件平台注册一个应用,注册成功后,你会得到APP ID及CERT CODE。其中APP ID是用来标记应用,即你注册应用的ID,CERT CODE则是你应用的密钥,在做签名时用。

下面直接来个demo,感受下淘宝的Open API。我们调用交易类的taobao.trade.get为例,该api文档地址为:http://isp.alisoft.com/apidoc/api/apiIndex.html#isp_taobao-6-281 。可以知道这个api是用户授权,即需要用户授权才可以访问该用户的交易信息。

源代码如下:

package org.openapi.taobao;

import java.security.MessageDigest;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;

import java.util.TreeSet;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.NameValuePair;

import org.apache.commons.httpclient.methods.PostMethod;

public class TaobaoOpenApiDemo {

/**

* 调用淘宝的taobao.trade.get demo,

* 运行该示例时,你需要将appId,appSecret,tid

* 这三个参数替换为你自己的,就可以运行该demo

*

* 在第一次运行时 会提醒你登录淘宝进行授权,

* 授权成功后 再次运行该demo就可以获取指定交易的信息 呵呵

*

* 这只是一个简单的demo,只是为初学者提供方便

* 有了这个原型 大家就可以各显自己的神通了

*/

public static void main(String[] args) {

// 淘宝Open API平台即SIP平台的入口

String sipRequestUrl = "http://sip.alisoft.com/sip/rest";

String appId = "****"; // 在阿里软件平台注册的应用ID,请使用你自己的应用ID

String appSecret = "******"; // 注册的应用的密钥,请使用你自己应用的密钥

String taobaoApiName = "taobao.trade.get"; // 交易类api

String sessionId = "1234567";//sessionId是isv应用自己生成的字符串

//确保每个使用该应用的用户各自的sessionId各不相同

SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Map<String, String> params = new HashMap<String, String>();

params.put("sip_appkey", appId);

params.put("sip_apiname", taobaoApiName);

params.put("sip_timestamp", formater.format(new Date()));

params.put("sip_sessionid", sessionId);

params.put("fields", "seller_nick,buyer_nick,title,type,created,sid");

params.put("tid", "******"); //请设置你要查询的交易号

params.put("format", "xml");

params.put("v", "1.0");

params.put("sip_sign", getSign(appSecret, params));

String result = requestOpenApi(sipRequestUrl, params);

if (result != null && result.startsWith("sip_isp_loginurl:")) {

result = result.replaceAll("&amp;", "&");

System.out.println("打开浏览器,访问下面的URL进行用户授权,授权成功后" +

",再次运行该类就可以调用api获取交易信息");

System.out.println(result.substring("sip_isp_loginurl:".length()));

} else if (result != null)

System.out.println(result);

}

/**

* 请求淘宝Open API服务

* @param url 服务集群平台入口

* @param params 请求参数

* @return 请求结果

*/

public static String requestOpenApi(String url, Map<String, String> params) {

HttpClient client = new HttpClient();

PostMethod postMethod = new PostMethod(url);

try {

NameValuePair[] postData = new NameValuePair[params.size()];

Iterator<String> iters = params.keySet().iterator();

int i = 0;

while (iters.hasNext()) {

String key = (String) iters.next();

postData[i] = new NameValuePair(key, params.get(key).toString());

i++;

}

postMethod.setRequestBody(postData);

client.executeMethod(postMethod);

String resultCode = postMethod.getResponseHeader("sip_status")

.getValue();

if (resultCode == null || ("".equals(resultCode)))

return null;

else if ("1004".equals(resultCode))

return "sip_isp_loginurl:"

+ postMethod.getResponseHeader("sip_isp_loginurl")

.getValue();

else if (!"9999".equals(resultCode))

return resultCode

+ ":"

+ postMethod.getResponseHeader("sip_errormessage")

.getValue();

return postMethod.getResponseBodyAsString();

} catch (Exception ex) {

ex.printStackTrace();

} finally {

if (postMethod != null)

postMethod.releaseConnection();

}

return null;

}

/**

* 对所有参数进行签名

* @param secret APP ID对应的密钥

* @param params 请求中所有的参数

* @return 签名

*/

public static String getSign(String secret, Map<String, String> params) {

if (secret == null || "".equals(secret) || params == null)

throw new RuntimeException(

"secret or params is null or blank, please check...");

StringBuilder sb = new StringBuilder().append(secret);

String result = null;

try {

Set<String> sortedKeys = new TreeSet<String>();

sortedKeys.addAll(params.keySet());

for (String key : sortedKeys)

sb.append(key).append(params.get(key));

MessageDigest md = MessageDigest.getInstance("MD5");

result = byteTohex(md.digest(sb.toString().getBytes("utf-8")));

} catch (Exception e) {

throw new RuntimeException(e);

}

return result;

}

public static String byteTohex(byte[] b) {

StringBuffer sb = new StringBuffer();

String stmp = "";

for (int n = 0; n < b.length; n++) {

stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));

if (stmp.length() == 1)

sb.append("0").append(stmp);

else

sb.append(stmp);

}

return sb.toString().toUpperCase();

}

}

上面短短的100多行代码只是向初学者展示如何使用淘宝的Open API服务。从代码也可以看到,基于rest的Open Api的确使用起来相当的方便。当然,要想使用好淘宝的Open API,还得好好的阅读淘宝Open Api文档。同时,还需打开自己的思维,使用淘宝的Open Api编写出有创意的应用。早日上架,早日盈利!

如果大家有什么问题,可以回复本贴,有问必答。大家相互探讨,共同进步。呵呵!

[未经本人许可 严禁转载]

淘宝Open API入门教程相关推荐

  1. 淘宝联盟API使用教程

    API是什么? API是一种接口,提供给淘客通过输入某些信息,来输出对应的淘宝联盟提供的某些信息和某种服务的一个通道. API如何使用? 淘宝联盟的API都通过淘宝开放平台做开放输出.使用API需要分 ...

  2. 淘宝开放API菜鸟教程——根据卖家昵称获取卖家店铺ID

    做淘客,选产品是一件非常烦的事,所以自己按淘宝api的文档,并参考了几个api例子,做成了这个php类,有了这个类就可以按关键词直接获取产品列表了,真是方便呀. <?php  class tao ...

  3. 淘宝网Open API 入门教程

    淘宝网Open API 入门教程 淘宝网的Open API开放将近一年了,越来越多的人(包括已工作的和在校的大学生)都在使用淘宝的Open API,有不少ISV应用已上架盈利了.我也使用淘宝的Open ...

  4. 初学 淘宝客API 从入门到放弃

    第一步  了解 首先你得了解什么是淘宝客,淘宝客跟我们有什么关系. 贴一段百科: 淘宝客,是一种按成交计费的推广模式,也指通过推广赚取收益的一类人,淘宝客只要从淘宝客推广专区获取商品代码,任何买家(包 ...

  5. 淘宝客API网站在这两年里经历了不少次百度K站风波

    淘宝客API网站在这两年里经历了不少次百度K站风波,百度每隔一段时间都会对淘客站进行大规模整治,特别是针对淘宝客API站点的收录,每天大量网站被K或收录异常,几家欢喜几家愁.淘友网在这两年里也同广大淘 ...

  6. PHP对接淘宝客api完成APP引流优惠券

    淘宝客现在对多数人来说已经耳熟能详了,属于CPS(Cost Per Sale),一种网络广告收费标准,以实际销售产品数量来换算广告刊登金额.其他收费标准还有常见的CPC(Cost Per Click ...

  7. 按分类搜索淘宝直播接口API,淘宝直播API接口

    一.按分类搜索淘宝直播接口API,淘宝直播API接口代码对接分享 1.公共参数: 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secret Stri ...

  8. 淘宝商品评价api接口(app、h5端),淘宝评论视频API接口,淘宝评论API接口

    淘宝商品评价api接口(app.h5端),淘宝评论视频API接口,淘宝评论API接口可以通过商品id,获取商品评价信息.评价内容.买家秀图片.评论浏览量.评价视频.评价追评等页面上展示的数据均可以拿到 ...

  9. 淘宝商品评价api接口,淘宝评论视频API接口,淘宝评论API接口(app、h5端)

    淘宝商品评价api接口,淘宝评论视频API接口,淘宝评论API接口(app.h5端)可通过商品id,获取商品评价信息.评价内容.买家秀图片.评论浏览量.评价视频.评价追评等页面上展示的数据均可以拿到, ...

最新文章

  1. Horticulture Research:植物界的“投之以桃,报之以李”的合作共赢典范
  2. KB244036_PXE 客户端、DHCP 和 RIS 服务器之间的 PXE 交互过程说明
  3. robo3t 连接服务器数据库_Win7上安装 MongoDB、Robo 3T及vn.py
  4. dev控件中LookUpEdit的数据绑定问题
  5. 模拟图书管理系统的完整代码
  6. CentOS 6安装详解及PXE 安装
  7. 小车自动往返工作原理_自动气象站的工作原理介绍
  8. 使用Spring Boot开发Restful程序
  9. 【Python】http.client库的用法
  10. git push 出现 you are not allowed to upload merges 错误提示
  11. 智能优化算法应用:基于GWO优化的Renyi熵图像多阈值分割 - 附代码
  12. VUP无法打开报0xc0150002错误
  13. 2021夏令营全记录·华科计算机、中科院网络中心、中科院软件所、浙软
  14. 小学生可以学java编程吗_小学生学编程都要学习哪些内容 家长们知道吗
  15. 【Mac网络错误】-只能登陆微信,无法访问网页
  16. 安卓开发良好的习惯(想到就更新)
  17. JavaBean 是什么?JavaBeans 概念介绍
  18. linux的PXE批量高效自动装机
  19. 打工人的Linux(存储管理)
  20. 别管哪条公链了,你听过数字恐龙吗?

热门文章

  1. 手机计算机怎么打错误,极客修:手机计算器集体出错!输入这2个数字,我傻了...
  2. Mybatis常见报错
  3. 华为鸿蒙系统支持电脑么,速来围观:华为鸿蒙操作系统2.0支持的设备清单流出...
  4. FFmpeg使用GPU转码如何更改分辨率
  5. 使用SPY++查看窗口信息去分析C++客户端UI软件问题
  6. java 队列占用内存大小_Java线程池队列吃的太饱,撑着了咋整?java 队列过大导致内存溢出...
  7. RegisterHotKey的具体使用方法
  8. js 常用设计模式(1024过节礼物)
  9. 2021牛客寒假算法基础集训营5 B.比武招亲(上)
  10. 计算机主机有交流声,电脑音箱有滋滋声怎么解决