要实现微信公众号消息回复,需完成接入验证并处理文本、图文消息。1. 接入验证:收到含signature、timestamp、nonce、echostr的GET请求后,将token、timestamp、nonce排序后SHA1加密,与signature比对,一致则返回echostr。2. 接收消息:通过php://input获取POST的XML数据,解析FromUserName、ToUserName、MsgType等字段。3. 回复文本:构造包含ToUserName、FromUserName、CreateTime、MsgType为text、Content的XML返回。4. 回复图文:设置MsgType为news,ArticleCount为图文数量,Articles下用item节点包含Title、Description、PicUrl、Url,最多8条。确保URL可访问、token一致即可完成对接。

要让 PHP 实现微信公众号的消息回复,包括接入验证和处理文本、图文消息,核心在于理解微信服务器的通信机制。微信通过一个唯一的 URL 接收和响应消息,这个 URL 需要由你的 PHP 程序提供支持。
1. 公众平台接入验证逻辑
微信在配置服务器 URL 时会发送 GET 请求进行验证,你需要正确响应 echostr 参数。
验证流程如下:
收到微信 GET 请求,包含 signature、timestamp、nonce 和 echostr 四个参数 将 token(自定义)、timestamp、nonce 三个字符串按字典序排序 拼接成一个字符串并进行 SHA1 加密 与 signature 对比,相同则原样返回 echostr 完成验证示例代码:$token = 'your_token'; // 自定义 token$signature = $_GET['signature'];$timestamp = $_GET['timestamp'];$nonce = $_GET['nonce'];$echostr = $_GET['echostr'];$tmpArr = array($token, $timestamp, $nonce);sort($tmpArr, SORT_STRING);$tmpStr = implode($tmpArr);$tmpStr = sha1($tmpStr);if ($tmpStr == $signature) { echo $echostr; exit;}登录后复制2. 接收用户消息并自动回复文本
验证通过后,微信会将用户发送的消息以 POST 方式推送给你。你需要解析 XML 数据,并根据消息类型返回对应内容。
立即学习“PHP免费学习笔记(深入)”;
神采PromeAI 将涂鸦和照片转化为插画,将线稿转化为完整的上色稿。
103 查看详情
关键点:
使用 php://input 获取原始 POST 数据 用 simplexml_load_string 解析 XML 提取 FromUserName、ToUserName、MsgType、Content 等字段 构造符合微信格式的 XML 响应文本回复示例:$postData = file_get_contents("php://input");if (!empty($postData)) { $msg = simplexml_load_string($postData, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUser = $msg->FromUserName; $toUser = $msg->ToUserName; $msgType = $msg->MsgType; if ($msgType == 'text') { $content = '你发送的是:' . $msg->Content; $reply = " <xml> <ToUserName><![CDATA[{$fromUser}]></ToUserName> <FromUserName><![CDATA[{$toUser}]></FromUserName> <CreateTime>" . time() . "</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[{$content}]></Content> </xml>"; echo $reply; }}登录后复制3. 图文消息回复实现方式
当需要回复图文消息时,MsgType 设为 news,并按微信规范组织 ArticleCount 和 Articles 节点。
注意限制:
最多支持 8 条图文 第一项显示封面图 Title 和 Description 可为空,但建议填写图文回复示例:$articles = [ ['title' => '欢迎关注', 'desc' => '这是第一条图文', 'pic' => 'https://example.com/1.jpg', 'url' => 'https://example.com'], ['title' => 'PHP 教程', 'desc' => '学习 PHP 开发微信应用', 'pic' => 'https://example.com/2.jpg', 'url' => 'https://example.com/php']];$itemTpl = " <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item>";$itemStr = '';foreach ($articles as $item) { $itemStr .= sprintf($itemTpl, $item['title'], $item['desc'], $item['pic'], $item['url']);}$reply = " <xml> <ToUserName><![CDATA[{$fromUser}]></ToUserName> <FromUserName><![CDATA[{$toUser}]></FromUserName> <CreateTime>" . time() . "</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>" . count($articles) . "</ArticleCount> <Articles> {$itemStr} </Articles> </xml>";echo $reply;登录后复制基本上就这些。确保服务器可访问、URL 正确配置、token 一致,就能完成接入和自动回复。不复杂但容易忽略细节。以上就是php如何实现微信公众号消息回复_php接入微信公众平台验证与文本图文回复逻辑的详细内容,更多请关注php中文网其它相关文章!

