公众平台 php,微信公众平台PHP开发

公众平台 php,微信公众平台PHP开发最近在做微信公众平台开发 一口气写了二十几个功能 挺有意思的 今天来分享一下开发经验 微信公众平台提供的接口很简单 先看看消息交互流程 说的通俗一些 用户使用微信发送消息 gt 微信将数据发送给开发者 gt 开发者处理消息并返回数据至微信 gt 微信把返回数据发送给用户 期间数据交互通过 XML 完成 就这么简单 下面写个实例 开发微信智能聊天机器人 1 注册微信公众平台账号 2

0818b9ca8b590ca3270a3433284dd417.png

最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的~

0818b9ca8b590ca3270a3433284dd417.png

今天来分享一下开发经验~

微信公众平台提供的接口很简单,先看看消息交互流程:

0818b9ca8b590ca3270a3433284dd417.png

说的通俗一些,用户使用微信发送消息 -> 微信将数据发送给开发者 -> 开发者处理消息并返回数据至微信 -> 微信把返回数据发送给用户,期间数据交互通过XML完成,就这么简单。

下面写个实例,开发微信智能聊天机器人:

1. 注册微信公众平台账号

2. 申请服务器/虚拟主机

没有服务器/虚拟主机的童鞋可以使用BAE和SAE,不多介绍。

3. 开启开发者模式

微信公众平台有两个模式,一个是编辑模式(傻瓜模式),简单但功能单一。另一个是开发者模式,可以通过开发实现复杂功能。两个模式互斥,显而易见,登录微信公众平台并通过“高级功能”菜单开启开发者模式。

4. 填写接口配置信息

同样是在“高级功能”菜单中配置,需要配置两项参数:

URL: 开发者应用访问地址,目前仅支持80端口,以“http://www.1990c.com/weixin/index.php”为例。

TOKEN: 随意填写,用于生成签名,以“1990c”为例。

填写完把下面代码保存为index.php并上传至http://www.1990c.com/weixin/目录,最后点击“提交”完成验证。

01

02

define(“TOKEN”,”1990c”);//TOKEN值

03

$wechatObj =new wechat();

04

$wechatObj->valid();

05

class wechat {

06

publicfunction valid() {

07

$echoStr=$_GET[“echostr”];

08

if($this->checkSignature()){

09

echo$echoStr;

10

exit;

11

}

12

}

13

14

privatefunction checkSignature() {

15

$signature=$_GET[“signature”];

16

$timestamp=$_GET[“timestamp”];

17

$nonce=$_GET[“nonce”];

18

$token= TOKEN;

19

$tmpArr=array($token,$timestamp,$nonce);

20

sort($tmpArr);

21

$tmpStr= implode($tmpArr );

22

$tmpStr= sha1($tmpStr );

23

if($tmpStr ==$signature) {

24

returntrue;

25

}else {

26

returnfalse;

27

}

28

}

29

}

30

?>

这玩意儿就是微信公众平台校验URL是否正确接入,研究代码没有实质性意义,验证完即可删除文件,就不详细说明了,有兴趣的童鞋可以查看官方文档。

5. 开发微信公众平台功能

OK,上面提到了,微信公众平台与开发者之间的数据交互是通过XML完成的,既然用到XML,当然得遵循规范,所以在着手开发之前先看看官方接口文档提供的XML规范,以文本消息为例:

当用户向微信公众账号发送消息时,微信服务器会POST给开发者一些数据:

01

02

03

04

05

06

07

08

09

10

11

12

13

23456

14

开发者在处理完消息后需要返回数据给微信服务器:

01

02

03

04

05

06

07

08

09

10

11

12

13

0

14

除文本消息外,微信公众平台还支持用户发送图片消息、地理位置消息、链接消息、事件推送,而开发者还可以向微信公众平台回复音乐消息和图文消息,各类消息XML规范也可以参见官方文档。

来看看官方提供的一个PHP示例,我做了一些精简:

01

02

$wechatObj =new wechat();

03

$wechatObj->responseMsg();

04

class wechat {

05

publicfunction responseMsg() {

06

07

//———- 接 收 数 据 ———- //

08

09

$postStr=$GLOBALS[“HTTP_RAW_POST_DATA”];//获取POST数据

10

11

//用SimpleXML解析POST过来的XML数据

12

$postObj= simplexml_load_string($postStr,’SimpleXMLElement’,LIBXML_NOCDATA);

13

14

$fromUsername=$postObj->FromUserName;//获取发送方帐号(OpenID)

15

$toUsername=$postObj->ToUserName;//获取接收方账号

16

$keyword= trim($postObj->Content);//获取消息内容

17

$time= time();//获取当前时间戳

18

19

20

//———- 返 回 数 据 ———- //

21

22

//返回消息模板

23

$textTpl= “

24

25

26

%s

27

28

29

0

30

“;

31

32

$msgType=”text”;//消息类型

33

$contentStr=’http://www.1990c.com’; //返回消息内容

34

35

//格式化消息模板

36

$resultStr= sprintf($textTpl,$fromUsername,$toUsername,

37

$time,$msgType,$contentStr);

38

echo$resultStr;//输出结果

39

}

40

}

41

?>

把代码保存为index.php并上传至http://www.1990c.com/weixin/目录,如果刚才没删除该文件,则直接覆盖。

现在用户通过微信公众平台发送任何消息公众账号均会返回一条内容为“http://www.1990c.com”的消息。

