tiandi发现大众点评开发论坛里,有不少人问sign错误的问题,sign是什么呢?大众点评提供的API中,必须传递一个叫sign的参数,这个参数不仅包含了开发者的appkey和secret的信息,还包含了访问的url的链接,这个sign的最终作用是让大众点评识别出用户的访问究竟是来自怎样的客户端,然后做相关的后续操作,比如给开发者分成等等,所以可以说这个sign是重中之重,那么这个sign是如何来的呢?它不是简单的由字符串拼接而成,而是需要通过一系列算法得出的,只要其中有一步错误,就会得到错误的sign值。tiandi封装函数的目的也就是简化这一步,开发者只要定义好APPKEY和SECRET,并输入简单的参数,例如时间,地点,团购类型,而无需再考虑什么sign不sign的问题。
封装函数:todaynew($cityname,$today)
$cityname为城市名,例如shanghai。
$today为日期,格式为YYYY-MM-DD。
返回类型:Array。$data[count]为当日新增团购总数/$data[id_list]当日新增团购ID集合。
函数原型:
API名称: 获取每日新增团购ID列表 deal/get_daily_new_id_list
描述:获取指定城市每日新增团购ID列表
数据格式:JSON/XML
方法:HTTP GET
等级:普通
是否需要用户授权:否
请求URL:http://api.dianping.com/v1/deal/get_daily_new_id_list
函数源码:
/****************************************************/
/*当日新增API
/*para1:城市名
/*para2:日期 YYYY-MM-DD
/*return:当日新增的团购id集合
/*returntype: Array
/****************************************************/
function todaynew($cityname,$today)
{
$url= 'http://api.dianping.com/v1/deal/get_daily_new_id_list';
$params = array('format'=>'json','city'=>$cityname,'date'=>$today);
ksort($params);
//以下计算sign
$codes = APPKEY;
$queryString = '';
while (list($key, $val) = each($params))
{
$codes .=($key.$val);
$queryString .=('&'.$key.'='.urlencode($val));
}
$codes .=SECRET;
$sign = strtoupper(sha1($codes));
$url= $url. '?appkey='.APPKEY.'&sign='.$sign.$queryString;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
return $data;
}
注意事项:
APPKEY为大众点评提供的app key,应用唯一标识。
SECRET为大众点评提供的app secret。

懂代码真好啊!
懂代码真好,偶尔可以玩玩。
我咋记得你的主题是你自己写的啊
我都是用美团或者糯米。
我这样做也只是为了拿自己的回扣
好吧。