淘寶接口 TopAPi(轉)


本文轉自delphi盒子:http://www.2ccc.com/article.asp?articleid=6121 感謝作者

廢話先不說,
先用D2007寫一個Demo,

演示一下調用淘寶的接口,讓大家心里有個數,

很簡單,新建一個工程,拖一個IDHttp,Button和Memo到窗體上去

 

然后在這個Button的OnClick事件中寫入如下代碼:

[delphi] view plaincopy
procedureTfrmMain.btnCallTopAPIClick(Sender: TObject);  
var  
 AHttpRequestURL:String;  
 AHttpReponseContent:TMemoryStream;  
begin  
 AHttpReponseContent:=TMemoryStream.Create;  
  try  
   IdHTTP1.ReadTimeout:=0;  
   IdHTTP1.AllowCookies:=True;  
   IdHTTP1.ProxyParams.BasicAuthentication:=False;  
   IdHTTP1.ProxyParams.ProxyPort:=0;  
   IdHTTP1.Request.ContentLength:=-1;  
   IdHTTP1.Request.ContentRangeEnd:=0;  
   IdHTTP1.Request.ContentRangeStart:=0;  
   IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';  
   IdHTTP1.Request.Accept:='text/html, */*';  
   IdHTTP1.Request.BasicAuthentication:=False;  
   IdHTTP1.Request.UserAgent:='Mozilla/3.0 (compatible; Indy Library)';  
   IdHTTP1.HTTPOptions:=[hoForceEncodeParams];  
   
   AHttpRequestURL:='http://gw.api.tbsandbox.com/router/rest?'  
          +'sign=5029C3055D51555112B60B33000122D5'  
          +'×tamp=2011-07-01+13%3A52%3A03'  
          +'&v=2.0'  
          +'&app_key=test'  
          +'&method=taobao.user.get'  
          +'&partner_id=top-apitools'  
          +'&format=json'  
          +'&nick=%E5%95%86%E5%AE%B6%E6%B5%8B%E8%AF%95%E5%B8%90%E5%8F%B717'  
          +'&fields=nick,location.state,location.city';  
   
   IdHTTP1.Get(AHttpRequestURL,AHttpReponseContent);  
   AHttpReponseContent.Position:=0;  
   Self.Memo1.Lines.LoadFromStream(AHttpReponseContent);  
 finally  
   AHttpReponseContent.Free;  
 end;  
end;  
然后保存,按F9運行,

點擊按鈕之后的結果如下:



如上圖所示,Memo中的字符串就是調用淘寶接口所返回的結果字符串:

