记阿里巴巴开发平台签名函数(淘宝客项目)
作者:admin 来源:原创 2023/2/17 10:28:25

一、签名函数


static string SignTopRequest(IDictionary<string, string> parameters, string secret, string signMethod)
        {
            // 第一步:把字典按Key的字母顺序排序
            IDictionary<string, string> sortedParams = new SortedDictionary<string, string>(parameters, StringComparer.Ordinal);
            IEnumerator<KeyValuePair<string, string>> dem = sortedParams.GetEnumerator();

            // 第二步:把所有参数名和参数值串在一起
            StringBuilder query = new StringBuilder();
            if (signMethod == "md5") //签名的摘要算法,可选值为:hmac,md5,hmac-sha256
            {
                query.Append(secret);
            }
            while (dem.MoveNext())
            {
                string key = dem.Current.Key;
                string value = dem.Current.Value;
                if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value))
                {
                    query.Append(key).Append(value);
                }
            }

            // 第三步:使用MD5/HMAC加密
            byte[] bytes;
            if ("hmac" == signMethod)
            {
                HMACMD5 hmac = new HMACMD5(Encoding.UTF8.GetBytes(secret));
                bytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(query.ToString()));
            }
            else
            {
                query.Append(secret);
                MD5 md5 = MD5.Create();
                bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(query.ToString()));
            }

            // 第四步:把二进制转化为大写的十六进制
            StringBuilder result = new StringBuilder();
            for (int i = 0; i < bytes.Length; i++)
            {
                result.Append(bytes[i].ToString("X2"));
            }

            return result.ToString();
        }


二、根据关键字搜索商品

                        string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                        IDictionary<string, string> parameters = new Dictionary<string, string>();
                        parameters.Add("app_key", appkey);
                        parameters.Add("method", "taobao.tbk.dg.material.optional");
                        parameters.Add("v", "2.0");
                        parameters.Add("timestamp", time);
                        parameters.Add("partner_id", "top-apitools");
                        parameters.Add("format", "json");
                        parameters.Add("sign_method", "md5");
                        parameters.Add("adzone_id", AdzoneId.ToString());
                        parameters.Add("need_free_shipment", "true");
                        parameters.Add("start_tk_rate", "20");//商品筛选-淘客佣金比率下限。如:1234表示12.34%
                        parameters.Add("is_tmall", "true");//商品筛选-是否天猫商品。true表示属于天猫商品,false或不设置表示不限
                        parameters.Add("sort", "tk_total_sales_des");//排序_des(降序),排序_asc(升序),销量(total_sales),淘客佣金比率(tk_rate), 累计推广量(tk_total_sales),总支出佣金(tk_total_commi),价格(price),匹配分(match)
                        parameters.Add("platform", "2");//链接形式:1:PC,2:无线,默认:1
                        parameters.Add("get_topn_rate", "0");
                        parameters.Add("q", item.keyword);//关键字
                        parameters.Add("include_good_rate", "true");//商品筛选-好评率是否高于行业均值。True表示大于等于,false或不设置表示不限
                        parameters.Add("include_pay_rate_30", "true");//商品筛选(特定媒体支持)-成交转化是否高于行业均值。True表示大于等于,false或不设置表示不限
                        parameters.Add("has_coupon", "true");//优惠券筛选-是否有优惠券。true表示该商品有优惠券,false或不设置表示不限
                        parameters.Add("need_prepay", "true");//商品筛选-是否加入消费者保障。true表示加入,false或不设置表示不限
                        parameters.Add("start_dsr", "49000");//商品筛选(特定媒体支持)-店铺dsr评分。筛选大于等于当前设置的店铺dsr评分的商品0-50000之间
                        parameters.Add("page_no", i.ToString());
                        parameters.Add("page_size", "20");
                        string sign = SignTopRequest(parameters, secret, "md5");
                        parameters.Add("sign", sign);

                        var uriBuilder = new UriBuilder(url);
                        var param = HttpUtility.ParseQueryString(string.Empty);
                        foreach (var item2 in parameters)
                        {
                            param[item2.Key] = item2.Value;
                        }
                        uriBuilder.Query = param.ToString();

称      呼:
联系方式:
您的评论:
技术支持:l.w.dong@qq.com www.luweidong.cn
广州市   wx:lwdred
Copyright © 2014 三味书屋 All Rights Reserved
技术支持:l.w.dong@qq.com  sitemap xml  sitemap html

粤公网安备44010602011869号

粤ICP备13031080号-1