Wechat微信公众平台开发

一、微信概述

1、历史背景

  • 1)2011年1月21日,腾讯推出微信应用程序。(张小龙)
  • 2)2012年8月20日,腾讯推出微信公众平台功能,同年11月开放第三方接口
  • 3)2013年11月注册用户量突破6亿,是亚洲地区最大用户群体的移动即时通讯软件。
  • 4)截止到2016年第二季度,微信已经覆盖中国 94% 以上的智能手机,月活跃用户达到 8.06亿,用户覆盖 200 多个国家、超过 20 种语言。
  • 微信公众平台是腾讯为了让用户申请和管理微信公众账号而推出的一个Web平台,而微信公众账号的操作管理在这个平台下进行。所有用户都在腾讯提供的统一微信公众平台下进行相关操作:
  • 平台地址:https://mp.weixin.qq.com/

2、微信与微信公众平台区别

  • 微信是基于点对点关系
  • 微信公众平台是基于一对多关系
  • 编辑模式与开发模式
  • 两种是互斥的
  • 编辑模式是平台内置的web系统
  • 开发模式可以通过腾讯的API接口进行二次开发
  • 不具备开发能力的运营者
  • 主要是进行品牌宣传、新闻媒体、自助客服的公众帐号
  • 运营初期,不需要特别多的功能
  • 开发模式系统升级、故障等特殊情况

3、微信编辑模式的使用

① 群发功能 :

订阅号(认证用户、非认证用户),1天只能群发1条消息(每天0点更新,次数不会累加)

服务号(认证用户、非认证用户),1个月(按自然月)内可发送4条群发消息(每月月底0点更新,次数不会累加)

② 自动回复

被添加自动回复(关注回复):当用户关注我们的微信公众平台时,系统会自动回复此信息。

消息自动回复:当用户回复的关键词与我们设定的关键字不匹配时,系统会自动回复此信息。

关键词自动回复:当用户回复相应的关键词与我们设定的关键词相匹配时,系统会自动回复与之对应的信息。

③ 自定义菜单

生成微信自定义菜单

二、阿里云服务器

1、阿里云

阿里云,阿里巴巴旗下公司,创立于2009年,是中国的云计算平台,服务范围覆盖全球200多个国家和地区。

2、创建阿里云服务器

地址:https://www.aliyun.com/

具体配置如下:

① 计费方式:按量付费

② 网络配置,专有网络,默认安全组

③ 实例配置,选择1核2G

④ 镜像,选择CentOS 6.8版本x32位

⑤ 设置管理员密码

开通成功后,如下图所示:

进入管理控制台,查看服务器的运行状态。

3、搭建LAMP环境

第一步:安装Apache软件

① 安装Apache软件

   yum install -y httpd

② 配置Apache自启动

   chkconfig httpd on

③ 启动Apache软件

   service httpd start

④ 解决第一次启动时ServerName错误

   vim /etc/httpd/conf/httpd.conf

设置ServerName如下图所示:

   serverName localhost:80

一定要重启Apache服务器

   service httpd restart

第二步:MySQL数据库安装

① 安装MySQL软件(客户端、服务器端、依赖库)

   yum install -y mysql mysql-server mysql-devel

② 设置MySQL自启动

   chkconfig mysqld on

③ 启动MySQL软件

   service mysqld start

④ 使用mysql指令进入MySQL数据库

   mysql -uroot

⑤ 设置MySQL密码

   set password=PASSWORD('mysql');

  flush privileages;

配置完成后,验证密码是否生效,如下图所示:

   mysql -uroot -p

第三步:PHP软件的安装与配置

① 安装php软件与php-mysql扩展库

   yum install -y php php-mysql

② 安装php扩展库

   yum install -y gd php-gd gd-devel php-xml php-common php-curl php-mbstring php-ldap php-pear php-xmlrpc php-imap

③ 重启Apache服务器

   service httpd restart

④ 找到Apache工作目录

Windows:htdocs目录

Linux:/var/www/html目录

⑤ 编写php代码,验证LAMP环境是否配置成功

   cd /var/www/html/

创建phpinfo.php文件并编写代码:

⑥ 打开浏览器,输入阿里云实例的公网IP

5、扩展功能:实现域名与服务器端的绑定

① 找到我们要绑定的域名

② 把58bug.com域名解析到服务器的公网IP中

③ 在服务器端对httpd.conf进行配置

   vim /etc/httpd/conf/httpd.conf

④ 添加虚拟主机

⑤ 保存后,重启Apache服务器

⑥ 使用域名访问服务器

四、微信的API接口

1、获取微信的API接口

地址:http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html

单击下载链接,下载PHP示例代码(微信API接口):

2、创建一个工程(使用Zend Studio)

① 创建wechat工程

② 复制wx_sample.php到wechat项目中

③ 更改wx_sample.php为api.php,代表微信的api接口

3、定义TOKEN密钥

 define('TOKEN','weixin');

4、使用FlashFxp软件上传api.php到阿里云服务器

5、在微信公众平台配置API接口

① 进入微信测试账号

