好吧,又是一篇跟 iOS 开发无关的文章我有罪 不过话说回淘宝客 API 的调用,还是很坑爹的,光是各种参数的拼凑就花了我两天的时间去琢磨,还有 timestamp 变成一个莫名其妙的符号的问题总之就是各种闹心。记得当初解决这个问题的时候网上相关的内容甚少,不
好吧,又是一篇跟 iOS 开发无关的文章……我有罪……
不过话说回淘宝客 API 的调用,还是很坑爹的,光是各种参数的拼凑就花了我两天的时间去琢磨,还有 timestamp 变成一个莫名其妙的符号的问题……总之就是各种闹心。记得当初解决这个问题的时候网上相关的内容甚少,不知道现在有没有贴出相关的使用方法,如果没有的话……这篇文章就算积了德了。
淘宝客 API 官方地址
下面就贴代码,注释里会解释用法(以 taobao.taobaoke.items.get 这个 API 为例)
看下面的代码前假设你已经申请了淘宝开放平台的账号,知道啥是 pid,啥是 app_key,啥是 app_secret
//拼凑请求 api 的地址 //参数为需要查询的商品名称 function para($keyword){ $para = array( 'timestamp'=>date('Y-m-d H:i:s'), //设置 timestamp 参数,无需变更 'v'=>'2.0',//api 版本无需变更 'app_key'=>'12345678',//app_key,输你自己的! 'method'=>'taobao.taobaoke.items.get',//使用的 api 类型,自己看着调吧 'partner_id'=>'top-apitools',//貌似不用改,忘记了= = 'format'=>'json',//返回格式,json 或 xml 'sort'=>'credit_desc',//排序类型,有很多,credit_desc 是按信用降序,具体看官方文档 'keyword'=>$keyword,//要查找的商品名称 'pid'=>'12345678',// pid,输自己的! 'fields'=>"title,pic_url,price,click_url"//需要返回的数据类型,由于我只需要标题、图片、价格和链接,所以我只填了这4个,具体还可以返回什么看官方文档! ); return $para; } //生成签名,这个步骤最坑爹 function set_sign($keyword){ $secret = "ooxxooxooxx1234ooxxooxx1234";//secret,输自己的!! $para1 = para($keyword);//拼凑参数 ksort($para1);//排序,官方要求,不是为了美观好不好= = foreach($para1 as $key => $value){//URL 拼起来,为了下面加密生成签名用 $uri .= $key . $value; } $sign = strtoupper(md5($secret. $uri));//加密一炮,这个要求也是淘宝官方的,把secret和uri拼起来,然后md5,再全部取大写 return $sign; } //请求数据 function get_result($sign, $para){ $pa = ""; foreach($para as $key => $value){ if($key == 'keyword' || $key == 'timestamp')//注意 urlencode $value = urlencode($value); $pa .= $key . '=' .$value . '&'; } $pa = substr($pa, 0, -1); $url = "http://gw.api.taobao.com/router/rest?sign=". $sign.'&'. $pa; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $result = curl_exec($ch); curl_close($ch); $r = json_decode($result);//返回数据结果,爱咋用咋用! }
具体用法也很简单,直接调用 get_result 函数
get_result(set_sign("iphone"), para("iphone"));//突然发现get_result这个函数设计的也很坑爹,懒得优化了,将就着用吧!
本文网址:http://dev.ppios.com/2013/01/invoke-taobaoke-api-in-correctly/