现在用户通过微信公众平台发送任何消息公众账号均会返回一条内容为“http://www.1990c.com”的消息。

接下来需要做的就是根据用户消息动态返回结果~

SimSimi(小黄鸡)是目前比较火的聊天机器人,我用CURL开发了一个免费的SimSimi(小黄鸡)接口,传入关键词会返回文本回复,这部分不是本文重点,就不多说明,直接上代码:

01

02

function SimSimi($keyword) {

03

04

//———– 获取COOKIE ———-//

05

$url =”http://www.simsimi.com/”;

06

$ch = curl_init($url);

07

curl_setopt($ch, CURLOPT_HEADER,1);

08

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

09

$content = curl_exec($ch);

10

list($header,$body) =explode(“\r\n\r\n”,$content);

11

preg_match(“/set\-cookie:([^\r\n]*);/iU”,$header,$matches);

12

$cookie =$matches[1];

13

curl_close($ch);

14

15

//———– 抓 取 回 复 ———-//

16

$url =”http://www.simsimi.com/func/req?lc=ch&msg=$keyword”;

17

$ch = curl_init($url);

18

curl_setopt($ch, CURLOPT_REFERER,”http://www.simsimi.com/talk.htm?lc=ch”);

19

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

20

curl_setopt($ch, CURLOPT_COOKIE,$cookie);

21

$content = json_decode(curl_exec($ch),1);

22

curl_close($ch);

23

24

if($content[‘result’]==’100′) {

25

$content[‘response’];

26

return $content[‘response’];

27

}else {

28

return ‘我还不会回答这个问题…’;

29

}

30

}

31

?>

把上面两段代码整合在一起就大功告成了,需要说明一点,微信服务器在5秒内收不到响应会断掉连接,通过此接口有可能会超时,且SimSimi已经屏蔽了BAE和SAE上的抓取请求,推荐使用SimSimi官方收费API,速度比较快~

最后附上微信公众平台智能聊天机器人源码:

转载地址:http://www.1990c.com/?p=932

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220746.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午7:45
下一篇 2026年3月17日 下午7:45


相关推荐

  • ipmitool介绍_ipmitool命令详解

    ipmitool介绍_ipmitool命令详解原文链接 https www cnblogs com EricDing p 8995263 html root localhost yuminstall yipmitool 安装这个包 serviceipmis ipmitool Iopenshell 可以直接进入本地 BMCsh 一 开关机 重启 1 查看开关机状态 ipmitool H BMC 的管

    2026年3月19日
    2
  • Java图形用户界面设计音乐播放器

    Java图形用户界面设计音乐播放器Java 图形用户界面设计音乐播放器设计思路音乐播放器的基础是可以播放音乐 所以要有一个实现播放音乐功能的类 audioplay 图形界面就是通过动作调用 audioplay 里面的函数 关于实现播放器图形界面的步骤是 先设计好软件界面 再去添加监听器 实现播放 暂停 上一首 下一首 循环播放 导入音乐 播放音乐等功能 我参考的是音乐的软件界面 实现音乐播放的基本功能 并添加新功能 实现界面 实现步骤 设计一个完整的播放器界面 并添加按钮响应播放器界面的背景用的是音乐的背景需要的控件有

    2026年3月17日
    2
  • Fdfs环境搭建及整合Java

    Fdfs环境搭建及整合JavaFdfs 环境搭建及整合 Java 一 fdfs 依赖安装安装 gcc 编译时需要 FastDFS 是 C 语言开发 安装 FastDFS 需要先将官网下载的源码进行编译 编译依赖 gcc 环境 如果没有 gcc 环境 需要安装 gccyuminstal ygccgcc c 安装 libevent 运行时需求 若安装了桌面图形界面 就不需要安装 FastDFS 依赖 libevent 库 yum yinstalllibe 运行时路径 在 linux 文件系统我们需要新建两个目录 一个目录为我们

    2026年3月26日
    2
  • INSERT DELAYED使用总结

    INSERT DELAYED使用总结今天研究了下 insertdelaye 这个特性 背景 RD 反馈 他有一个异步的队列缓冲表 现在在做优化 看如果用 insertdelaye 能不能提升性能 这个业务要求呢 本来就是异步插入到数据库的 所以并不是那么急着访问 听着 好像延迟插入也没什么不妥哈 环境 mysql5 6innodb 表 MySQL 的这个特性只是听说过 没仔细研究过 趁这个机会

    2026年3月17日
    1
  • 设置ntp服务器同步时间_安卓设置ntp服务器地址

    设置ntp服务器同步时间_安卓设置ntp服务器地址有时服务器需要调整时区并调整时间,需要用到的命令:ntpdate一般Linux系统都默认安装了NTP服务,如果没有安装的话,也可以直接使用yum安装,yum安装命令为:yuminstall-yntpdate首先修改一下时区为上海时区:cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime然后选择国家授时中心的服务器地址:ntpdate210…

    2022年5月3日
    312
  • OpenClaw 是什麼?從 Moltbot 爆紅到 1,600 萬美元詐騙:這個 AI 代理人如何在 72 小時內撕碎矽谷的安全防線

    OpenClaw 是什麼?從 Moltbot 爆紅到 1,600 萬美元詐騙:這個 AI 代理人如何在 72 小時內撕碎矽谷的安全防線

    2026年3月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号