挪用淘宝API实例详解 - 第八基地

软件开发的家园,编程爱好者的天地.

现在是:北京时间 2016/4/14 上午11:50:51 星期四

设为首页  |  加入收藏  |  网站地图

挪用淘宝API实例详解
发布于:第八基地 来源:duote 作者:天堂路上 时间:2016-04-11 点击:273

  本文和各人具体分享一下如何使用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%

对我有帮助
(0)
0%
对我没帮助
(0)
0%
返回顶部
在线反馈
在线反馈