您的位置:首页 > 其它

淘宝开放API菜鸟教程——根据卖家昵称获取卖家店铺ID

2013-09-29 11:40 477 查看
做淘客,选产品是一件非常烦的事,所以自己按淘宝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>';> <!-- 在页面打印卖家店铺标题 -->
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: