ASP.NET挪用淘宝API实例详解

本文和大家详细分享一下如何使用ASP.NET来调用 淘宝客API开发的实例讲解。

  第一步 获取全部推广商品实体

  需要使用类 ITopClient TOP客户端类

  1using Top.Api.Request;

  2

  3namespace Top.Api

  4 {

  5///<summary>

  6/// TOP客户端。

  7///</summary>

  8publicinterface 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; }

  41

  42///<summary>

  43/// 最高佣金比率选项,如: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>

  63/// 需返回的字段列表.可选值:num_iid,title,nick,pic_url,price,click_url,commis sion,commission_rate,commission_num,commission_volu me,shop_click_url,seller_credit_score,item_location ,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_xxxx_0_0这种格式中间的"xxxx". <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>

  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

  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%A
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值