微信sdk调用

<?php 
// +----------------------------------------------------------------------
// 
// +-------------------------------------------------------------------------

define("FILE_PATH",""); //文件目录,空为根目录
require_once './system/system_init.php';

function wx_show($message)
{
	header("Content-Type:text/html; charset=utf-8");
	echo $message;
}

log_result(var_export($_REQUEST,true));
//log_result(var_export($_SERVER,true));

require APP_ROOT_PATH.'system/wechat/wechat.class.php';
//require APP_ROOT_PATH."system/wechat/CIpLocation.php";
require APP_ROOT_PATH."system/libs/words.php";

class weixinModule
{
	public $option;
	public $platform;
	public $account;

	private function init_option($authorizer_appid=0)
	{

		//添加微信接口
		//$weixin_conf = load_auto_cache("weixin_conf_account");
		$weixin_res = $GLOBALS['db']->getAll("select * from ".DB_PREFIX."weixin_account_conf");
		foreach($weixin_res as $k=>$v){
			$weixin_conf[$v['name']]=$v['value'];
		}
		//log_result(var_export($weixin_single,true));
		//log_result(var_export($weixin_conf,true));
		//log_result(3);
		$this->option = array(
				'appid'=>$weixin_conf['appid'],
				'appsecret'=>$weixin_conf['appsecret'],
				'token'=>$weixin_conf['token'],
				'encodingAesKey'=>$weixin_conf['encodingAesKey'],
				'debug'=>true,
		);

	}

	public function __construct()
	{
		//logger::write(print_r($_REQUEST,1));
		$this->init_option();
		//log_result(4);
		$this->platform = new Wechat($this->option);
		//log_result(var_export($this->option,true));
		$this->platform->log($_REQUEST);
	}
	//微信验证
	public function valid(){
		$re = $this->platform->valid();
		return $re;
	}

	//授权事件接收URL
	public function accept()
	{

		$platform= $this->platform;
		$result=$platform->valid();
		if($result['status']==1)
		{
			$msg=$result['info'];
			$platform->log($result);

			echo 'success';
		}
		else
		{
			//$platform->log($result);
		}
	}

