天天看点

淘宝API调用方法

调用原理说明

TOP作为淘宝数据插槽,只要用户按照TOP的规范拼装一个正确的URL,通过HTTP请求到TOP,就能够拿到用户自己需要的数据。调用原理的示意图如下:

淘宝API调用方法

3.2使用方式详解

1)参数介绍

API由入参和出参(返回结果)组成,其中入参包含系统级参数和应用级参数。

系统级参数:对于每个API均一致,主要用于加密、标识用户身份、API协议版本等用途。

参数名 类型 是否必须 参数解释
method string Y API接口名称
session string N TOP分配给用户的SessionKey,如果需要访问用户隐私数据必选。
timestamp string Y 时间戳,格式为yyyy-mm-dd HH:mm:ss,例如:2008-01-25 20:23:30。淘宝API服务端允许客户端请求时间误差为10分钟(授权码10分钟有效期)。
format string N 可选,指定响应格式。默认xml,目前支持格式为xml,json
app_key string Y TOP分配给应用的AppKey
v string Y API协议版本,可选值:2.0。
sign string Y API输入参数签名结果
sign_method string Y 参数的加密方法选择,可选值是:md5,hmac

应用级参数:针对API的不同用途,一般应用级参数各不相同,详细参见API文档。

2)签名方法

调用API时,需要将所有入参以及入参值加入签名,即:系统级参数(除去sign)名称、系统级参数值、应用级参数名称、应用级参数值全部加入签名。

I.签名参数串排序

签名时,根据参数名称,将除签名(sign)和图片外所有请求参数按照字母先后顺序排序:key + value .... key + value 。

注:

1、 排序若首字母相同,则对第二个字母进行排序,以此类推。

2、value无需编码。

3、对于非必选参数,如果没有value值,也可不参与签名。

例如:将“foo=1,bar=2,baz=三” 排序为“bar=2,baz=三,foo=1”参数名和参数值链接后,得到拼装字符串bar2baz三foo1

II.签名算法

淘宝同时支持md5和hmac两种加密方式

?  md5加密方法:

选择md5加密方式,系统级参数sign_method=md5;

将注册应用时得到的密钥(AppSecret)同时拼接到参数字符串头、尾部进行md5加密,再转化成大写,

格式是:byte2hex (md5(AppSecrekey1value1key2value2... AppSecre))。

?  hmac加密方法::

选择hmac加密方式,系统级参数sign_method=hmac;

用hmac的md5方式,只需在排序后的字符串头部加入AppSecre,签名后再转化成大写,格式是:byte2hex (hmac(AppSecre key1value1key2value2...))。

注:hex为自定义方法,JAVA中md5是对字节数组加密,加密结果是16字节,我们需要的是32位的大写字符串。

III.签名实例

调用API:taobao.item.get,使用appkey=test;appsecret=test

使用系统默认md5为例,因为各语言语法不一致,以下实例只体现逻辑,输入参数为: 

系统级参数 应用级参数

method=taobao.item.get

timestamp=2010-06-20 17:51:30

format=xml

app_key=test

v=2.0

fields=desc

nick=测试帐号

num_iid= 5159315527

sign_method=md5

?  第一步:按照参数名称升序排列 

app_key=test

fields=desc

format=xml

method=taobao.item.get

num_iid= 5159315527

nick=测试帐号

sign_method=md5

timestamp=2010-06-20 17:51:30

v=2.0

?  第二步:生成sign 

拼装字符串:连接参数名与参数值,并在首尾加上app_secret(这里假设appsecret=test)值:

testapp_keytestfieldsdescformatxmlmethodtaobao.item.getnum_iid5159315527nick测试帐号sign_methodmd5timestamp2010-06-20 17:51:30v2.0test得到32位大写md5值: C759772107FB3FD90ACC76BC5831BB96

3)发送http请求

拼装URL:将所有参数值转换为UTF-8编码,然后进行拼装。

例如:

http://gw.api.taobao.com/router/rest?app_key=test&fields=desc&format=xml&method=taobao.item.get&num_iid=5159315527&nick=%E6%B5%8B%E8%AF%95%E8%B4%A6%E5%8F%B7&sign_method=md5&sign=C759772107FB3FD90ACC76BC5831BB96 &timestamp=2010-06-20+17%3A51%3A30&v=2.0

范例中,http://gw.api.taobao.com/router/rest为API调用入口。

正式环境:http://gw.api.taobao.com/router/rest

沙箱环境:http://gw.api.tbsandbox.com/router/rest

注:淘宝沙箱测试环境是淘宝开放平台(TOP)提供给独立软件开发商的测试环境。沙箱环境模拟线上真实的淘宝环境,淘宝商家可以在沙箱环境中完全仿真测试TOP接口的功能,迷你淘宝环境地址:http://mini.tbsandbox.com/

http://open.taobao.com/doc/detail.htm?spm=1.400153.313747.18&id=101207