淘宝接口 TopAPi
演示一下調(diào)用淘寶的接口,讓大家心里有個(gè)數(shù),
很簡單,新建一個(gè)工程,拖一個(gè)IDHttp,Button和Memo到窗體上去
?
然后在這個(gè)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運(yùn)行,
點(diǎn)擊按鈕之后的結(jié)果如下:
如上圖所示,Memo中的字符串就是調(diào)用淘寶接口所返回的結(jié)果字符串:
{"error_response":{"code":25,"msg":"Invalidsignature"}
我來解釋下這一段Json格式的字符串的意思:
error_response表示調(diào)用淘寶API出錯(cuò)了
"code":25表示出錯(cuò)代碼是25
"msg":"Invalidsignature"表示出錯(cuò)的消息是無效的簽名
好了,這個(gè)Demo就算結(jié)束了,
調(diào)用淘寶API的過程就是先準(zhǔn)備好HTTP請求的URL,
然后向服務(wù)器發(fā)送請求,
獲取服務(wù)器返回的結(jié)果。
基本上各類開放平臺現(xiàn)成的SDK都是沒有Delphi語言的。
所以,一般遇到開放平臺的接口開發(fā),難免會有些心慌哈。
不過,只要仔細(xì)看官方的API文檔(這是重點(diǎn)哈),
以及參考其他語言的SDK源代碼,仔細(xì)的研究,花費(fèi)些許心思與精力,
就會弄出個(gè)所以然。
像我去年搞新浪微博開放平臺的接口時(shí),參考的就是.NET的代碼。
我在這里只是大致講一下淘寶接口的開發(fā)步驟,
適合剛接觸淘寶接口開發(fā)的新人,
因?yàn)閯傞_始學(xué)習(xí)新的東西總會有些茫然,無從下手。
先提一下淘寶開放平臺的首頁地址:
http://open.taobao.com/index.htm
首頁(圖):
淘寶開放平臺的官方文檔中心地址:
http://open.taobao.com/doc/index.htm?spm=0.0.0.5.oluaZ6
你在文檔中心可以找到你所需要的資料
文檔中心(圖):
那下面,我開講嘍!
一、創(chuàng)建應(yīng)用
要想使用淘寶接口,必須得創(chuàng)建一個(gè)淘寶應(yīng)用,
我舉一個(gè)我自己的淘寶應(yīng)用作為例子:
應(yīng)用的圖標(biāo):圖標(biāo)隨便,我用的是本人的頭像,哈哈
應(yīng)用的名稱:DelphiTaoBaoAPI
應(yīng)用的標(biāo)簽:在線訂購應(yīng)用
應(yīng)用的AppKey:21235727
應(yīng)用的流量:5000次/天
應(yīng)用的標(biāo)簽是一個(gè)很重要的概念,
應(yīng)用標(biāo)簽的官方文檔地址:
http://open.taobao.com/doc/detail.htm?id=101125
應(yīng)用的標(biāo)簽指定了應(yīng)用的功能類型以及所具有的權(quán)限
有以下幾種類型(圖):
我在這里介紹一下各個(gè)應(yīng)用標(biāo)簽的功能介紹:
1.在線訂購應(yīng)用:為賣家提供店鋪后臺管理/營銷工具,在線訂購應(yīng)用實(shí)現(xiàn)賣家管理需求,解決店鋪管理/營銷遇到的各種問題,包括批量處理工具、績效管理類、店鋪營銷等。
?2.店鋪模塊應(yīng)用:嵌入到賣家店鋪前臺的模塊,店鋪模塊應(yīng)用主要用于提升買家購物體驗(yàn)。
3.阿里旺旺插件:基于旺旺賣家版的拓展工具,阿里旺旺插件能有效幫助賣家提升效率,便于管理和操作訂單,會員,營銷等。
4.服務(wù)商后臺系統(tǒng):為大型賣家提供大型店鋪后臺管理系統(tǒng),如CRM,ERP等;或者您作為托管服務(wù)商,希望自主研發(fā)產(chǎn)品給自己店鋪及托管店鋪使用
5.質(zhì)檢品控應(yīng)用:作為第三方質(zhì)檢機(jī)構(gòu)/公司在線提供質(zhì)檢報(bào)告審核、商品質(zhì)檢、驗(yàn)廠等品控服務(wù)
6.站內(nèi)買家應(yīng)用:在應(yīng)用中心,為淘寶站內(nèi)買家提供生活類服務(wù)、導(dǎo)購工具和游戲等
7.無線買家應(yīng)用:為無線端買家提供商品導(dǎo)購服務(wù)
8.網(wǎng)站接入:為淘寶站外買家提供商品導(dǎo)購服務(wù),包括淘客網(wǎng)站、B2C外店、海外代購等網(wǎng)站類應(yīng)用
9.商家后臺系統(tǒng):具有開發(fā)能力的商家,希望自主開發(fā)工具/軟件/系統(tǒng),用于自身店鋪經(jīng)營所用
10.不具備開發(fā)能力的商家:不具備開發(fā)能力,希望使用第三方軟件
創(chuàng)建一個(gè)新應(yīng)用的官方文檔地址:
http://open.taobao.com/doc/detail.htm?id=66
好了,接下來,我們開始創(chuàng)建應(yīng)用了
1.?打開淘寶開放平臺的首頁地址:http://open.taobao.com/index.htm,點(diǎn)擊加入開放平臺,或者點(diǎn)擊開發(fā)者中心。
2.使用淘寶賬戶登錄,淘寶賬戶需要通過實(shí)名認(rèn)證
3.?填寫基本信息
4.?提交后成為開放平臺的開發(fā)者
5.在個(gè)人的淘寶網(wǎng)開放平臺首頁地址:http://my.open.taobao.com/isv/index.htm中點(diǎn)擊創(chuàng)建新應(yīng)用按鈕
6.填寫應(yīng)用名稱,選擇應(yīng)用標(biāo)簽
7.查看應(yīng)用的appkey和appsecret,填寫應(yīng)用詳情
8.點(diǎn)擊保存,可以進(jìn)行安全掃描,掃描完成后沒有高危漏洞才能申請上線
9.查看應(yīng)用列表
10.應(yīng)用管理界面說明
?
二、調(diào)用淘寶接口(TopAPI)
淘寶API支持的調(diào)用方法有兩種,分別是:
1.Http調(diào)用方式
2.Https免簽名調(diào)用方式
其實(shí)這兩種方法的區(qū)別就在于驗(yàn)證方式,
第一種方法使用類似于OAUTH?1.0的驗(yàn)證
第二種使用OAUTH?2.0的驗(yàn)證
在這里我講的是Http調(diào)用方式
Http調(diào)用方式的官方文檔地址:
http://open.taobao.com/doc/detail.htm?spm=0.0.0.30.vH5kTk&id=111
我在這里再講一下淘寶的應(yīng)用運(yùn)行環(huán)境介紹
TOP提供給ISV(獨(dú)立軟件開發(fā)商)三種測試環(huán)境:沙箱環(huán)境,正式環(huán)境,線上環(huán)境
1.沙箱環(huán)境
沙箱環(huán)境是淘寶開放平臺(TOP)提供給獨(dú)立軟件開發(fā)商(ISV)的測試環(huán)境。數(shù)據(jù)完全獨(dú)立,大部分API已經(jīng)部署到該環(huán)境中供ISV進(jìn)行API的功能測試,對與APP的調(diào)用量無限制,但獲取大批量數(shù)據(jù)時(shí),超時(shí)率會較線上環(huán)境更高。
沙箱環(huán)境調(diào)用接口提交地址:http://gw.api.tbsandbox.com/router/rest
沙箱容器地址:http://container.api.tbsandbox.com/container
2.正式測試環(huán)境
淘寶正式測試環(huán)境是淘寶開放平臺(TOP)提供給獨(dú)立軟件開發(fā)商(ISV)的線上試運(yùn)行環(huán)境。正式測試環(huán)境下的數(shù)據(jù)均是線上的真實(shí)淘寶數(shù)據(jù)。ISV可以在正式測試環(huán)境下測試TOP接口的功能,但受到接口調(diào)用次數(shù)及權(quán)限的限制,即一個(gè)應(yīng)用的調(diào)用頻率為5000次/天,并且根據(jù)應(yīng)用標(biāo)簽不同,能調(diào)用的接口也不同,但是所有API文檔中標(biāo)識為開放的V均可以調(diào)用。
容器地址:http://container.open.taobao.com/container
調(diào)用接口提交地址:http://gw.api.taobao.com/router/rest
3.?線上環(huán)境
淘寶線上環(huán)境是ISV開發(fā)完成之后正式上線或上架運(yùn)行使用的環(huán)境。線上環(huán)境下接口調(diào)用的數(shù)據(jù)是真實(shí)的淘寶數(shù)據(jù),根據(jù)應(yīng)用標(biāo)簽不同,每個(gè)應(yīng)用將受到接口調(diào)用次數(shù)及流量的限制。
容器地址:http://container.open.taobao.com/container
調(diào)用接口提交地址:http://gw.api.taobao.com/router/rest
好了,接下來我講調(diào)用API中最關(guān)鍵的一步了,
就是準(zhǔn)備好所要調(diào)用API的請求URL
我以在沙箱環(huán)境中調(diào)用taobao.user.get接口來舉例
taobao.user.get這個(gè)接口的作用是得到用戶的信息,
這個(gè)API的官方文檔的地址是:
http://api.taobao.com/apidoc/api.htm?spm=0.0.0.184.NKWt50#categoryId:1-apiId:1
要調(diào)用這個(gè)接口,需要的系統(tǒng)級別輸入?yún)?shù)有:
系統(tǒng)級別輸入?yún)?shù)是調(diào)用每個(gè)API都需要的參數(shù)
method:API接口名稱。
session:TOP分配給用戶的SessionKey,需要通過用戶登陸授權(quán)獲取。
(有些接口不需要這個(gè)參數(shù),比如taobao.user.get這個(gè)接口,如果調(diào)用接口的時(shí)候沒有加入這個(gè)參數(shù),那么返回用戶的基本的公開信息,如果加入了這個(gè)參數(shù),那么返回用戶的所有信息,包括隱私的信息)
timestamp:時(shí)間戳,格式為YYYY-MM-dd?HH:MM:SS,例如:2008-01-25?20:23:30。淘寶API服務(wù)端允許客戶端請求時(shí)間誤差為10分鐘。
format:可選,指定響應(yīng)格式。默認(rèn)xml(表示不傳入format參數(shù)的時(shí)候,接口調(diào)用默認(rèn)返回xml格式的字符串),目前支持格式為xml,json。
app_key:TOP分配給應(yīng)用的AppKey。
v:API協(xié)議版本,可選值:2.0。
sign:API輸入?yún)?shù)簽名結(jié)果
sign_method:參數(shù)的加密方法選擇,可選值是:md5,hmac。
下面這兩個(gè)參數(shù)是taobao.user.get這個(gè)接口的應(yīng)用級輸入?yún)?shù)(每個(gè)API的應(yīng)用級輸入?yún)?shù)不同):
fields:需返回的字段列表。可選值:User結(jié)構(gòu)體中的所有字段;以半角逗號(,)分隔。需要用戶授權(quán)才能獲取用戶對應(yīng)的uid和user_id。User結(jié)構(gòu)體的文檔地址:http://api.taobao.com/apidoc/api.htm?spm=0.0.0.184.NKWt50#categoryId:1-apiId:1
nick:可選,用戶昵稱。
以上的這些參數(shù)除了sign,其他都是直接可以得到的
所以,需要著重講一下如何得到這個(gè)sign參數(shù)
sign參數(shù)值的算法為:
根據(jù)參數(shù)名稱將你的所有請求參數(shù)按照字母先后順序排序:key?+?value?....?key?+?value
對除簽名和圖片外的所有請求參數(shù)按key做的升序排列,?value無需編碼。
例如:將foo=1,bar=2,baz=3?排序?yàn)閎ar=2,baz=3,foo=1
參數(shù)名和參數(shù)值鏈接后,得到拼裝字符串bar2baz3foo1
淘寶支持MD5和HMAC兩種加密方式
md5:將secretcode(secretcode為應(yīng)用的AppSecret)同時(shí)拼接到參數(shù)字符串頭、尾部進(jìn)行md5加密后,再轉(zhuǎn)化成大寫,格式是:byte2hex(md5(secretkey1value1key2value2...secret))。
hmac:采用hmac的md5方式,secretcode(secretcode為應(yīng)用的AppSecret)只在頭部的簽名后再轉(zhuǎn)化成大寫,格式?是:byte2hex?(hmac(key1value1key2value2...,secret))。
例如:
輸入?yún)?shù)為:
??????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
按照參數(shù)名稱升序排列:
??????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
拼裝字符串:
連接參數(shù)名與參數(shù)值,并在首尾加上secretcode(secretcode為應(yīng)用的AppSecret)(這里假設(shè)appsecret=test)值:
testapp_keytestfieldsnick,location.state,location.cityformatxmlmethodtaobao.user.getnick商家測試帳號17sign_methodmd5timestamp2011-07-0113:52:03v2.0test
生成簽名:
32位大寫MD5值->5029C3055D51555112B60B33000122D5
拼裝URL:?
將所有參數(shù)值轉(zhuǎn)換為UTF-8編碼,然后拼裝,通過瀏覽器訪問該地址,即成功調(diào)用一次接口
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
注意事項(xiàng):
1.所有的請求和響應(yīng)數(shù)據(jù)編碼皆為utf-8格式,url里的所有參數(shù)值請做urlencode編碼。如果請求的Content-Type是?application/x-www-form-urlencoded,?http?body里的所有參數(shù)值也做urlencode編碼;如果是multipart/form-data格式,每個(gè)表單字段的參數(shù)值無需編碼,但每個(gè)表單字段?的charset部分需要指定為utf-8
2.商品等公開信息查詢類API建議用get請求,交易等隱私信息查詢和修改類API建議用post請求
?
三、使用接口
Delphi版本淘寶接口我已經(jīng)放在Google上了,下載地址:
http://code.google.com/p/delphiopenapi/downloads/list
用到的第三方控件有Json的superobject,Zip的VCLUnZip和Http通信的Indy控件。
1.要使用淘寶接口,需要準(zhǔn)備淘寶應(yīng)用的AppKey,AppSecret,以及回調(diào)URL
示例如下:
2.獲取用戶授權(quán)
用戶使用你的應(yīng)用,需要對應(yīng)用進(jìn)行授權(quán),你的應(yīng)用才能操作用戶的淘寶數(shù)據(jù),像獲取交易列表,商品列表,上下架商品,評價(jià)交易等
大部分淘寶的接口使用時(shí)需要用戶授權(quán)
先將網(wǎng)頁定位到淘寶網(wǎng)針對本應(yīng)用的授權(quán)地址,需要用戶輸入用戶名和密碼
然后淘寶網(wǎng)列出了當(dāng)前應(yīng)用的權(quán)限,操作范圍,像讀取用戶信息,讀取三個(gè)月內(nèi)的交易記錄
3.接口使用說明
調(diào)用我控件中尚未實(shí)現(xiàn)的淘寶接口,我寫了一個(gè)通用的方法,
為TTaoBaoManager.APIClient(TTaoBaoAPIClient類)
的CustomExecuteAPI方法
[delphi]?view?plaincopy
//自定義調(diào)用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;??
參數(shù)AAPIMethod為接口名稱:如taobao.user.get
參數(shù)AParamNames為參數(shù)名列表:如fields
參數(shù)AParamValues為參數(shù)值列表:如nick,location.state,location.city
參數(shù)AFormat為響應(yīng)格式:若為Json時(shí),返回字符串為Json格式的,若為Xml時(shí),返回字符串為Xml格式
參數(shù)ANeedSessionParam為是否需要授權(quán):如taobao.user.get這個(gè)接口,獲取用戶的所有信息時(shí),需要用戶授權(quán)
參數(shù)AHttpRequestMethod為Http的Get方法
參數(shù)AHttpResponse為接口返回的字符串
執(zhí)行之后,大家可以自己解析返回的字符串來獲取所需要的數(shù)據(jù)
4.接口功能示例
獲取出售中的商品列表,以及單個(gè)商品的詳細(xì)信息
獲取三個(gè)月內(nèi)的交易記錄,每個(gè)交易的詳細(xì)信息,交易增量(交易更新,比如新增了一筆交易,修改了交易狀態(tài)等),評價(jià)交易
轉(zhuǎn)載于:https://www.cnblogs.com/MaxWoods/p/3678678.html
總結(jié)
以上是生活随笔為你收集整理的淘宝接口 TopAPi的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 达梦数据库一些疑难杂症的解决
- 下一篇: 海外IT工程师工作福利揭秘
