做淘客,选产品是一件非常烦的事,所以自己按淘宝api的文档,并参考了几个api例子,做成了这个php类,有了这个类就可以按关键词直接获取产品列表了,真是方便呀。
<?php
class taobaoke{
protected $url = 'http://gw.api.taobao.com/router/rest?'; //正式环境提交URL
protected $appKey = '88888888'; //填写自己申请的AppKey
protected $appSecret = 'xxxxxxxxxxxxxxxxxxxxxx'; //填写自己申请的$appSecret
protected $userNick; //淘宝昵称,这是你帐号的淘宝昵称,所得佣金就是用这个接收的
//参数数组
protected $paramArr = array(
/* API系统级输入参数 Start */
'method' => 'taobao.taobaoke.items.get', //API名称
//'timestamp' => date('Y-m-d H:i:s'),
'format' => 'xml', //返回格式,本demo仅支持xml
//'app_key' => $appKey, //Appkey
'v' => '2.0', //API版本号
'sign_method'=> 'md5', //签名方式
/* API系统级参数 End */
/* API应用级输入参数 Start*/
'fields' => 'num_iid,title,pic_url,price,click_url,volume,commission',//返回字段
//'nick' => $userNick,
'keyword'=>'连衣裙',
'cid'=>0,
'start_price'=>'30',
'end_price'=>'99999',
'start_credit'=>'4heart',//卖家信用
'sort'=>'commissionVolume_desc',//默认排序:总支出佣金从高到低
'start_commissionRate'=>'1000',//佣金比率下限,如:1234表示12.34%
'end_commissionRate'=>'8000',//佣金比率上限,如:1234表示12.34%
'start_commissionNum'=>'10',//30天累计推广量上限
'end_commissionNum'=>'900000',//30天累计推广量下限
'real_describe'=>'true',//是否如实描述(即:先行赔付)商品
'page_no'=>1,//结果页数
'page_size'=>10,//每页产品数
/* API应用级输入参数 End*/
);
/**
*构造函数
*@$mainParam:string,为四个用英文逗号隔开的参数,这四个参数依次为关键词、佣金比率下限和价格下限、30天累计推广量上限,关键词为必填项,后面三个为可选项
*@$userNick:string
*/
public function __construct($mainParam='关键词,1000,30,10',$userNick='淘宝昵称'){
$this->userNick=$userNick;
$mainParamArr=explode(',',$mainParam);
$this->paramArr['keyword']=$mainParamArr[0];
if(isset($mainParamArr[1])){
$this->paramArr['start_commissionRate']=$mainParamArr[1];
}
if(isset($mainParamArr[2])){
$this->paramArr['start_price']=$mainParamArr[2];
}
if(isset($mainParamArr[3])){
$this->paramArr['start_commissionNum']=$mainParamArr[3];
}
$this->paramArr['timestamp']=date('Y-m-d H:i:s');
$this->paramArr['nick']=$this->userNick;
$this->paramArr['app_key']=$this->appKey;
}
public function getTaokeResult(){
//生成签名
$sign = $this->createSign($this->paramArr,$this->appSecret);
//组织参数
$strParam = $this->createStrParam($this->paramArr);
$strParam .= 'sign='.$sign;
//构造Url
$url = $this->url.$strParam;
//连接超时自动重试
$cnt=0;
while($cnt < 3 && ($result=@$this->vita_get_url_content($url))===FALSE){
$cnt++;
}
//解析Xml数据
$result = $this->getXmlData($result);
return $result['taobaoke_items']['taobaoke_item'];
}
//获取数据兼容file_get_contents与curl
protected function vita_get_url_content($url) {
if(!function_exists('curl_init')) {
$file_contents = file_get_contents($url);
} else {
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
//设置允许curl请求连接的最长秒数,如果设置为0,则无限
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//设置允许curl所有动作执行的最长秒数,如果设置为0,则无限
curl_setopt ($ch, CURLOPT_TIMEOUT,$timeout*3);
$file_contents = curl_exec($ch);
curl_close($ch);
}
return $file_contents;
}
//签名函数
protected function createSign ($paramArr,$appSecret) {
//global $appSecret;
$sign = $appSecret;
ksort($paramArr);
foreach ($paramArr as $key => $val) {
if ($key !='' && $val !='') {
$sign .= $key.$val;
}
}
$sign = strtoupper(md5($sign.$appSecret));
return $sign;
}
//组参函数
protected function createStrParam ($paramArr) {
$strParam = '';
foreach ($paramArr as $key => $val) {
if ($key != '' && $val !='') {
$strParam .= $key.'='.urlencode($val).'&';
}
}
return $strParam;
}
//解析xml函数
protected function getXmlData ($strXml) {
$pos = strpos($strXml, 'xml');
if ($pos) {
$xmlCode=simplexml_load_string($strXml,'SimpleXMLElement', LIBXML_NOCDATA);
$arrayCode=$this->get_object_vars_final($xmlCode);
return $arrayCode ;
} else {
return '';
}
}
protected function get_object_vars_final($obj){
if(is_object($obj)){
$obj=get_object_vars($obj);
}
if(is_array($obj)){
foreach ($obj as $key=>$value){
$obj[$key]=$this->get_object_vars_final($value);
}
}
return $obj;
}
}
?>
原创文章 http://www.yangwo.net/214/
使用方法:
1、配置 $appKey和$appSecret
2、直接实例化一个类,如
$taoke=new taobaoke('连衣裙,1000,50','笑望书');
$taokeArr=$taoke->getTaokeResult();
$taokeArr就是一个包含查询到的淘客数据的二维数组,根我们在数据库里查询多条记录返回的结果一样
3、可以用foreach()循环打印$taokeArr
<php
header("Content-Type:text/html;charset=UTF-8");
/*本程序功能:根卖家昵称获取卖家店铺sid,还有店铺标题*/
//config
$appKey = '12345678; //你的密匙
$appSecret = '123456789';
$usernick = 'grayvoice'; //你的用户名
$salenick= '缺水鱼儿'; //卖家昵称
//签名函数
function createSign ($paramArr) {
global $appSecret;
$sign = $appSecret;
ksort($paramArr);
foreach ($paramArr as $key => $val) {
if ($key !='' && $val !='') {
$sign .= $key.$val;
}
}
$sign = strtoupper(md5($sign));
return $sign;
}
//组参函数
function createStrParam ($paramArr) {
$strParam = '';
foreach ($paramArr as $key => $val) {
if ($key != '' && $val !='') {
$strParam .= $key.'='.urlencode($val).'&';
}
}
return $strParam;
}
//解析xml函数
function getXmlData ($strXml) {
$pos = strpos($strXml, 'xml');
if ($pos) {
$xmlCode=simplexml_load_string($strXml,'SimpleXMLElement', LIBXML_NOCDATA);
$arrayCode=get_object_vars_final($xmlCode);
return $arrayCode ;
} else {
return '';
}
}
function get_object_vars_final($obj){
if(is_object($obj)){
$obj=get_object_vars($obj);
}
if(is_array($obj)){
foreach ($obj as $key=>$value){
$obj[$key]=get_object_vars_final($value);
}
}
return $obj;
}
//参数数组
$paramArr = array(
'app_key' => $appKey,
'method' => 'taobao.shop.get',
'format' => 'xml',
'v' => '1.0',
'timestamp' => date('Y-m-d H:i:s'),
'fields' => 'sid,nick,title', /*想要返回的数据的相应参数,sid对应卖家店铺id,nick对应卖家昵称,这里其实不用返回,因为已经知道了嘛。title对应卖家店铺标题,也就是店铺名称*/
'nick' => $salenick //卖家昵称
);
//生成签名
$sign = createSign($paramArr);
//组织参数
$strParam = createStrParam($paramArr);
$strParam .= 'sign='.$sign;
//访问服务
$url = 'http://gw.api.taobao.com/router/rest'.$strParam;
$result = file_get_contents($url);
$result = getXmlData($result);
$sid = $result['shop']['sid']; //返回卖家店铺ID
$nick = $result['shop']['nick']; //返回卖家昵称
$title = $result['shop']['title']; //返回卖家店铺标题
>
<php echo '卖家店铺ID:'.$sid.'<br>';> <!-- 在页面打印店铺ID -->
<php echo '卖家昵称:'.$nick.'<br>';> <!-- 在页面打印卖家昵称-->
<php echo '店铺标题:'.$title.'<br>';> <!-- 在页面打印卖家店铺标题 -->