php发送服务号推送消息
注意: 编写发送消息之前需要在微信公众平台后台左边菜单找到基本配置 然后开启服务器配置
public function SendMsg()
{
// $postStr = $this->inputRequest('HTTP_RAW_POST_DATA');//使用的是php7取消了这个变量 需要用下面的这个获取到数据
$postStr = file_get_contents("php://input");
// 如果获取到数据之后 就进行下面的程序进行判断
if (!empty($postStr)){
libxml_disable_entity_loader(true);
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$msgType = $postObj->MsgType;//消息类型
$event = $postObj->Event;//时间类型,subscribe(订阅)、unsubscribe(取消订阅)
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
switch($msgType){
// 这个是关注的时候发送的消息
case "event":
if($event=="subscribe"){
// 获取token值
$this->get_access_token();
$access_token = $this->access_token;// token 值
$url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$fromUsername&lang=zh_CN";
$res = file_get_contents($url);
// 这个是用户的消息 包括 open unionid nickname(昵称) city(城市) sex(性别) subscribe_time(关注时间)
$rest = json_decode($res,true);
}
// 这个是关注之后需要给用户发送的内容
$contentStr = "";
}
break;
// 这个是用户回复消息的时候发送的内容 可以自定义内容 用户回复的消息内容是上面的$keyword
case "text":
$contentStr = "";
break;
}
$msgType = "text";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else {
// 如果没有获取到内容的话 就直接输出空字符串
echo "";
exit;
}
}
```