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、创建阿里云服务器
具体配置如下:
① 计费方式:按量付费
② 网络配置,专有网络,默认安全组
③ 实例配置,选择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),其内置了语法调试工具,可以快速的定位到代码异常。
Wechat微信公众平台开发的更多相关文章
- 微信公众平台开发(110) 微信连Wi-Fi
关键字:微信公众平台 微信连Wi-Fi 微信 WiFi 硬件鉴权作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-wifi.html 微信连Wi- ...
- 1.Node.js 接入微信公众平台开发
一.写在前面的话 Node.js是一个开放源代码.跨平台的JavaScript语言运行环境,采用Google开发的V8运行代码,使用事件驱动.非阻塞和异步输入输出模型等技术来提高性能,可优化应用程 ...
- 微信公众平台开发接口PHP SDK
以前没接触过微信公众平台开发,前几天刚找到实习公司就要求我做一个微信公众平台的应用,于是乎开始学习微信公众平台开发接口的调用,看开发文档之后还是不知道从何入手,只好上网找入门资料,终于在方倍工作室找到 ...
- 微信公众平台开发教程(一)_微信接入校验以及token获取
微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,而公众平台开发接口则是提供服务的基础. 接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 ...
- Java微信公众平台开发--番外篇,对GlobalConstants文件的补充
转自:http://www.cuiyongzhi.com/post/63.html 之前发过一个[微信开发]系列性的文章,也引来了不少朋友观看和点评交流,可能我在写文章时有所疏忽,对部分文件给出的不是 ...
- Java微信公众平台开发(十二)--微信用户信息的获取
转自:http://www.cuiyongzhi.com/post/56.html 前面的文章有讲到微信的一系列开发文章,包括token获取.菜单创建等,在这一篇将讲述在微信公众平台开发中如何获取微信 ...
- Java微信公众平台开发(一)--接入微信公众平台
转自:http://www.cuiyongzhi.com/post/38.html (一)接入流程解析 在我们的开发过程中无论如何最好的参考工具当然是我们的官方文档了:http://mp.weixin ...
- NodeJS微信公众平台开发
微信是手机用户必备的App,微信最开始只是作为社交通讯应用供用户使用,但随着用户量不断的增加,微信的公众号在微信上表现出来了它强大的一面,微信公众平台具有四大优势:1.平台更加稳固:2.用户关系更加平 ...
- WeChat 微信公众号开发步骤
WeChat 微信公众号开发步骤 一.什么是微信公众号? 微信公众号是开发者或商家在微信公众平台上申请的应用账号,该帐号与QQ账号互通,通过公众号,商家可在微信平台上实现和特定群体的文字.图片.语音 ...
随机推荐
- ACM__最小生成树之prime
今天做了一道题,根本没想到最小生成树,稀里糊涂的浪费了很多时间,复习一下 转载自https://www.cnblogs.com/zhangming-blog/p/5414514.html Prim算法 ...
- NAT与FULL NAT的区别
LVS 当前应用主要采用 DR 和 NAT 模式,但这 2 种模式要求 RealServer 和 LVS在同一个 vlan中,导致部署成本过高:TUNNEL 模式虽然可以跨 vlan,但RealSer ...
- Rust语言学习笔记(6)
Traits(特质) // 特质 pub trait Summary { fn summarize(&self) -> String; } pub struct NewsArticle ...
- AAPTEXECPTION
Error:java.util.concurrent.ExecutionException: com.android.builder.\files-.aar\a234c5f0534a8da0e4db0 ...
- nagiosQL访问时报错PHP message: PHP Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead
nagiosQL安装环境: CentOS release 6.4 (Final) php-5.5.4 nagiosql_320 nginx version: nginx/1.2.3 安装一切正常,当访 ...
- 学JS的心路历程 -物件与原型(二)
昨天有提到说Object.setPrototypeOf可以指定一个物件为另一个物件的原型,但有想过到底这个原型,也就是[[Prototype]]最终会到何处吗? 答案是Object.prototype ...
- 处女座和小姐姐(三)-数位dp1.0
链接:https://ac.nowcoder.com/acm/contest/329/G来源:牛客网 题目描述 经过了选号和漫长的等待,处女座终于拿到了给小姐姐定制的手环,小姐姐看到以后直呼666! ...
- Struts 框架
struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/ ...
- yii gii配置ip限制使用gii
<?php $config = [ 'components' => [ 'request' => [ // !!! insert a secret key in the follow ...
- Jenkins 踩过的坑之再总结
在安装完jenkins后,linux中默认使用的jenkins这个用户,这时在构建完项目后我们需要执行一些shell命令时会出现没有权限的情况,导致构建失败,这里我们需要给jenkins用户相应的权限 ...