zoukankan      html  css  js  c++  java
  • 淘宝客之 API调用实例讲解

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

    需要使用类

    ITopClient TOP客户端类

    View Code
    1 using Top.Api.Request;
    2
    3  namespace Top.Api
    4 {
    5 /// <summary>
    6 /// TOP客户端。
    7 /// </summary>
    8   public interface 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);

    View Code
    1 using System;
    2  using System.Collections;
    3  using System.Collections.Generic;
    4  using Top.Api.Parser;
    5 using Top.Api.Request;
    6 using Top.Api.Util;
    7
    8 namespace Top.Api
    9 {
    10 /// <summary>
    11 /// 基于REST的TOP客户端。
    12 /// </summary>
    13 public class DefaultTopClient : ITopClient
    14 {
    15 public const string APP_KEY = "app_key";
    16 public const string FORMAT = "format";
    17 public const string METHOD = "method";
    18 public const string TIMESTAMP = "timestamp";
    19 public const string VERSION = "v";
    20 public const string SIGN = "sign";
    21 public const string PARTNER_ID = "partner_id";
    22 public const string SESSION = "session";
    23 public const string FORMAT_XML = "xml";
    24
    25 private string serverUrl;
    26 private string appKey;
    27 private string appSecret;
    28 private string format = FORMAT_XML;
    29
    30 private WebUtils webUtils;
    31
    32 #region DefaultTopClient Constructors
    33
    34 public DefaultTopClient(string serverUrl, string appKey, string appSecret)
    35 {
    36 this.appKey = appKey;
    37 this.appSecret = appSecret;
    38 this.serverUrl = serverUrl;
    39 this.webUtils = new WebUtils();
    40 }
    41
    42 public DefaultTopClient(string serverUrl, string appKey, string appSecret, string format)
    43 : this(serverUrl, appKey, appSecret)
    44 {
    45 this.format = format;
    46 }
    47
    48 public void SetTimeout(int timeout)
    49 {
    50 webUtils.Timeout = timeout;
    51 }
    52
    53 #endregion
    54
    55 #region ITopClient Members
    56
    57 public T Execute<T>(ITopRequest<T> request) where T : TopResponse
    58 {
    59 return Execute<T>(request, null);
    60 }
    61
    62 public 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-20110317");
    71 txtParams.Add(TIMESTAMP, DateTime.Now);
    72 txtParams.Add(SESSION, session);
    73
    74 // 添加签名参数
    75 txtParams.Add(SIGN, TopUtils.SignTopRequest(txtParams, appSecret));
    76
    77 // 是否需要上传文件
    78 string body;
    79 if (request is ITopUploadRequest<T>)
    80 {
    81 ITopUploadRequest<T> uRequest = (ITopUploadRequest<T>)request;
    82 IDictionary<string, FileItem> fileParams = TopUtils.CleanupDictionary(uRequest.GetFileParameters());
    83 body = webUtils.DoPost(this.serverUrl, txtParams, fileParams);
    84 }
    85 else
    86 {
    87 body = webUtils.DoPost(this.serverUrl, txtParams);
    88 }
    89
    90 T rsp;
    91 if (FORMAT_XML.Equals(format))
    92 {
    93 ITopParser<T> tp = new TopXmlParser<T>();
    94 rsp = tp.Parse(body);
    95 }
    96 else
    97 {
    98 ITopParser<T> tp = new TopJsonParser<T>();
    99 rsp = tp.Parse(body);
    100 }
    101
    102 return rsp;
    103 }
    104
    105 #endregion
    106 }
    107 }

    TaobaokeItemsGetResponse 信息返回

    View Code
    1 using System;
    2 using System.Xml.Serialization;
    3 using System.Collections.Generic;
    4 using Top.Api.Domain;
    5
    6 namespace Top.Api.Response
    7 {
    8 /// <summary>
    9 /// TaobaokeItemsGetResponse.
    10 /// </summary>
    11 public class TaobaokeItemsGetResponse : TopResponse
    12 {
    13 /// <summary>
    14 /// 淘宝客商品对象列表.不返回taobaoke_cat_click_url和keyword_click_url两个字段。
    15 /// </summary>
    16 [XmlArray("taobaoke_items")]
    17 [XmlArrayItem("taobaoke_item")]
    18 public List<TaobaokeItem> TaobaokeItems { get; set; }
    19
    20 /// <summary>
    21 /// 搜索到符合条件的结果总数
    22 /// </summary>
    23 [XmlElement("total_results")]
    24 public long TotalResults { get; set; }
    25 }
    26 }

    剩下的实体绑定不需要我说了吧 www.qtcrm.com 首页信息显示就是通过这个获取到的 类型与

    数量等信息在请求类中条件设置

    TaobaokeItemsGetRequest 在请求类中设置相应条件信息。

    View Code
    1 using System;
    2 using System.Collections.Generic;
    3 using Top.Api.Response;
    4
    5 namespace Top.Api.Request
    6 {
    7 /// <summary>
    8 /// TOP API: taobao.taobaoke.items.get
    9 /// </summary>
    10 public class TaobaokeItemsGetRequest : ITopRequest<TaobaokeItemsGetResponse>
    11 {
    12 /// <summary>
    13 /// 商品所在地
    14 /// </summary>
    15 public string Area { get; set; }
    16
    17 /// <summary>
    18 /// 是否自动发货
    19 /// </summary>
    20 public string AutoSend { get; set; }
    21
    22 /// <summary>
    23 /// 是否支持抵价券,设置为true表示该商品支持抵价券,设置为false或不设置表示不判断这个属性
    24 /// </summary>
    25 public string CashCoupon { get; set; }
    26
    27 /// <summary>
    28 /// 是否支持货到付款,设置为true表示该商品是支持货到付款,设置为false或不设置表示不判断这个属性
    29 /// </summary>
    30 public string CashOndelivery { get; set; }
    31
    32 /// <summary>
    33 /// 商品所属分类id
    34 /// </summary>
    35 public Nullable<long> Cid { get; set; }
    36
    37 /// <summary>
    38 /// 最高累计推广佣金选项
    39 /// </summary>
    40 public string EndCommissionNum { get; set; }
    41
    42 /// <summary>
    43 /// 最高佣金比率选项,如:2345表示23.45%。注:要起始佣金比率和最高佣金比率一起设置才有效。
    44 /// </summary>
    45 public string EndCommissionRate { get; set; }
    46
    47 /// <summary>
    48 /// 可选值和start_credit一样.start_credit的值一定要小于或等于end_credit的值。注:end_credit与start_credit一起使用才生效
    49 /// </summary>
    50 public string EndCredit { get; set; }
    51
    52 /// <summary>
    53 /// 最高价格
    54 /// </summary>
    55 public string EndPrice { get; set; }
    56
    57 /// <summary>
    58 /// 累计推广量范围结束
    59 /// </summary>
    60 public string EndTotalnum { get; set; }
    61
    62 /// <summary>
    63 /// 需返回的字段列表.可选值:num_iid,title,nick,pic_url,price,click_url,commission,commission_rate,commission_num,commission_volume,shop_click_url,seller_credit_score,item_location,volume ;字段之间用","分隔
    64 /// </summary>
    65 public string Fields { get; set; }
    66
    67 /// <summary>
    68 /// 是否查询消保卖家
    69 /// </summary>
    70 public string Guarantee { get; set; }
    71
    72 /// <summary>
    73 /// 标识一个应用是否来在无线或者手机应用,如果是true则会使用其他规则加密点击串.如果不穿值,则默认是false.
    74 /// </summary>
    75 public Nullable<bool> IsMobile { get; set; }
    76
    77 /// <summary>
    78 /// 商品标题中包含的关键字. 注意:查询时keyword,cid至少选择其中一个参数
    79 /// </summary>
    80 public string Keyword { get; set; }
    81
    82 /// <summary>
    83 /// 是否商城的商品,设置为true表示该商品是属于淘宝商城的商品,设置为false或不设置表示不判断这个属性
    84 /// </summary>
    85 public string MallItem { get; set; }
    86
    87 /// <summary>
    88 /// 淘宝用户昵称,注:指的是淘宝的会员登录名.如果昵称错误,那么客户就收不到佣金.每个淘宝昵称都对应于一个pid,在这里输入要结算佣金的淘宝昵称,当推广的商品成功后,佣金会打入此输入的淘宝昵称的账户。具体的信息可以登入阿里妈妈的网站查看. <font color="red">注意nick和pid至少需要传递一个,如果2个都传了,将以pid为准</font>
    89 /// </summary>
    90 public string Nick { get; set; }
    91
    92 /// <summary>
    93 /// 是否30天维修,设置为true表示该商品是支持30天维修,设置为false或不设置表示不判断这个属性
    94 /// </summary>
    95 public string OnemonthRepair { get; set; }
    96
    97 /// <summary>
    98 /// 自定义输入串.格式:英文和数字组成;长度不能大于12个字符,区分不同的推广渠道,如:bbs,表示bbs为推广渠道;blog,表示blog为推广渠道.
    99 /// </summary>
    100 public string OuterCode { get; set; }
    101
    102 /// <summary>
    103 /// 是否海外商品,设置为true表示该商品是属于海外商品,默认为false
    104 /// </summary>
    105 public string OverseasItem { get; set; }
    106
    107 /// <summary>
    108 /// 结果页数.1~99
    109 /// </summary>
    110 public Nullable<long> PageNo { get; set; }
    111
    112 /// <summary>
    113 /// 每页返回结果数.最大每页40
    114 /// </summary>
    115 public 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>
    120 public string Pid { get; set; }
    121
    122 /// <summary>
    123 /// 是否如实描述(即:先行赔付)商品,设置为true表示该商品是如实描述的商品,设置为false或不设置表示不判断这个属性
    124 /// </summary>
    125 public string RealDescribe { get; set; }
    126
    127 /// <summary>
    128 /// 是否支持7天退换,设置为true表示该商品支持7天退换,设置为false或不设置表示不判断这个属性
    129 /// </summary>
    130 public string 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>
    135 public string Sort { get; set; }
    136
    137 /// <summary>
    138 /// 起始累计推广量佣金.注:返回的数据是30天内累计推广量,具该字段要与最高累计推广量一起使用才生效
    139 /// </summary>
    140 public string StartCommissionNum { get; set; }
    141
    142 /// <summary>
    143 /// 起始佣金比率选项,如:1234表示12.34%
    144 /// </summary>
    145 public string 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>
    150 public string StartCredit { get; set; }
    151
    152 /// <summary>
    153 /// 起始价格.传入价格参数时,需注意起始价格和最高价格必须一起传入,并且 start_price <= end_price
    154 /// </summary>
    155 public string StartPrice { get; set; }
    156
    157 /// <summary>
    158 /// 累计推广量范围开始
    159 /// </summary>
    160 public string StartTotalnum { get; set; }
    161
    162 /// <summary>
    163 /// 是否支持VIP卡,设置为true表示该商品支持VIP卡,设置为false或不设置表示不判断这个属性
    164 /// </summary>
    165 public string VipCard { get; set; }
    166
    167 #region ITopRequest Members
    168
    169 public string GetApiName()
    170 {
    171 return "taobao.taobaoke.items.get";
    172 }
    173
    174 public 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);
    208 return parameters;
    209 }
    210
    211 #endregion
    212 }
    213 }

    淘宝客起初有调用次数限制 请注意优化缓存 否则将无法显示数据信息。并且网站打开异常缓慢,建议单独写个控制类方法 方便修改于后续的 缓存信息定义。好了 今天很晚了

    这几天公司比较忙 没有更新 如果大家需要了解什么 以后陆续更新

    如果对www.qtcrm.com上面的那些技术应用有急需了解的请 留言 我将在下篇文章中详细解释。 写的不好希望大家海涵。

    希望可以帮到 愿意走淘宝客之路的朋友。

    /// <summary>
    /// taobao.taobaoke.items.get 查询淘宝客推广商品
    /// </summary>
    /// <param name="req">请求实体参数</param>
    /// <returns>返回商品实体数组</returns>
    public static 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;
    }
  • 相关阅读:
    一些java的基础知识
    android基础AlertDialog使用
    Js+XML 操作 [ZT]
    [ASP.NET2.0] asp.net在ie7中使用FileUpload上传前预览图片 [ZT]
    C#对图片的几种简单处理 [ZT]
    使用 Bulk Copy 将大量数据复制到数据库 [ZT]
    html中name和id的区别 [ZT]
    两个分页存储过程
    C#常用的文件操作 (转)
    JSON
  • 原文地址:https://www.cnblogs.com/azzx/p/2012969.html
Copyright © 2011-2022 走看看