最近在开发淘宝订单与本司erp对接的php程序,每一家的api都大同小异,不同之处在登陆也就是取得系统信任的session,之后就万事大吉了。

如何去淘宝申请api接口的,自己去http://open.taobao.com/折腾吧,我就不说了,申请还是比较简单的。记得要设置回调的页面,还有Secret和Key。

利用API取得用户名和ID做自己网站的OpenID也是不错的哦。

淘宝卖家现在日订单上百的不在少数,手工接订单,或者依赖淘宝或淘宝的第三方程序都不是正解,很多淘宝卖家不是只在淘宝折腾的。

废话少说,上代码,该代码由三个页面组成,该示例三个页面都在一个目录。

config.php,定义全局:

<?php
header('Content-type: text/html; charset=utf-8');

$aSecret = 'XXXXXXXX';
$aKey = 'XXXXXXXX';
$aLogin = 'http://container.open.taobao.com/container?appkey=[key]&encode=utf-8';
$aUrl = 'http://gw.api.taobao.com/router/rest';
?>

login.php,登陆:

<?php
include('config.php');

if(empty($_COOKIE['as'])){
	$aSession = '';
	echo('<a href="'.str_replace('[key]', $aKey, $aLogin).'">Login</a>');
}else{
	$aSession = $_COOKIE['as'];
	echo('loged');
}
?>

callback.php,回调:

<?php
include('config.php');

if(!empty($_REQUEST['top_appkey'])
	&& !empty($_REQUEST['top_parameters'])
	&& !empty($_REQUEST['top_session'])
	&& !empty($_REQUEST['top_sign'])
	&& $_REQUEST['top_sign']==base64_encode(md5($_REQUEST['top_appkey'].$_REQUEST['top_parameters'].$_REQUEST['top_session'].$aSecret, true))){
	$aSession = $_REQUEST['top_session'];
	setcookie('as', $_REQUEST['top_session'], 0, '/');
	$aParameters=array();
	parse_str(base64_decode($_REQUEST['top_parameters']), $aParameters);
	echo('<pre>');
	print_r($aParameters);
	echo('</pre>');
}else{
	echo('<pre>');
	print_r($_REQUEST);
	echo('</pre>');
	exit;
}


function get_api($msg){
	$d = @json_decode($msg);
	return $d;
}

function getCurl($url, $data=null, $header=null){
	$c = curl_init($url);
	curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($c, CURLOPT_HEADER, false);
	curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
	if(!empty($data)){
		curl_setopt($c, CURLOPT_POST, 1);
		curl_setopt($c, CURLOPT_POSTFIELDS, $data);
	}
	if(!empty($header)){
		curl_setopt($c, CURLOPT_HTTPHEADER, $header);
	}
	$d['data'] = curl_exec($c);
	$d['header'] = curl_getinfo($c);
	curl_close($c);
	return $d;
}

$topurl=$aUrl;
$tu['method']='taobao.trades.sold.get';
$tu['session']=$aSession;
$tu['timestamp']=date('Y-m-d H:i:s');
$tu['format']='json';
$tu['app_key']=$aKey;
$tu['v']='2.0';
$tu['sign_method']='md5';

$tu['fields']='orders';
$tu['start_created'] = date('Y-m-d H:i:s', strtotime('-2 day'));

ksort($tu);

$sign=$aSecret;
foreach($tu as $k=>$v){
	$sign.=$k.$v;
}
$sign.=$aSecret;

$tu['sign'] =strtoupper(md5($sign));
$url=$topurl.'?'.http_build_query($tu, '', '&');
$d=getCurl($url);
echo('<pre>');
print_r(get_api($d['data']));
echo('</pre>');
?>

本代码需要php5,json,curl函数支持。

5 Comments

  • Saxon

    您好, 我有一些关於淘宝API 的問題想請教. 現在的淘宝API 主要都是关於賣家和淘宝客. 但我想做一个关於买家自身的程序, 但因為我看淘宝的文檔看到一头霧水, 希望賜教.

    請問淘宝API 能否做到用戶登入(其实我最不明白就是会員登入拿SESSION KEY 的部份), 然后拿回該会員的訂單或物流狀況呢? 我知道有有关這样的API, 但我不熟悉淘宝如果用API 寫登入的部份.

    希望 閣下能對我提供一些指引, 謝謝

  • 淘宝改规则了 现在自用型也要获取Sessionkey 如知道本地程序怎样不通过sdk获取Sessionkey请告知 谢谢!

  • 这篇文章帮了我大忙,多谢了。

  • yyyymm

    现在申请API使用的,必须都提交应用吧?申请API访问,对接您公司的ERP,您的这个思路照现在还行的通吗?

  • david

    可以自用,自己有淘宝店铺。

    也可以发布给别人使用,这个淘宝要审核

Leave a Reply