本文和各人具体分享一下如何使用ASP.NET来调用淘宝客API开发的实例讲解。 第一步 获取全部推广商品实体 需要使用类 ITopClient TOP客户端类 1using Top.Api.Request; 2 3namespace Top.Api 4 { 5///<summary> 6/// TOP客户端。 7///</summary> 8publicinte***ce ITopClient 9 { 10///<summary> 11/// 执行TOP公然API请求。 12///</summary> 13///<typeparam name="T">领域对象</typeparam> 14///<param name="request">具体的TOP API请求</param> 15///<returns>领域对象</returns> 16 T Execute<T>(ITopRequest<T> request) where T : TopResponse; 17 18///<summary> 19/// 执行TOP隐私API请求。 20///</summary> 21///<typeparam name="T">领域对象</typeparam> 22///<param name="request">具体的TOP API请求</param> 23///<param name="session">用户会话码</param> 24///<returns>领域对象</returns> 25 T Execute<T>(ITopRequest<T> request, string session) where T : TopResponse; 26 } 27 } DefaultTopClient 初始化连接(请求地址, Appkey, AppSecret); 1using System; 2using System.Collections; 3using System.Collections.Generic; 4using Top.Api.Parser; 5using Top.Api.Request; 6using Top.Api.Util; 7 8namespace Top.Api 9 { 10///<summary> 11/// 基于REST的TOP客户端。 12///</summary> 13publicclass DefaultTopClient : ITopClient 14 { 15publicconststring APP_KEY ="app_key"; 16publicconststring FORMAT ="format"; 17publicconststring METHOD ="method"; 18publicconststring TIMESTAMP ="timestamp"; 19publicconststring VERSION ="v"; 20publicconststring SIGN ="sign"; 21publicconststring PARTNER_ID ="partner_id"; 22publicconststring SESSION ="session"; 23publicconststring FORMAT_XML ="xml"; 24 25privatestring serverUrl; 26privatestring appKey; 27privatestring appSecret; 28privatestring format = FORMAT_XML; 29 30private WebUtils webUtils; 31 32#region DefaultTopClient Constructors 33 34public DefaultTopClient(string serverUrl, string appKey, string appSecret) 35 { 36this.appKey = appKey; 37this.appSecret = appSecret; 38this.serverUrl = serverUrl; 39this.webUtils =new WebUtils(); 40 } 41 42public DefaultTopClient(string serverUrl, string appKey, string appSecret, string format) 43 : this(serverUrl, appKey, appSecret) 44 { 45this.format = format; 46 } 47 48publicvoid SetTimeout(int timeout) 49 { 50 webUtils.Timeout = timeout; 51 } 52 53#endregion 54 55#region ITopClient Members 56 57public T Execute<T>(ITopRequest<T> request) where T : TopResponse 58 { 59return Execute<T>(request, null); 60 } 61 62public T Execute<T>(ITopRequest<T> request, string session) where T : TopResponse 63 { 64//添加协议级请求参数 65 TopDictionary txtParams =new TopDictionary(request.GetParameters()); 66 txtParams.Add(METHOD, request.GetApiName()); 67 txtParams.Add(VERSION, "2.0"); 68 txtParams.Add(APP_KEY, appKey); 69 txtParams.Add(FORMAT, format); 70 txtParams.Add(PARTNER_ID, "top-sdk-net-"); 71 txtParams.Add(TIMESTAMP, DateTime.Now); 72 txtParams.Add(SESSION, session); 73 74// 添加签名参数 75 txtParams.Add(SIGN, TopUtils.SignTopRequest(txtParams, appSecret)); 76 77// 是否需要上传文件 78string body; 79if (request is ITopUploadRequest<T>) 80 { 81 ITopUploadRequest<T> uRequest = (ITopUploadRequest<T>)request; 82 IDictionary<string, FileItem> fileParams = TopUtils.CleanupDictionary(uRequest.GetFileParamet ers()); 83 body = webUtils.DoPost(this.serverUrl, txtParams, fileParams); 84 } 85else 86 { 87 body = webUtils.DoPost(this.serverUrl, txtParams); 88 } 89 90 T rsp; 91if (FORMAT_XML.Equals(format)) 92 { 93 ITopParser<T> tp =new TopXmlParser<T>(); 94 rsp = tp.Parse(body); 95 } 96else 97 { 98 ITopParser<T> tp =new TopJsonParser<T>(); 99 rsp = tp.Parse(body); 100 } 101 102return rsp; 103 } 104 105#endregion 106 } 107 } TaobaokeItemsGetResponse 信息返回 1using System; 2using System.Xml.Serialization; 3using System.Collections.Generic; 4using Top.Api.Domain; 5 6namespace Top.Api.Response 7 { 8///<summary> 9/// TaobaokeItemsGetResponse. 10///</summary> 11publicclass TaobaokeItemsGetResponse : TopResponse 12 { 13///<summary> 14/// 淘宝客商品对象列表。不返回taobaoke_cat_click_url和keyword_click_url两个字段。 15///</summary> 16 [XmlArray("taobaoke_items")] 17 [XmlArrayItem("taobaoke_item")] 18public List<TaobaokeItem> TaobaokeItems { get; set; } 19 20///<summary> 21/// 搜索到符合条件的结果总数 22///</summary> 23 [XmlElement("total_results")] 24publiclong TotalResults { get; set; } 25 } 26 } TaobaokeItemsGetRequest 在请求类中设置相应条件信息。 1using System; 2using System.Collections.Generic; 3using Top.Api.Response; 4 5namespace Top.Api.Request 6 { 7///<summary> 8/// TOP API: taobao.taobaoke.items.get 9///</summary> 10publicclass TaobaokeItemsGetRequest : ITopRequest<TaobaokeItemsGetResponse> 11 { 12///<summary> 13/// 商品所在地 14///</summary> 15publicstring Area { get; set; } 16 17///<summary> 18/// 是否主动发货 19///</summary> 20publicstring AutoSend { get; set; } 21 22///<summary> 23/// 是否支持抵价券,设置为true表示该商品支持抵价券,设置为false或不设置表示不判定这个属性 24///</summary> 25publicstring CashCoupon { get; set; } 26 27///<summary> 28/// 是否支持货到付款,设置为true表示该商品是支持货到付款,设置为false或不设置表示不判定这个属性 29///</summary> 30publicstring CashOndelivery { get; set; } 31 32///<summary> 33/// 商品所属分类id 34///</summary> 35public Nullable<long> Cid { get; set; } 36 37///<summary> 38/// 最高累计推广佣金选项 39///</summary> 40publicstring EndCommissionNum { get; set; } 4 1
42///<summary> 43/// 最高佣金比率选项http://uybdzd.edu.tc,如:2345表示23.45%.注:要起始佣金比率和最高佣金比率一起设置才有效。 44///</summary> 45publicstring EndCommissionRate { get; set; } 46 47///<summary> 48/// 可选值和start_credit一样。start_credit的值一定要小于或即是end_credit的值。注:end_credit与start_credit一起使用才生效 49///</summary> 50publicstring EndCredit { get; set; } 51 52///<summary> 53/// 最高价格 54///</summary> 55publicstring EndPrice { get; set; } 56 57///<summary> 58/// 累计推广量规模竣事 59///</summary> 60publicstring EndTotalnum { get; set; } 61 62///<summary>[nextpage] 63/// 需返回的字段列表。可选值:num_iid,title,nick,pic_url,price,click_url,commis sion,commission_rate,commission_num,commission_vol u me,shop_click_url,seller_credit_score,item_locatio n ,volume ;字段之间用","分隔 64///</summary> 65publicstring Fields { get; set; } 66 67///<summary> 68/// 是否查询消保卖家 69///</summary> 70publicstring Guarantee { get; set; } 71 72///<summary> 73/// 标识一个应用是否来在无线或者手机应用,假如是true则会使用其他法则加密点击串。假如不穿值,则默认是false. 74///</summary> 75public Nullable<bool> IsMobile { get; set; } 76 77///<summary> 78/// 商品标题中包含的关键字。 留意:查询时keyword,cid至少选择其中一个参数 79///</summary> 80publicstring Keyword { get; set; } 81 82///<summary> 83/// 是否商城的商品,设置为true表示该商品是属于淘宝商城的商品,设置为false或不设置表示不判定这个属性 84///</summary> 85publicstring MallItem { get; set; } 86 87///<summary> 88/// 淘宝用户昵称,注:指的是淘宝的会员登录名。假如昵称错误,那么客户就收不到佣金。每个淘宝昵称都对应于一个pid,在这里输进要结算佣金的淘宝昵称,当推广的商品成功后,佣金会打进此输进的淘宝昵称的账户。具体的信息可以登进阿里妈妈的网站查看。 <font color="red">留意nick和pid至少需要传递一个,假如2个都传了,将以pid为准</font> 89///</summary> 90publicstring Nick { get; set; } 91 92///<summary> 93/// 是否30天维修,设置为true表示该商品是支持30天维修,设置为false或不设置表示不判定这个属性 94///</summary> 95publicstring OnemonthRepair { get; set; } 96 97///<summary> 98/// 自定义输进串。格式:英文和数字组成;长度不能大于12个字符,区分不同的推广渠道,如:bbs,表示bbs为推广渠道;blog,表示blog为推广渠道。 99///</summary> 100publicstring OuterCode { get; set; } 101 102///<summary> 103/// 是否海外商品,设置为true表示该商品是属于海外商品,默以为false 104///</summary> 105publicstring OverseasItem { get; set; } 106 107///<summary> 108/// 结果页数。1~99 109///</summary> 110public Nullable<long> PageNo { get; set; } 111 112///<summary> 113/// 每页返回结果数。最大每页40 114///</summary> 115public Nullable<long> PageSize { get; set; } 116 117///<summary> 118/// 用户的pid,必须是mm_***x_0_0这种格式中间的"***x". <font color="red">留意nick和pid至少需要传递一个,假如2个都传了,将以pid为准,且pid的最大长度是20</font> 119///</summary> 120publicstring Pid { get; set; } 121 122///<summary> 123/// 是否如实描述(即:先行赔付)商品,设置为true表示该商品是如实描述的商品,设置为false或不设置表示不判定这个属性 124///</summary> 125publicstring RealDescribe { get; set; } 126 127///<summary> 128/// 是否支持7天退换,设置为true表示该商品支持7天退换,设置为false或不设置表示不判定这个属性 129///</summary> 130publicstring SevendaysReturn { get; set; } 131 132///<summary>[nextpage] 133/// 默认排序:default price_desc(价格从高到低) price_asc(价格从低到高) credit_desc(信用等级从高到低) commissionRate_desc(佣金比率从高到底) commissionRate_asc(佣金比率从低到高) commissionNum_desc(成交量成高到低) commissionNum_asc(成交量从低到高) commissionVolume_desc(总支出佣金从高到底) commissionVolume_asc(总支出佣金从低到高) delistTime_desc(商品下架时间从高到底) delistTime_asc(商品下架时间从低到高) 134///</summary> 135publicstring Sort { get; set; } 136 137///<summary> 138/// 起始累计推广量佣金。注:返回的数据是30天内累计推广量,具该字段要与最高累计推广量一起使用才生效 139///</summary> 140publicstring StartCommissionNum { get; set; } 141 142///<summary> 143/// 起始佣金比率选项,如:1234表示12.34% 144///</summary> 145publicstring StartCommissionRate { get; set; } 146 147///<summary> 148/// 卖家信用: 1heart(一心) 2heart (两心) 3heart(三心) 4heart(四心) 5heart(五心) 1diamond(一钻) 2diamond(两钻) 3diamond(三钻) 4diamond(四钻) 5diamond(五钻) 1crown(一冠) 2crown(两冠) 3crown(三冠) 4crown(四冠) 5crown(五冠) 1goldencrown(一黄冠) 2goldencrown(二黄冠) 3goldencrown(三黄冠) 4goldencrown(四黄冠) 5goldencrown(五黄冠) 149///</summary> 150publicstring StartCredit { get; set; } 151 152///<summary> 153/// 起始价格。传进价格参数时,需留意起始价格和最高价格必须一起传进,并且 start_price <= end_price 154 ///</summary> 155publicstring StartPrice { get; set; } 156 157///<summary> 158/// 累计推广量规模开始 159///</summary> 160publicstring StartTotalnum { get; set; } 161 162///<summary> 163/// 是否支持VIP卡,设置为true表示该商品支持VIP卡,设置为false或不设置表示不判定这个属性 164///</summary> 165publicstring VipCard { get; set; } 166 167#region ITopRequest Members 168 169publicstring GetApiName() 170 { 171return"taobao.taobaoke.items.get"; 172 } 173 174public IDictionary<string, string> GetParameters() 175 { 176 TopDictionary parameters =new TopDictionary(); 177 parameters.Add("area", this.Area); 178 parameters.Add("auto_send", this.AutoSend); 179 parameters.Add("cash_coupon", this.CashCoupon); 180 parameters.Add("cash_ondelivery", this.CashOndelivery); 181 parameters.Add("cid", this.Cid); 182 parameters.Add("end_commissionNum", this.EndCommissionNum); 183 parameters.Add("end_commissionRate", this.EndCommissionRate); 184 parameters.Add("end_credit", this.EndCredit); 185 parameters.Add("end_price", this.EndPrice); 186 parameters.Add("end_totalnum", this.EndTotalnum); 187 parameters.Add("fields", this.Fields); 188 parameters.Add("guarantee", this.Guarantee); 189 parameters.Add("is_mobile", this.IsMobile); 190 parameters.Add("keyword", this.Keyword); 191 parameters.Add("mall_item", this.MallItem); 192 parameters.Add("nick", this.Nick); 193 parameters.Add("onemonth_repair", this.OnemonthRepair); 194 parameters.Add("outer_code", this.OuterCode); 195 parameters.Add("overseas_item", this.OverseasItem); 196 parameters.Add("page_no", this.PageNo); 197 parameters.Add("page_size", this.PageSize); 198 parameters.Add("pid", this.Pid); 199 parameters.Add("real_describe", this.RealDescribe); 200 parameters.Add("sevendays_return", this.SevendaysReturn); 201 parameters.Add("sort", this.Sort); 202 parameters.Add("start_commissionNum", this.StartCommissionNum); 203 parameters.Add("start_commissionRate", this.StartCommissionRate); 204 parameters.Add("start_credit", this.StartCredit); 205 parameters.Add("start_price", this.StartPrice); 206 parameters.Add("start_totalnum", this.StartTotalnum); 207 parameters.Add("vip_card", this.VipCard); 208return parameters; 209 } 210 211#endregion &nbs p; 212 } 213 } ///<summary> /// taobao.taobaoke.items.get 查询淘宝客推广商品 ///</summary> ///<param name="req">请求实体参数</param> ///<returns>返回商品实体数组</returns> publicstatic TaobaokeItem[] GetItemArray(TaobaokeItemsGetRequest req) { ITopClient client =new DefaultTopClient(Config.ServerURL, Config.Appkey, Config.AppSecret); req.Pid = Config.Pid;///淘宝客PID 可以到阿里妈妈查询 TaobaokeItemsGetResponse response = client.Execute(req); if (response.IsError) { string err = response.ErrMsg; string ierr = response.ErrCode; ErrorLog.Save("TaobaokeAPI", ierr, err, All.GetErrorCN(int.Parse(ierr))); } return response.TotalResults >0? response.TaobaokeItems.ToArray() : null; } %D% (责任编辑:admin) |