我们公司最近需要实现实时获取TOP的返利金额,在搜索过相关资料后发现TO已经有相关的API了,但这个API的调用类型跟我们平时用的不太一样,它是客户端类型的,只能在前台页面上的js进行调用。所以我们我们需要重新设计我们的API加密和调用方式。
首页TOP要求在页面的head中添加一段js
<script src="http://a.tbcdn.cn/apps/top/x/sdk.js?appkey=xxxxxxx"></script>
这个appkey是你在TOP注册后得到的。
这段js会加载TOP的API调用相关的js文件,但你如果想成功的调用API还需要往浏览器写入两个cookie,分别是cookies[:timestamp], cookies[:sign]
controller的代码是
cookies[:timestamp], cookies[:sign] = Taobao.get_web_sign
model 的代码是
def self.get_web_sign
time_str = Time.now.to_i.to_s + "000"
str = TAOBAO_SECRET + "app_key" + TAOBAO_KEY + "timestamp" + time_str + TAOBAO_SECRET
sig = OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new('md5'),TAOBAO_SECRET, str ).upcase
return time_str,sig
end
其中TAOBAO_KEY 和 TAOBAO_SECRET 就是在TOP注册得到的appkey和secret
接着是页面上的js调用
API地址:http://api.taobao.com/apidoc/api.htm?spm=0.0.0.43.hH1zTF&path=cid:38-apiId:21418