要实现微信公众号消息回复,需完成接入验证并处理文本、图文消息。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免费学习笔记(深入)”;
关键点:
使用 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 = " " . time() . " "; 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 = "";$itemStr = '';foreach ($articles as $item) { $itemStr .= sprintf($itemTpl, $item['title'], $item['desc'], $item['pic'], $item['url']);}$reply = " " . time() . " " . count($articles) . " {$itemStr} ";echo $reply;
基本上就这些。确保服务器可访问、URL 正确配置、token 一致,就能完成接入和自动回复。不复杂但容易忽略细节。
以上就是php如何实现微信公众号消息回复_php接入微信公众平台验证与文本图文回复逻辑的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1338762.html
微信扫一扫
支付宝扫一扫