② 填写url与token信息

如果系统提示配置成功,代表对接完毕。

③ 测试平台是否对接成功

当第一次向测试号发送信息时,服务器端没有任何响应,这并不代表没有对接成功,而代表我们并没有开启自动回复功能。

6、开启自动回复功能

在api.php页面,开启自动回复功能:

  $wechatObj->responseMsg();

保存文件并上传到服务器端,如下图所示:

测试是否开启成功,如下图所示:

7、微信的API接口分析(api.php)

1)定义TOKEN密钥

2)生成$wechatObj对象

 $wechatObj = new wechatCallbackapiTest();

3)调用valid方法实现数据验证

   $wechatObj->valid();

详解valid方法:

打开开发者文档à接入指南à验证服务器地址的有效性

4)开启自动回复

5)responseMsg函数详解

① 解析XML格式的数据

② 解析XML信息,可以获取微信的openid,微信公众平台、用户发送的关键词

③ 定义文本回复模板以及文本回复内容

五、微信消息的6大接收接口

1、开发者模式

2、6大消息接口的XML模板

① 文本消息XML模板

由以上XML模板分析可知,如果MsgType节点,其值为text,则代表用户发送的是文本消息。

② 图片消息XML模板

由以上XML模板分析可知,如果MsgType节点,其值为image,则代表用户发送的是图片消息。

③ 语音消息XML模板

由以上XML模板分析可知,如果MsgType节点,其值为voice,则代表用户发送的是语音消息。

④ 视频消息与小视频消息

视频:

小视频:

由以上XML模板分析可知,如果MsgType节点,其值为video或shortvideo,则代表用户发送的消息为视频消息。

⑤ 地理位置消息XML模板

由以上XML模板分析可知,如果MsgType节点,其值为location,则代表用户发送的是地理位置消息。

⑥ 链接消息接口XML模板

由以上XML模板分析可知,如果MsgType节点,其值为link,则代表用户发送的是链接消息。

3、使用php代码判断用户发送的消息类型

① 简化api.php代码,分离所有的xml模板,放入指定的common.php页面中

② 在api.php页面引入common.php

③ 调用$tmp_arr数组

④ 获取MsgType节点,并判断其值,如下图所示:

⑤ 上传api.php代码到LAMP环境中,测试结果如下:

六、微信订阅回复接口

1、订阅回复接口(关注回复接口)

当用户关注我们的微信公众平台时,系统会自动调用订阅回复接口返回相应的信息,我们把这个过程就称之为“订阅回复功能“。

2、订阅回复XML模板

由以上XML模板分析可知,如果MsgType节点为event且Event节点值为subscribe,则代表用户发送的消息为订阅回复消息。

3、编写php代码判断订阅回复

4、上传代码到LAMP环境并测试

七、微信消息的6大回复接口

1、文本回复接口

① 分析文本回复接口的XML模板,如下图所示:

特别注意:在回复接口中,其FromUserName、ToUserName与接收接口中的FromUserName、ToUserName正好相反。

② 在api接口中,定义文本回复模板(封装到common.php文件中)

③ 定义回复时用到的相关变量

④ 使用sprintf进行代码格式化(针对XML模板)

要用到的知识点:

sprintf函数,案例如下:

%s :把变量格式化成相应的字符串。

⑤ 返回格式化后的XML数据到微信端

2、图片、语音、视频回复接口

① 分析图片回复接口的XML模板

MediaId说明:

② 定义图片回复的XML模板

③ 定义相关的变量

④ 使用调试工具,获取mediaid,如下图所示:

第一步:获取access_token,如下图所示:

第二步:使用素材管理端口上传图片素材,获取MediaId

获取MediaId节点,如下图所示:

在api.php中填写$mediaid,如下图所示:

⑤ 格式化XML模板,使用sprintf函数,如下图所示:

⑥ 返回XML格式的数据到微信端,如下图所示:

⑦ 上传api.php与common.php到LAMP环境,测试结果如下:

3、音乐回复接口

① 分析音乐回复接口的XML模板

Music节点内数据进行分析:

② 在common.php页面,定义music模板,如下图所示:

③ 在api.php页面调用音乐回复接口

④ 使用sprintf函数对music模板进行格式化操作

⑤ 返回格式化的XML数据到客户端

⑥ 上传api.php与common.php到LAMP环境,测试结果如下:

4、图文回复接口(重点)

① 分析图文回复接口的XML模板

特殊节点说明:

② 在common.php中定义news模板

③ 在api.php代码中定义相关变量

④ 使用sprintf函数对XML模板进行格式化

⑤ 使用echo方法让XML数据返回到客户端

⑥ 上传api.php与common.php到LAMP环境,测试结果如下:

⑦ 实现多图文功能

再次上传api.php代码到LAMP环境,测试结果如下:

八、微信开发中的代码调试

1、语法错误

解决方案:使用企业级的开发工具(如Zend Studio、PHPStorm、NetBeans),其内置了语法调试工具,可以快速的定位到代码异常。

原文地址:https://www.cnblogs.com/jiaoda/p/7275546.html