微信公衆號-關注和取消關注

關注和取消關注php

<?php
define("APPID","wx4cff8e15a7a0801d");//填寫本身的APPID
define("APPSECRET","4d7cb4b8b54412d9ef0c6a7c011cd570");//填寫本身的APPSECRET
define("TOKEN", "weixin");//token隨便填,只要一致就行。
$wechat = new wechat();
$wechat->responseMsg();
 
class wechat{
    private $_appid;
    private $_appsecret;
    private $_token;
	private $tpl=array(
				//發送文本消息模板
				'text' => '	<xml>
							<ToUserName><![CDATA[%s]]></ToUserName>
							<FromUserName><![CDATA[%s]]></FromUserName>
							<CreateTime>%s</CreateTime>
							<MsgType><![CDATA[text]]></MsgType>
							<Content><![CDATA[%s]]></Content>
							</xml>',
	);
    public function __construct(){
        $this->_appid =APPID;
        $this->_appsecret =APPSECRET;
        $this->_token =TOKEN;
    }
	/**
	  *響應微信平臺發送的消息
	**/
    public function responseMsg()//全部的被動消息處理都從這裏開始
    {
		$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//得到用戶發送信息
		$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);//解析XML到對象
		switch($postObj->MsgType){
			case 'text': //文本處理
				$this->_doText($postObj);
				break;
			case 'event': //事件處理
				$this->_doEvent($postObj);
				break;
			default: exit;
		}
	}
    /**
	  *_doText():處理文本消息
	  *@postObj:響應的消息對象
	**/
	private function _doText($postObj)
	{
		$fromUsername = $postObj->FromUserName;
		$toUsername = $postObj->ToUserName;
		$keyword = trim($postObj->Content);
		$time = time();           
		if(!empty( $keyword ))
		{
			$contentStr='hello world!';
			exit;
			//這裏能夠作一些業務處理
			if($keyword == "hello")
				$contentStr = "Welcome to wechat world!";
			$msgType = "text";
			$resultStr = sprintf($this->tpl['text'], $fromUsername, $toUsername, $time, $contentStr);
			echo $resultStr;
		}
        exit;	
	}
	/**
	  *_doEvent():處理事件消息
	  *@postObj:響應的消息對象
	**/
	private function _doEvent($postObj){ //事件處理
		switch($postObj->Event){
			case  'subscribe': //訂閱
				$this->_doSubscribe($postObj);
				break;
			case 'unsubscribe': //取消訂閱
				$this->_doUnsubscribe($postObj);
				break;
			default:;
		}
	}
	/**
	  *處理關注事件
	  *@postObj:響應的消息對象
	**/
	private function _doSubscribe($postObj){
		$contentStr='歡迎您關注個人公衆號!';
		$str = sprintf($this->tpl['text'],$postObj->FromUserName,$postObj->ToUserName,time(),$contentStr);
		//還能夠保存用戶的信息到數據庫
		echo $str;	
	}
	
	/**
	  *處理取消關注事件
	  *@postObj:響應的消息對象
	**/
	private function _doUnsubscribe($postObj){
		//把用戶的信息從數據庫中刪除
		//獲取用戶的openid,在進行一些業務操做
		file_put_contents('useropenid.txt',$postObj->FromUserName);
	}
}
相關文章
相關標籤/搜索