需完成配置、验证、消息解析和内容抓取四步闭环:先在微信公众平台获取AppID等参数并严格同步至ThinkPHP 6.0的config/wechat.php和.env;再通过WechatController实现signature校验与XML消息解析;最后用cURL模拟移动端抓取图文资讯并提取标题、摘要、图片及正文。

你需要在ThinkPHP 6.0项目中快速对接微信公众号并获取其发布的资讯内容,而不是泛泛查阅框架手册——手册本身不提供微信接口逻辑,真正要动的是配置、验证、消息解析和内容抓取四步闭环。
确认微信公众号开发环境已就绪
登录微信公众平台测试号后台(https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo),复制 AppID、AppSecret、Token 和 EncodingAESKey;这些值必须与你 ThinkPHP 6.0 项目的 config/wechat.php 中完全一致,【大小写、空格、换行符都算校验失败】。
在 .env 文件中补全:WECHAT_APP_ID=wxe04b675e6969594e、WECHAT_APP_SECRET=a5c2ac0263a64a5514dda2ce25c08598、WECHAT_TOKEN=2021、WECHAT_AES_KEY=sTZCTTDd9TKykgwDiyNUsbGFSW9l3VrdTcoB0BN3ozq。
用宝塔或 Nginx 配置域名时,确保服务器 IP 已加入微信后台「公众号设置 → 功能设置 → 服务器IP白名单」,否则所有回调请求会被微信直接拦截,连日志都看不到。
立即学习“PHP免费学习笔记(深入)”;
完成开发者模式验证(signature 校验)
创建控制器 WechatController.php,定义 verify 方法:
第一步:从 $_GET 中提取 timestamp、nonce、signature、echostr 四个参数,缺一不可;
第二步:构造数组 $arr = [$timestamp, $nonce, config('wechat.token')],调用 sort($arr, SORT_STRING) 进行字典序排序——【不能用 asort() 或 ksort(),它们保留键名顺序,拼接结果必然错】;
第三步:执行 $tmpStr = sha1(implode('', $arr)),严格比对 $tmpStr === $signature;
第四步:若相等且 echostr 存在,直接 echo $echostr 并 exit,微信即认为验证通过;否则返回 HTTP 200 空响应,微信会持续重试三次后标记为失效。
接收并解析用户发送的文本消息
方法一:原生处理(不依赖 SDK)
在 verify 方法验证通过后,追加 responseMsg() 处理 POST 请求:先判断 request()->isPost(),再读取原始 XML 数据 —— 必须用 file_get_contents('php://input'),【$_POST 永远为空,这是微信设计,不是 Bug】;
公众号运营|微信公众号|公众号一条龙|公众号全流程|自媒体运营|微信自动化|内容流水线|AIGC 工作流 — 公众号一条龙运营总控入口,覆盖选题→撰稿→审稿→排版→配图→发布等8个子技能,单条指令即可完成从零到上架的完整图文。面向公众号编辑、自媒体等用户。
调用 libxml_disable_entity_loader(true) 关闭外部实体加载,防止 XXE 攻击;
用 simplexml_load_string($rawXml, 'SimpleXMLElement', LIBXML_NOCDATA) 解析,注意 FromUserName、MsgType、Content 字段全是大驼峰命名,CreateTime 是字符串数字,需转为 (string)time() 才能用于回复。
方法二:使用 EasyWeChat 5.x
执行 composer require "overtrue/wechat:^5.0";
在 config/wechat.php 中填入 app_id、secret、token、aes_key;
控制器中 new \EasyWeChat\Factory::officialAccount(config('wechat'))→server→serve() 即可自动完成验证+消息分发,无需手动解析 XML。
主动抓取公众号历史图文资讯
微信官方不开放任意公众号文章列表接口,仅允许通过「客服消息」或「模板消息」触达用户,但可通过以下合法路径获取已发布内容:
① 使用微信公众号后台「素材管理 → 图文消息」导出 Excel,手动导入数据库;
② 若目标公众号启用「原创声明」且文章被微信收录,可用微信搜一搜 API(非公开接口,需逆向 Referer 和 Cookie);
③ 最稳定方式:用 cURL 模拟移动端访问公众号主页(如 https://mp.weixin.qq.com/mp/homepage?__biz=gh_xxx),提取 article_url 字段,再逐条请求;注意设置 User-Agent 为 iPhone 微信内置浏览器标识,否则返回 403;
④ 对每篇图文 URL 发起 GET 请求后,用 DOMDocument 加载 HTML,定位 meta[property="og:title"]、meta[property="og:description"]、meta[property="og:images"] 提取标题、摘要、首图;正文内容藏在 #js_content div 内,需 strip_tags() 清洗后保存。


