{"error_response":{"code":25,"msg":"Invalidsignature"}

我來解釋下這一段Json格式的字符串的意思:

error_response表示調用淘寶API出錯了

"code":25表示出錯代碼是25

"msg":"Invalidsignature"表示出錯的消息是無效的簽名

好了,這個Demo就算結束了,

調用淘寶API的過程就是先准備好HTTP請求的URL,

然后向服務器發送請求,

獲取服務器返回的結果。






基本上各類開放平台現成的SDK都是沒有Delphi語言的。

所以,一般遇到開放平台的接口開發,難免會有些心慌哈。

不過,只要仔細看官方的API文檔(這是重點哈),

以及參考其他語言的SDK源代碼,仔細的研究,花費些許心思與精力,

就會弄出個所以然。

像我去年搞新浪微博開放平台的接口時,參考的就是.NET的代碼。





我在這里只是大致講一下淘寶接口的開發步驟,

適合剛接觸淘寶接口開發的新人,

因為剛開始學習新的東西總會有些茫然,無從下手。

先提一下淘寶開放平台的首頁地址:

http://open.taobao.com/index.htm

首頁(圖):



淘寶開放平台的官方文檔中心地址:

http://open.taobao.com/doc/index.htm?spm=0.0.0.5.oluaZ6
你在文檔中心可以找到你所需要的資料

文檔中心(圖):



那下面,我開講嘍!




一、創建應用

要想使用淘寶接口,必須得創建一個淘寶應用,

我舉一個我自己的淘寶應用作為例子:


應用的圖標:圖標隨便,我用的是本人的頭像,哈哈

應用的名稱:DelphiTaoBaoAPI

應用的標簽:在線訂購應用

應用的AppKey:21235727

應用的流量:5000次/天


應用的標簽是一個很重要的概念,

應用標簽的官方文檔地址:

http://open.taobao.com/doc/detail.htm?id=101125

應用的標簽指定了應用的功能類型以及所具有的權限

有以下幾種類型(圖):


我在這里介紹一下各個應用標簽的功能介紹:

1.在線訂購應用:為賣家提供店鋪后台管理/營銷工具,在線訂購應用實現賣家管理需求,解決店鋪管理/營銷遇到的各種問題,包括批量處理工具、績效管理類、店鋪營銷等。

 2.店鋪模塊應用:嵌入到賣家店鋪前台的模塊,店鋪模塊應用主要用於提升買家購物體驗。

3.阿里旺旺插件:基於旺旺賣家版的拓展工具,阿里旺旺插件能有效幫助賣家提升效率,便於管理和操作訂單,會員,營銷等。

4.服務商后台系統:為大型賣家提供大型店鋪后台管理系統,如CRM,ERP等;或者您作為托管服務商,希望自主研發產品給自己店鋪及托管店鋪使用

5.質檢品控應用:作為第三方質檢機構/公司在線提供質檢報告審核、商品質檢、驗廠等品控服務

6.站內買家應用:在應用中心,為淘寶站內買家提供生活類服務、導購工具和游戲等

7.無線買家應用:為無線端買家提供商品導購服務

8.網站接入:為淘寶站外買家提供商品導購服務,包括淘客網站、B2C外店、海外代購等網站類應用

9.商家后台系統:具有開發能力的商家,希望自主開發工具/軟件/系統,用於自身店鋪經營所用

10.不具備開發能力的商家:不具備開發能力,希望使用第三方軟件


創建一個新應用的官方文檔地址:

http://open.taobao.com/doc/detail.htm?id=66

好了,接下來,我們開始創建應用了

1. 打開淘寶開放平台的首頁地址:http://open.taobao.com/index.htm,點擊加入開放平台,或者點擊開發者中心。


2.使用淘寶賬戶登錄,淘寶賬戶需要通過實名認證


3. 填寫基本信息


4. 提交后成為開放平台的開發者

5.在個人的淘寶網開放平台首頁地址:http://my.open.taobao.com/isv/index.htm中點擊創建新應用按鈕


6.填寫應用名稱,選擇應用標簽


7.查看應用的appkey和appsecret,填寫應用詳情


8.點擊保存,可以進行安全掃描,掃描完成后沒有高危漏洞才能申請上線



9.查看應用列表


10.應用管理界面說明

 


二、調用淘寶接口(TopAPI)

淘寶API支持的調用方法有兩種,分別是:

1.Http調用方式

2.Https免簽名調用方式

其實這兩種方法的區別就在於驗證方式,

第一種方法使用類似於OAUTH 1.0的驗證

第二種使用OAUTH 2.0的驗證

在這里我講的是Http調用方式

Http調用方式的官方文檔地址:

http://open.taobao.com/doc/detail.htm?spm=0.0.0.30.vH5kTk&id=111


我在這里再講一下淘寶的應用運行環境介紹

TOP提供給ISV(獨立軟件開發商)三種測試環境:沙箱環境,正式環境,線上環境

1.沙箱環境

沙箱環境是淘寶開放平台(TOP)提供給獨立軟件開發商(ISV)的測試環境。數據完全獨立,大部分API已經部署到該環境中供ISV進行API的功能測試,對與APP的調用量無限制,但獲取大批量數據時,超時率會較線上環境更高。

沙箱環境調用接口提交地址:http://gw.api.tbsandbox.com/router/rest
沙箱容器地址:http://container.api.tbsandbox.com/container

2.正式測試環境

淘寶正式測試環境是淘寶開放平台(TOP)提供給獨立軟件開發商(ISV)的線上試運行環境。正式測試環境下的數據均是線上的真實淘寶數據。ISV可以在正式測試環境下測試TOP接口的功能,但受到接口調用次數及權限的限制,即一個應用的調用頻率為5000次/天,並且根據應用標簽不同,能調用的接口也不同,但是所有API文檔中標識為開放的V均可以調用。

容器地址:http://container.open.taobao.com/container

調用接口提交地址:http://gw.api.taobao.com/router/rest

3. 線上環境

淘寶線上環境是ISV開發完成之后正式上線或上架運行使用的環境。線上環境下接口調用的數據是真實的淘寶數據,根據應用標簽不同,每個應用將受到接口調用次數及流量的限制。

容器地址:http://container.open.taobao.com/container

調用接口提交地址:http://gw.api.taobao.com/router/rest


好了,接下來我講調用API中最關鍵的一步了,

就是准備好所要調用API的請求URL

我以在沙箱環境中調用taobao.user.get接口來舉例

taobao.user.get這個接口的作用是得到用戶的信息,

這個API的官方文檔的地址是:

http://api.taobao.com/apidoc/api.htm?spm=0.0.0.184.NKWt50#categoryId:1-apiId:1


要調用這個接口,需要的系統級別輸入參數有:

系統級別輸入參數是調用每個API都需要的參數
method:API接口名稱。

session:TOP分配給用戶的SessionKey,需要通過用戶登陸授權獲取。

(有些接口不需要這個參數,比如taobao.user.get這個接口,如果調用接口的時候沒有加入這個參數,那么返回用戶的基本的公開信息,如果加入了這個參數,那么返回用戶的所有信息,包括隱私的信息)

timestamp:時間戳,格式為YYYY-MM-dd HH:MM:SS,例如:2008-01-25 20:23:30。淘寶API服務端允許客戶端請求時間誤差為10分鍾。

format:可選,指定響應格式。默認xml(表示不傳入format參數的時候,接口調用默認返回xml格式的字符串),目前支持格式為xml,json。

app_key:TOP分配給應用的AppKey。

v:API協議版本,可選值:2.0。

sign:API輸入參數簽名結果

sign_method:參數的加密方法選擇,可選值是:md5,hmac。


下面這兩個參數是taobao.user.get這個接口的應用級輸入參數(每個API的應用級輸入參數不同):

fields:需返回的字段列表。可選值:User結構體中的所有字段;以半角逗號(,)分隔。需要用戶授權才能獲取用戶對應的uid和user_id。User結構體的文檔地址:http://api.taobao.com/apidoc/api.htm?spm=0.0.0.184.NKWt50#categoryId:1-apiId:1

nick:可選,用戶昵稱。


以上的這些參數除了sign,其他都是直接可以得到的

所以,需要着重講一下如何得到這個sign參數

sign參數值的算法為:

根據參數名稱將你的所有請求參數按照字母先后順序排序:key + value .... key + value

對除簽名和圖片外的所有請求參數按key做的升序排列, value無需編碼。

例如:將foo=1,bar=2,baz=3 排序為bar=2,baz=3,foo=1

參數名和參數值鏈接后,得到拼裝字符串bar2baz3foo1

淘寶支持MD5和HMAC兩種加密方式

md5:將secretcode(secretcode為應用的AppSecret)同時拼接到參數字符串頭、尾部進行md5加密后,再轉化成大寫,格式是:byte2hex(md5(secretkey1value1key2value2...secret))。

hmac:采用hmac的md5方式,secretcode(secretcode為應用的AppSecret)只在頭部的簽名后再轉化成大寫,格式 是:byte2hex (hmac(key1value1key2value2...,secret))。

例如:

輸入參數為:

      method=taobao.user.get

      timestamp=2011-07-0113:52:03

      format=json

      app_key=test

      v=2.0

      fields=nick,location.state,location.city

      nick=商家測試帳號17

      sign_method=md5

按照參數名稱升序排列:

      app_key=test

      fields=nick,location.state,location.city

      format=xml

      method=taobao.user.get

      nick=商家測試帳號17

      sign_method=md5

      timestamp=2011-07-0113:52:03

      v=2.0


拼裝字符串:

連接參數名與參數值,並在首尾加上secretcode(secretcode為應用的AppSecret)(這里假設appsecret=test)值:

testapp_keytestfieldsnick,location.state,location.cityformatxmlmethodtaobao.user.getnick商家測試帳號17sign_methodmd5timestamp2011-07-0113:52:03v2.0test


生成簽名:

32位大寫MD5值->5029C3055D51555112B60B33000122D5


拼裝URL: 

將所有參數值轉換為UTF-8編碼,然后拼裝,通過瀏覽器訪問該地址,即成功調用一次接口

http://gw.api.tbsandbox.com/router/rest?sign=5029C3055D51555112B60B33000122D5×tamp=2011-07-01+13%3A52%3A03&v=2.0&app_key=test&method=taobao.user.get&partner_id=top-apitools&format=xml&nick=%E5%95%86%E5%AE%B6%E6%B5%8B%E8%AF%95%E5%B8%90%E5%8F%B717&fields=nick,location.state,location.city


注意事項:

1.所有的請求和響應數據編碼皆為utf-8格式,url里的所有參數值請做urlencode編碼。如果請求的Content-Type是 application/x-www-form-urlencoded, http body里的所有參數值也做urlencode編碼;如果是multipart/form-data格式,每個表單字段的參數值無需編碼,但每個表單字段 的charset部分需要指定為utf-8

2.商品等公開信息查詢類API建議用get請求,交易等隱私信息查詢和修改類API建議用post請求

 


三、使用接口
Delphi版本淘寶接口我已經放在Google上了,下載地址:

http://code.google.com/p/delphiopenapi/downloads/list

用到的第三方控件有Json的superobject,Zip的VCLUnZip和Http通信的Indy控件。

1.要使用淘寶接口,需要准備淘寶應用的AppKey,AppSecret,以及回調URL

示例如下:


2.獲取用戶授權

用戶使用你的應用,需要對應用進行授權,你的應用才能操作用戶的淘寶數據,像獲取交易列表,商品列表,上下架商品,評價交易等

大部分淘寶的接口使用時需要用戶授權

先將網頁定位到淘寶網針對本應用的授權地址,需要用戶輸入用戶名和密碼


然后淘寶網列出了當前應用的權限,操作范圍,像讀取用戶信息,讀取三個月內的交易記錄


3.接口使用說明

調用我控件中尚未實現的淘寶接口,我寫了一個通用的方法,

為TTaoBaoManager.APIClient(TTaoBaoAPIClient類)

的CustomExecuteAPI方法

[delphi] view plaincopy
//自定義調用API  
function CustomExecuteAPI(const AAPIMethod:String;  
          const AParamNames:array of String;  
          const AParamValues:array of Variant;  
          const AFormat:TCallAPIFormat;  
          const ANeedSessionParam:Boolean;  
          const AHttpRequestMethod:TCallAPIHttpRequestMethod;  
          var AHttpResponse:String  
          ):Boolean;  
參數AAPIMethod為接口名稱:如taobao.user.get
參數AParamNames為參數名列表:如fields

參數AParamValues為參數值列表:如nick,location.state,location.city

參數AFormat為響應格式:若為Json時,返回字符串為Json格式的,若為Xml時,返回字符串為Xml格式

參數ANeedSessionParam為是否需要授權:如taobao.user.get這個接口,獲取用戶的所有信息時,需要用戶授權

參數AHttpRequestMethod為Http的Get方法

參數AHttpResponse為接口返回的字符串

執行之后,大家可以自己解析返回的字符串來獲取所需要的數據



4.接口功能示例

獲取出售中的商品列表,以及單個商品的詳細信息


獲取三個月內的交易記錄,每個交易的詳細信息,交易增量(交易更新,比如新增了一筆交易,修改了交易狀態等),評價交易






我就講到這里了,如果有講的不對請指正,有講的不好,請指正

有不夠詳細,我指正,有想到不足的,我有空會加上去。

聯系我:Q452330643


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM