<?php
define('AK','338E13B4b094109349d5d9fe36aeb385');
define('URL', 'http://api.map.baidu.com/place/v2/search'); //API 请求地址
class Weixin
{
public $token = '';//token
public $debug = false;//是否debug的状态标示
public $setFlag = false;
public $msgtype = 'text'; //('text','image','location')
public $msg = array();
public function __construct($token,$debug)
{
$this->token = $token;
$this->debug = $debug;
}//获得用户发过来的消息(消息内容和消息类型 )
public function getMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if ($this->debug) {
$this->write_log($postStr);
}
if (!empty($postStr)) {
$this->msg = (array)simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$this->msgtype = strtolower($this->msg['MsgType']);
}
}//回复文本消息
public function makeText($text='')
{
$CreateTime = time();
$FuncFlag = $this->setFlag ? 1 : 0;
$textTpl = "<xml>
<ToUserName><![CDATA[{$this->msg['FromUserName']}]]></ToUserName>
<FromUserName><![CDATA[{$this->msg['ToUserName']}]]></FromUserName>
<CreateTime>{$CreateTime}</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%s</FuncFlag>
</xml>";
return sprintf($textTpl,$text,$FuncFlag);
}//根据数组参数回复图文消息
public function makeNews($newsData=array())
{
$CreateTime = time();
$FuncFlag = $this->setFlag ? 1 : 0;
$newTplHeader = "<xml>
<ToUserName><![CDATA[{$this->msg['FromUserName']}]]></ToUserName>
<FromUserName><![CDATA[{$this->msg['ToUserName']}]]></FromUserName>
<CreateTime>{$CreateTime}</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<Content><![CDATA[%s]]></Content>
<ArticleCount>%s</ArticleCount><Articles>";
$newTplItem = "<item>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<PicUrl><![CDATA[%s]]></PicUrl>
<Url><![CDATA[%s]]></Url>
</item>";
$newTplFoot = "</Articles>
<FuncFlag>%s</FuncFlag>
</xml>";
$Content = '';
$itemsCount = count($newsData['items']);
$itemsCount = $itemsCount < 10 ? $itemsCount : 10;//微信公众平台图文回复的消息一次最多10条
if ($itemsCount) {
foreach ($newsData['items'] as $key => $item) {
if ($key<=9) {
$Content .= sprintf($newTplItem,$item['title'],$item['description'],$item['picurl'],$item['url']);
}
}
}
$header = sprintf($newTplHeader,$newsData['content'],$itemsCount);
$footer = sprintf($newTplFoot,$FuncFlag);
return $header . $Content . $footer;
}
public function reply($data)
{
if ($this->debug) {
$this->write_log($data);
}
echo $data;
}
public function valid()
{
if ($this->checkSignature()) {
if( $_SERVER['REQUEST_METHOD']=='GET' )
{
echo $_GET['echostr'];
exit;
}
}else{
//write_log('认证失败');
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$tmpArr = array($this->token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
public function map($lox,$loy,$key){
//需要PHP 5 以上以及安装curl扩展
$params = array('ak'=>AK,'output'=>'json','query'=>$key,'page_size'=>'10','page_num'=>'0','scope'=>'2','location'=>$lox.','.$loy,'radius'=>'5000');
$queryString = ''; //请求的URL参数
while (list($key, $val) = each($params))
{
$queryString .=('&'.$key.'='.urlencode($val));
}
$url = URL.'?'.$queryString;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);// 设置你要访问的URL
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_ENCODING, 'UTF-8');
$data = json_decode(curl_exec($curl), true);// 运行cURL,请求API
curl_close($curl);// 关闭URL请求
//var_dump($data);
//echo $data['total']."<br>";
//echo $data['results'][0]['name'];
//$this->makeText("123");
$record=array();
$record[0]=array(
'title' =>'周边5公里内酒店信息',
'description' =>'',
'picurl' => '',
'url' =>''
);
//$this->makeText(count($data['results']));
if(count($data['results'])==0)
{
$reply = $this->makeText('很抱歉,周边5公里内未找到**酒店。');
return $reply;
exit;
}
for($i=1;$i<=count($data['results']);$i++)
{
$distance = sprintf("%01.1f",($data['results'][$i-1]['detail_info']['distance']/1000));
$title = $i."、 ".$data['results'][$i-1]['name']." ¥".intval($data['results'][$i-1]['detail_info']['price'])." ".$distance."公里 ".$data['results'][$i-1]['telephone'];
$description = '';
$picurl = ';
$url = '';
$record[$i]=array(
'title' =>$title,
'description' =>$description,
'picurl' => $picurl,
'url' =>$url
);
}
$results['items'] = $record;
$reply = $this->makeNews($results);
return $reply;
}
private function write_log($log){}
}
?>

磐石团队
- 粉丝: 7
最新资源
- 人工智能现在还不能做什么.docx
- 互联网+时代优秀传统文化融入高职思政教育方法解析.docx
- 大学计算机基础课程教改实践.docx
- 单片机程控滤波器方案设计课程方案设计.doc
- 操作系统应用基础WindowsXP服务详解.doc
- 通信工程项目管理及风险研究.docx
- 网络时代背景下社会热点事件的教育引导探析.docx
- 基于BP神经网络的轨道客流短期预测.docx
- 计算机管理模式下电子病案信息技术的应用.docx
- 电力基建项目管理实施规划(施工组织设计)(范本).doc
- 基于云计算的造价信息管理平台云架构和云服务.docx
- 消防部队物流信息化的探索与研究.docx
- 大数据思维特征.docx
- 项目管理工作总结.doc
- 杀毒软件测试方案.docx
- 北京大学算法设计方案与分析课09年期末试题.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



- 1
- 2
- 3
- 4
- 5
- 6
前往页