Upload
mcgeek
View
1.137
Download
4
Embed Size (px)
Citation preview
淘宝平台使用 REST 协议,与编程语言无关。所以只要能够封装一个符合 top 规范的
url 做一次 http 请求就可以取得淘宝的数据。
调用入口
正式环境:http://gw.api.taobao.com/router/rest
沙箱环境:http://gw.sandbox.taobao.com/router/rest
注:淘宝沙箱测试环境是淘宝开放平台(TOP)提供给独立软件开发商的测试环境。沙
箱环境模拟线上真实的淘宝环境,淘宝商家可以在沙箱环境中完全仿真测试 TOP 接口
的功能;沙箱测试环境地址:http://www.tbsandbox.com/
系统参数介绍
名称 类型 是否必需 描述
method string Y API 接口名称
session string 可选 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
签名
根据参数名称将你的所有请求参数按照字母先后顺序排序:key + value .... key + value
value 对除签名和图片外的所有请求参数按 key 做的升序排列, value 无需编码。
例如:将 foo=1,bar=2,baz=3 排序为 bar=2,baz=3,foo=1
参数名和参数值链接后,得到拼装字符串 bar2baz3foo1
1 算法
系统同时支持 MD5 和 HMAC 两种加密方式
i. md5:将 secretcode 同时拼接到参数字符串头、尾部进行 md5 加密,再转化成大写,
格式 是:byte2hex (md5(secretkey1value1key2value2...secret))。
ii. hmac:采用 hmac 的 md5 方式,secret code 只在头部的签名后,再转化成大写,格式 是:
byte2hex (hmac(key1value1key2value2..., secret))。
注:hex 为自定义方法,JAVA 中 MD5 是对字节数组加密,加密结果是 16 字节,我们需要
的是 32 位的大写字符串。
2 实例
调用 API:taobao.item.get,使用系统默认 MD5 为例,因为各语言语法不一致,以下实例只体现
逻辑,使用 appkey=test appsecret=test
输入参数为:
method=taobao.item.get
timestamp=2010-06-20 17:51:30
format=xml
session=194227da7a2f0e577b999300bbfaa4a070c04
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=测试帐号
session=194227da7a2f0e577b999300bbfaa4a070c04
sign_method=md5
timestamp=2010-06-20 17:51:30
v=2.0
生成sign
拼装字符串:连接参数名与参数值,并在首尾加上app_secret(这里假设appsecret=test)值:
testapp_keytestfieldsdescformatxmlmethodtaobao.item.getnum_iid5159315527nick
测试帐号
session194227da7a2f0e577b999300bbfaa4a070c04sign_methodmd5timestamp201
0-06-20 17:51:30v2.0test
得到32位大写MD5值: 4216F8C43B501B889A823BB9E2797EEF
发送 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=hz0799&session=194227da7a2f0e57
7b999300bbfaa4a070c04&sign=4216F8C43B501B889A823BB9E2797EEF
×tamp=2010-06-20+17%3A51%3A30&v=2.0
注意事项
所有的请求和响应数据编码皆为 utf-8 格式,url 里的所有参数值请做 urlencode 编码。如果
请求的 Content-Type 是 application/x-www-form-urlencoded, http body 里的所有参数值
也做 urlencode 编码;如果是 multipart/form-data 格式,每个表单字段的参数值无需编码,
但每个表单字段的 charset 部分需要指定为 utf-8