淘寶開放平臺的開發例子大多都是c#,php,java等,缺少Pascal的例子。
現用delphi寫了一個示例,
關鍵點是簽名的生成,簽名需按key字母順序排序,並去掉等於號後首尾相連。
關鍵代碼:
memstr:= TMemoryStream.Create;
//用授權碼獲取 session
IdHTTP1.Get('http://container.api.tbsandbox.com/container?authcode='+memo1.Text,memstr);
setlength(ss,memstr.Size);
memstr.Position:= 0;
memstr.Read(ss[1],memstr.Size);
ss:= Utf8ToAnsi(ss);
//切分session top_session=282730527fc47c5e27838f5dd8aeb098afefd&top_sign=LiTSTYs/DQHpRAGA4OPEZA==
ss:= copy(ss,pos('top_session=',ss)+12,255);
ss:= copy(ss,1,pos('&',ss)-1);
memo1.Lines.Add(ss);
//製作簽名,下列代碼有冗餘的單引號,主要是爲了顯示邏輯關係。
ss2:=secrect_key+'app_key'+app_Key +
'fields'+'tid,seller_nick,buyer_nick,status,orders.title,orders.price,orders.num'+
'format'+ 'xml'+
'method'+'taobao.trades.sold.get'+
'session'+ss+
'sign_method'+'md5'+
'timestamp'+datetimetostr(now)+
'v'+ '2.0'+ secrect_key;
ss2:= UpperCase(StrMD5(ss2)); //生成簽名md5
//合成參數
ss3:= 'app_key='+app_Key +
'&fields='+'tid,seller_nick,buyer_nick,status,orders.title,orders.price,orders.num'+
'&format='+ 'xml'+
'&method='+'taobao.trades.sold.get'+
'&session='+ss+
'&sign_method='+'md5'+
'×tamp='+ URLEncode(datetimetostr(now),true)+
'&v='+ '2.0'+
'&sign='+ ss2;
//取得數據
memstr.Clear;
IdHTTP1.Get('http://gw.api.tbsandbox.com/router/rest?'+ss3,memstr);
setlength(ss,memstr.Size);
memstr.Position:= 0;
memstr.Read(ss[1],memstr.Size);
ss:= Utf8ToAnsi(ss);
memo1.Lines.Add(ss);
memstr.Free;
完整例子下載:
本例子在沙盒環境下測試通過。