	//公众号消息与事件接收URL
	public function gz_accept()
	{

		$platform= $this->platform;
		$platform->log("公众号消息与事件接收URL1");

		$platform->valid();

		if(true)
		{
 			//$msg= $platform->postxml;
			$msg =   $platform-> getRev()->getRevData();
 			$platform->log($msg);
			if($msg['ToUserName']=='gh_3c884a361561')
			{
				//测试
				if($msg['MsgType']=='event')
				{
					$this->platform->text($msg['Event'].'from_callback')->reply();
				}
				elseif($msg['MsgType']=='text')
				{
					if($msg['Content']=='TESTCOMPONENT_MSG_TYPE_TEXT')
					{
						$this->platform->text('TESTCOMPONENT_MSG_TYPE_TEXT_callback')->reply();
					}
					else
					{
						$query_auth_code = str_replace('QUERY_AUTH_CODE:','',$msg['Content']);
						if($query_auth_code)
						{
							$sendData = array();
							$sendData['msgtype'] =  'text';
							$sendData['text']['content'] = $query_auth_code.'_from_api';
							$sendData['touser'] = $msg['FromUserName'];
							$platform->test_sendCustomMessage($sendData,$query_auth_code);
						}
					}
				}
			}
			else
			{

				if($msg['MsgType']=='event')
				{
					if($msg['Event']=='CLICK')
					{
						//点击事件 查询关键字
						$condition =" i_msg_type='text'   ";
						$keywords = $msg['EventKey'];
						if($keywords)
						{
							$unicode_tag = str_to_unicode_string($keywords);
							$condition .= " and (MATCH(keywords_match) AGAINST('".$unicode_tag."' IN BOOLEAN MODE) or keywords = '".$keywords."') ";
						}
						$reply=$GLOBALS['db']->getRow("select * ,MATCH(keywords_match) AGAINST('".$unicode_tag."' IN BOOLEAN MODE) AS similarity from ".DB_PREFIX."weixin_reply where ".$condition);
						$this->responseReply($reply);
					}
					elseif($msg['Event']=='subscribe')
					{
					    $pid    = str_replace('qrscene_', '', $msg['EventKey']);

					    // 查看分享的用户是否有权限进行渠道分享
					    $is_open_scan = $GLOBALS['db']->getOne("select is_open_scan from ".DB_PREFIX."user where id=".intval($pid));
					    //logger::write('开启:'.$is_open_scan.', pid:'.$pid);
					    if ($pid && $is_open_scan){
					        $openid = $msg['FromUserName'];
					        $nowtime = $now = (time() - date('Z'));
					        //logger::write('开启:'.$is_open_scan.', pid:'.$pid);
					        $GLOBALS['db']->query("INSERT INTO ".DB_PREFIX."scan_subscribe_log (`openid`, `pid`, `create_time`) VALUES ('{$openid}', $pid, $nowtime) ON DUPLICATE KEY UPDATE pid={$pid}");
					    }


						//关注
						$condition ="   type=4 and default_close=0 ";
						$reply=$GLOBALS['db']->getRow("select *  from ".DB_PREFIX."weixin_reply where ".$condition);
						//$platform->log($reply);
						$this->responseReply($reply);
					}
					elseif($msg['Event']=='unsubscribe')
					{
						//用户取消关注
					}
				}
				elseif($msg['MsgType']=='location')
				{
					$ypoint = strim($msg['Location_X']);
					$xpoint = strim($msg['Location_Y']);
					$pi = 3.14159265;  //圆周率
					$r = 6378137;  //地球平均半径(米)

					$sql = "select * ,(ACOS(SIN(($ypoint * $pi) / 180 ) *SIN((y_point * $pi) / 180 ) + COS(($ypoint * $pi) / 180 ) * COS((y_point * $pi) / 180 ) * COS(($xpoint * $pi) / 180 - (x_point * $pi) / 180 ) ) * $r) as distance
					from ".DB_PREFIX."weixin_reply where scale_meter - ((ACOS(SIN(($ypoint * $pi) / 180 ) * SIN((y_point * $pi) / 180 ) + COS(($ypoint * $pi) / 180 ) * COS((y_point * $pi) / 180 ) * COS(($xpoint * $pi) / 180 - (x_point * $pi) / 180 ) ) * $r)) > 0   and i_msg_type='location' order by distance asc";
					$reply=$GLOBALS['db']->getRow($sql);
					$this->responseReply($reply);

				}
				elseif($msg['MsgType']=='text')
				{
					//点击事件 查询关键字
					$condition ="  i_msg_type='text' ";
					$keywords = $msg['Content'];
					if($keywords)
					{
						$unicode_tag = str_to_unicode_string($keywords);
						$condition .= " and (MATCH(keywords_match) AGAINST('".$unicode_tag."' IN BOOLEAN MODE) or keywords = '".$keywords."') ";
					}
					$platform->log("select * ,MATCH(keywords_match) AGAINST('".$unicode_tag."' IN BOOLEAN MODE) AS similarity from ".DB_PREFIX."weixin_reply where ".$condition);
	 				$reply=$GLOBALS['db']->getRow("select * ,MATCH(keywords_match) AGAINST('".$unicode_tag."' IN BOOLEAN MODE) AS similarity from ".DB_PREFIX."weixin_reply where ".$condition);
	 				$platform->log($reply);
					$this->responseReply($reply);
				}
			}
		}
	}
	private function responseReply($reply)
	{
		if(!$reply)
		{
			$condition ="    type=1 and default_close=0   ";
		  	$reply=$GLOBALS['db']->getRow("select *  from ".DB_PREFIX."weixin_reply where ".$condition);
		}
		if($reply['o_msg_type']=='text')
		{
		   	$content = htmlspecialchars_decode(stripslashes($reply['reply_content']));
			$content = str_replace(array('<br/>','<br />','&nbsp;'), array("\n","\n",' '), $content);
			$this->platform->text($content)->reply();
		 }
		 elseif($reply['o_msg_type']=='news')
		 {
  			$new=array();
		  	$url_data = unserialize($reply['data']);
		  	if($reply['ctl']!="url")
		  		$url = SITE_DOMAIN.wap_url("index",$reply['ctl'],$url_data);
		  	else
		  		$url = htmlspecialchars_decode(stripslashes($url_data['url']));



		  	$new[]=array('Title'=>$reply['reply_news_title'],'Description'=>$reply['reply_news_description'],'PicUrl'=>format_image_path($reply['reply_news_picurl']),'Url'=>$url);
		  	$article_count = 1;

		  	$sql = "select r.* from ".DB_PREFIX."weixin_reply as r left join ".DB_PREFIX."weixin_reply_relate as rr on r.id = rr.relate_reply_id  where rr.main_reply_id = ".$reply['id'];

            $relate_replys=$GLOBALS['db']->getAll($sql);

            $article_count = $article_count + intval(count($relate_replys));

            foreach($relate_replys as $k=>$item)
            {
                if($item)
                {
                	$url_data = unserialize($item['data']);
                	if($item['ctl']!="url")
                		$url = SITE_DOMAIN.wap_url("index",$item['ctl'],$url_data);
                	else
				 		$url = $url_data['url'];

                	$new[]=array('Title'=>$item['reply_news_title'],'Description'=>$item['reply_news_description'],'PicUrl'=>format_image_path($item['reply_news_picurl']),'Url'=>$url);
                }
            }
           	$this->platform->news($new)->reply();
        }
	}

}

$a = strim($_REQUEST['a']);
$obj = new weixinModule();
if($_SERVER['REQUEST_METHOD'] == "POST"){
 	$obj->gz_accept();
}else{
 	$obj->valid();
}

?>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值