1. 实现微信接入
<?php
class WechatAccess
{
private $token = TOKEN;
public function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$echostr = $_GET["echostr"];
// $token = TOKEN;
$tmpArr = array($this->token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if ($tmpStr == $signature) {
return $echostr;
} else {
return false;
}
}
}
2. 实现功能 当用户关注时 回复文本消息你好
3. 当用户在公众号中回复内容时,回复图片消息。
4. 当用户在公众号发送固定内容(只要内容中存在指定内容即可,未必全匹配)时,回复图文消息。
扩展:当用户发送指定内容时,随机发送一种类型消息
class Message extends WechatAccess
{
function postText()
{
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$this->checkSignature();
} elseif ($_SERVER['REQUEST_METHOD'] == 'POST') {
$xml = file_get_contents('php://input');
if (!empty($xml)) {
$postObj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
if ($postObj->MsgType == 'event') {
if ($postObj->Event == 'subscribe') {
$content = '你这么好看,关注我就对了';
$this->text($toUser, $fromUser, $time, $content);
}
} elseif ($postObj->MsgType == 'text' && preg_match('/\d/S', $postObj->Content)) {
$content = '您好,有什么需要帮助你的吗?';
$this->text($toUser, $fromUser, $time, $content);
} elseif ($postObj->MsgType == 'text' && preg_match('/^文章/', $postObj->Content)) {
$title = '叮!请查收『Dr.Yu开学护肤指南』· 文末正装礼';
$description = '新学期,玩点厉害的,宠粉开始...';
$picurl = 'https://img.zcool.cn/community/0114705c45d80ea801213f26f0c42c.gif';
$url = 'https://php.cn';
$this->ImgText($toUser, $fromUser, $time, $title, $description, $picurl, $url);
} elseif ($postObj->MsgType == 'text' && preg_match('/^aa/', $postObj->Content)) {
$title = '叮!请查收『Dr.Yu开学护肤指南』· 文末正装礼';
$description = '新学期,玩点厉害的,宠粉开始...';
$picurl = 'https://img.zcool.cn/community/0114705c45d80ea801213f26f0c42c.gif';
$url = 'https://php.cn';
$content = '随机';
$arr = array($this->ImgText($toUser, $fromUser, $time, $title, $description, $picurl, $url), $this->text($toUser, $fromUser, $time, $content));
array_rand($arr);
} elseif ($postObj->MsgType == 'image') {
}
}
}
}
private function text($toUser, $fromUser, $time, $content)
{
$str = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>
";
echo sprintf($str, $toUser, $fromUser, $time, $content);
}
private function ImgText($toUser, $fromUser, $time, $title, $description, $picurl, $url)
{
$str = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>1</ArticleCount>
<Articles>
<item>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<PicUrl><![CDATA[%s]]></PicUrl>
<Url><![CDATA[%s]]></Url>
</item>
</Articles>
</xml>
";
echo sprintf($str, $toUser, $fromUser, $time, $title, $description, $picurl, $url);
}
}