微信公众号开发:自动回复文本/图片/图文消息/关键词回复/上传素材/自定义菜单

对接流程

1、申请微信公众号测试账号
URL:https://mp.weixin.qq.com/debu...

2、登录,配置开发者服务器URL和Token

image.png

开发者服务器配置代码:
config.php

<?php
define("TOKEN", "weixin"); //TOKEN值
$wechatObj = new wechat();
$wechatObj->valid();
class wechat {
  public function valid() {
    $echoStr = $_GET["echostr"];
    if($this->checkSignature()){
      echo $echoStr;
      exit;
    }
  }
  private function checkSignature() {
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    if( $tmpStr == $signature ) {
      return true;
    } else {
      return false;
    }
  }
}
?>

URL是config.php在你服务器的URL
Token是上面代码自己设置的Token
image.png

搞定之后,就能完成接口配置的绑定。

开发

清空config.php的代码,粘贴下方代码,保存。

<?php

    // 页面编码
    header("Content-type:text/html;charset=utf-8");
    
    // 接收用户发送过来的XML消息
    $postStr = file_get_contents('php://input');
    
    // 使用SimpleXML进行解析XML
    $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
    
    // 消息发送方
    $fromUsername = $postObj->FromUserName;
    
    // 公众号
    $toUsername = $postObj->ToUserName;
    
    // 内容
    $content = trim($postObj->Content);
    
    // 消息类型
    $msgType = $postObj->MsgType;
    
    // 时间戳
    $time = time();
  
    // 文本消息XML模板
    $textTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <Content><![CDATA[%s]]></Content>
    </xml>";
    
    // 图片消息XML模板
    $imageTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <Image>
    <MediaId><![CDATA[%s]]></MediaId>
    </Image>
    </xml>";
    
    // 图片素材ID
    $media_id = "GHYb4PhayrbCAWgHCwkBQIAg_b46UI0Dl-xJukV-XoryFMp-t5c50_VqyId074_U";
    
    // 图文消息XML模板
    $newsTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></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>";
    
    // 根据关键词恢复
    if($content == '你好'){
        
        // 将文本消息发送给用户
        echo sprintf($textTpl,$fromUsername,$toUsername,$time,"text",$content);
    }else if($content == '图片'){
        
        // 将图片消息发送给用户
        echo sprintf($imageTpl,$fromUsername,$toUsername,$time,"image", $media_id);
    }else if($content == '图文'){
        
        // 将图文消息发送给用户
        echo sprintf($newsTpl,$fromUsername,$toUsername,$time,"news","这是一篇图文卡片消息","只需向公众号发送一条消息即可生成卡片!","https://d1.faiusr.com/2/AAEIABACGAAg_vuznQYogr-b2gIwuAg4uAg.jpg","https://www.qq.com");
    }
    
?>

体验

image.png

image.png

希望帮到您。

WeChat:sansure2016
Web:likeyunba.com
Date:2019-12-20
Author:Tanking

WeChat:sansure2016

4.4k 声望
308 粉丝
0 条评论
推荐阅读
我让chatGPT用PHP写一个MVC框架,不仅写出来,还能跑!
没想到写出来的框架确实挺简单的,但是又没觉得哪里不对,于是我尝试把这个框架放到服务器试试能不能跑起来,最后还真的可以跑起来,为了让大家能够看到这个框架的演示,我直接爬一个热搜,然后便于展示数据。

TANKING1阅读 1k

封面图
程序猿必读-防范CSRF跨站请求伪造
CSRF(Cross-site request forgery,中文为跨站请求伪造)是一种利用网站可信用户的权限去执行未授权的命令的一种恶意攻击。通过伪装可信用户的请求来利用信任该用户的网站,这种攻击方式虽然不是很流行,但是却...

mylxsw22阅读 15.2k评论 12

花了半个小时基于 ChatGPT 搭建了一个微信机器人
相信大家最近被 ChatGPT 刷屏了,其实在差不多一个月前就火过一次,不会那会好像只在程序员的圈子里面火起来了,并没有被大众认知到,不知道最近是因为什么又火起来了,而且这次搞的人尽皆知。

Java极客技术12阅读 3.8k评论 3

封面图
PHP转Go实践:xjson解析神器「开源工具集」
我和劲仔都是PHP转Go,身边越来越多做PHP的朋友也逐渐在用Go进行重构,重构过程中,会发现php的json解析操作(系列化与反序列化)是真的香,弱类型语言的各种隐式类型转换,很大程度的减低了程序的复杂度。

王中阳Go11阅读 2.8k评论 4

封面图
Git操作不规范,战友提刀来相见!
年终奖都没了,还要扣我绩效,门都没有,哈哈。这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。问题描述小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开...

王中阳Go6阅读 2.9k评论 4

封面图
图片防盗链破解 解决图片防盗链问题 反向代理
当客户端(浏览器)向服务器请求内容的时候,会提交一个header,这个header中包含了如:浏览器信息、cookie等内容,那么有一个叫referer的东东,也包含在这里面。

TANKING7阅读 11.8k评论 5

Hyperf 3.0 发布,PHP 新时代
在过去的一年半时间里,Hyperf 2.2 共发布了 35 个小版本,使 Hyperf 达到了一个前所未有的高度,这里也获得了一些不错的数据反馈。

huangzhhui5阅读 1.5k评论 1

封面图

WeChat:sansure2016

4.4k 声望
308 粉丝
宣传栏