[文章作者:张宴 本文版本:v1.0 最后修改:2012.02.16 转载请注明原文链接:http://blog.zyan.cc/taobaoke_click_urls/]

  根据淘宝商品 num_iid 批量生成淘宝客(什么是淘宝客?)链接的 PHP 文件内容如下。

  淘宝 API 有调用次数限制,一次 API 调用,可以最大返回40个商品的淘宝客链接,因此,在本函数内,如果需要批量生成的淘宝商品 num_iid 数大于40,将按照40个一次,分多次调用。如果调用淘宝 API 查询过的商品 num_iid,不管其是否有淘宝客链接(有些商品没有淘宝客推广链接),都将利用 Memcached 缓存起来,下次直接查缓存,不会重复调用淘宝 API。

<?php
require_once(dirname(__FILE__).'/TopSdk.php'); //引用淘宝开放平台 API SDK

function object2Array($d)
{
        if (is_object($d))
        {
            $d = get_object_vars($d);
        }

        if (is_array($d))
        {
            return array_map(__FUNCTION__, $d);
        }
        else
        {
            return $d;
        }
}


/*********************************************
* 函数名:get_taobaoke_link ($num_iids)
* 函数用途:通过淘宝商品 num_iids 获取其对应的淘宝客手机版链接
* 创建时间:2012-02-14
* 创建人:张宴 net@zyan.cc
* 参数说明:
*    $num_iids   淘宝商品ID(支持多个商品)数组,示例如下:
*          $num_iids[] = "13583512568";
*          $num_iids[] = "10809380078";
*          $num_iids[] = "10809380079";  
* 返回值:
*    下标为淘宝商品 num_iid ,值为淘宝客链接 click_url 的二维数组。如果无淘宝客链接,click_url 为空字符串,示例如下:
*          array(3) {
*            ["13583512568"]=>
*            string(191) "http://auction1.wap.taobao.com/auction/item_detail-0db2-13583512568.jhtml?tks=jUTwPLMDtUUNEZhqfEuTZqkZhGw1LA7%2BzCJBXCj27NpurHxjZN70Amg0DVaFU61pfnHwW%2FI4MZGm%0Awgb69kbb1NL8uwtu%2BDnyAunBCVDP"
*            ["10809380078"]=>
*            string(187) "http://auction1.wap.taobao.com/auction/item_detail-0db2-10809380078.jhtml?tks=jUTwPLMDtUUNEGWhOOgVVuX%2BJKYt7fesyuZjEe7hvmpTJxYDfK8i1Wpvfl7lwI7nzD9W8M352v6E%0AyuUtsKun81AGltKzJWCYPiVDiOeC"
*            ["10809380079"]=>
*            string(0) ""
*          }  
*********************************************/
function get_taobaoke_link ($num_iids) {
  $memcache = new Memcache;
  $memcache->connect('127.0.0.1', 11911); //Memcached 缓存服务器地址
  $click_urls = $memcache->get($num_iids);
  
  foreach ($num_iids AS $num_iid) {
    if (!isset($click_urls[$num_iid])) {
      $tbapi_num_iids_arr[] = $num_iid;
    }
  }
  
  if (!empty($tbapi_num_iids_arr)) {
    $numbers = count($tbapi_num_iids_arr);
    $numbers_max = 40; //淘宝 API 限制最大返回40条记录
    if ($numbers > 0) {
      $numbers_times = ceil($numbers / $numbers_max); //第一层循环的循环次数
      $numbers_start = 0;
      $numbers_end = $numbers_max;
      for ($numbers_i = 1; $numbers_i <= $numbers_times; $numbers_i++) {
        for ($numbers_j = $numbers_start; $numbers_j < $numbers_end; $numbers_j++) {
          if ($numbers_j >= $numbers) {
            break;
          }
          $tbapi_num_iids_arr_sp[] = $tbapi_num_iids_arr[$numbers_j];
        }
        
        $numbers_start = $numbers_start + $numbers_max;
        $numbers_end = $numbers_end + $numbers_max;
        
        $tbapi_num_iids = implode(",", $tbapi_num_iids_arr_sp);
        $c = new TopClient;
        $c->appkey = 12498835; //淘宝开放平台 API 接口 App Key
        $c->secretKey = "745db5f8e316f9f1aa8310a7568d6566"; //淘宝开放平台 API 接口 App Secret
        $c->format = "json";
        $req = new TaobaokeItemsConvertRequest;
        $req->setFields("num_iid,click_url");
        $req->setNumIids($tbapi_num_iids);
        $req->setPid(29509662); //淘宝联盟(阿里妈妈)PID
        $req->setIsMobile("true"); //如果要生成手机页面的淘宝客链接,选择 true;网页版选择 false
        $resp = $c->execute($req);
        $res = object2Array($resp);
  
        if (isset($res["taobaoke_items"]["taobaoke_item"])) {
          $links = $res["taobaoke_items"]["taobaoke_item"];
          foreach ($links as $value) {
            $memcache->set($value["num_iid"], $value["click_url"], MEMCACHE_COMPRESSED, 0);
            $click_urls[(string)$value["num_iid"]] = $value["click_url"];
          }
        }
        
        unset($tbapi_num_iids_arr_sp);
        unset($tbapi_num_iids);
        unset($resp);
        unset($res);
        unset($links);
        unset($value);
      }
    }
  }
  
  foreach ($num_iids AS $num_iid) {
    if (!isset($click_urls[$num_iid])) {
      $memcache->set($num_iid, "", MEMCACHE_COMPRESSED, 0);
      $click_urls[(string)$num_iid] = "";
    }
  }  
  
  $memcache->close();
  return $click_urls;
}

//演示
$num_iids[] = "13583512568";
$num_iids[] = "10809380078";
$num_iids[] = "10809380079";
$click_urls = get_taobaoke_link ($num_iids);
var_dump($click_urls);
?>




  淘宝开放平台(http://open.taobao.com/) PHP SDK 下载:


  申请淘宝 API 的 App Key 和 App Secret ,可以到 http://my.open.taobao.com/ 进行。

  点击在新窗口中浏览此图片




技术大类 » PHP/JS/Shell | 评论(188) | 引用(0) | 阅读(94584)
Ilana Email Homepage
2012-12-3 09:24
mulberry outlet carousing with the whole Irish bar. Or, if Mr. KEAN does not approve of this rough regimen, he .
豆子 Homepage
2012-12-17 16:07
不错啊,研究分析中…… http://www.movaner.com
RUN-蚂蚁 Email Homepage
2012-12-20 13:38
没看懂怎么搞的我的站淘宝女装 www.xintaodi.com淘宝女装风衣,永远不会被淘汰--实用、搭配度高、漂亮,是女性衣橱里必备的经典常品。想把风衣传出明星感觉吗?好莱坞女星们也正用它演绎着各种新形象,或温柔可人,或俏皮利落,或追赶流行这件棉质的大衣,系上宽版腰带就可以单穿成裙装,它不仅沿袭了前一季
fdafdafdsa Homepage
2012-12-22 09:17
狗狗爱打扮 Homepage
2013-2-26 18:09
博主,TaobaokeItemsConvertRequest此接口已经下架了,看到此消息的话,改下文章内容吧。与这个API相对应的改成JS了。我是在昨天晚上才发现的。请看这里:http://open.taobao.com/support/my_question_detail.htm?spm=0.0.0.0.FX7zSi&id=128739
9.9包邮 Homepage
2013-3-11 17:08
9.9包邮 来学习 http://www.ruyig.com
andycw Homepage
2013-5-15 15:40
楼主牛人啊!感谢分享http://igosj.byethost11.com 2013千元四核手机强势登陆!
在路上
2013-5-16 21:08
楼主 学国际贸易的  计算机技术这么好 ? 我也学国贸的 惭愧啊
POWERMEN
2013-6-8 16:09
郁闷啊,这几天APPKEY突然调不到淘宝商品了!四核不足千元!去看看http://igosj.byethost11.com/ 总有一款适合你!
百分之一 Homepage
2013-9-24 11:04
Fatal error: Class 'Memcache' not found
磨延城 Email Homepage
2013-10-21 18:02
磨途歌学习了
淘宝网女装 Homepage
2014-2-20 21:56
smile花匣_淘宝网女装,http://www.huabox.cn 学习经验了!
MELLE Homepage
2014-3-22 22:18
突然路过,发现真的很不错啊,学习了,http://www.52lingxiu.com谢谢楼主分享
jolin9339 Homepage
2014-7-31 15:00
9.9包邮 www.jipiaoku.cn   学习了
过客云
2014-9-24 22:35
大哥演而以嘛,何必搞memecache 呢,累死我了
过客云
2014-9-24 22:36
memcache ..累死我了..www.cziyi.cn
魅力男装 Email Homepage
2014-11-15 10:47
不错学习了 魅力男装www.zbcrtc.com
Steven Email Homepage
2015-3-19 02:18
Thank you for this post Weight Loss Tea
steven Email Homepage
2015-3-20 05:28
分页: 4/10 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]