PHP 一一 微信公众号开发(二次开发)
两个星期前,学校请了传智播客的老师给我们做实训,讲了一个微信公众号开发,感觉挺有意思,在这里做一下记录,以便以后复习.
一、了解微信公众平台
1. 什么是微信公众平台?
微信公众平台是腾讯为了让用户申请和管理微信公众账号而推出的一个Web平台,而微信公众账号的操作管理在这个平台下进行.换句话说,凡是关注自己公众号的用户,在这个网站中都可以去管理他们. 平台地址: https://mp.weixin.qq.com/
2. 微信的两种运行模式
编辑模式与开发者模式,这两种模式是互斥的.
编辑模式是平台内置的web系统,不需要专业的技术.
开发者模式可以通过腾讯的API接口进行二次开发,需要专业的PHP技术.
3. 首先要在平台地址中,创建一个订阅号.
订阅号和服务号的区别: 订阅号是针对个人的,服务号针对有营业执照的商户.
二、微信公众平台开发(开发者模式)
0. 在讲下面的一些知识之前: 大家首先把这个网盘中的一些 要使用的的文件,下载下来,后面会使用到.
网盘地址: 链接:https://pan.baidu.com/s/1qZzwLGC 密码:v9vk
1. 开发者模式原理图
根据上图,我们联想平时我们关注的微信公众号,当我们发消息给公众号,公众号都会自动回复我们一些东西.
还有一点,我们必须要有自己的服务器,在阿里云买一个服务器肯定需要钱啊,我们不想花钱怎么办?
这里就要使用到 内网渗透 的技术,把我们自己的电脑充当服务器(拥有自己的域名).
2、在开发之前,首先我们要下载并启动PhpStudy,做过php开发的,都应该了解什么是phpStudy.他是php的配置环境,具体参考链接中的PHP环境配置:
http://blog.csdn.net/m0_37989980/article/details/78971478
3、NATAPP内网渗透技术.(将本机充当一个服务器)
在 http://natapp.cn/ 使用手机号注册一个自己的账号.如下图所示
此时我们需要下载一个natapp的客户端. 我在这里提供了网盘地址: 大家可以下载.
1): 首先将下载好的natapp.exe 与 config.ini 同时赋值到 D盘的natapp目录下(这个natapp目录是自己创建的)
2): 打开config.ini中的隧道密钥,改成我们自己的密钥.
这个authtoken就是我们的密钥,把这个密钥复制到config.ini的这个位置
4): 打开cmd窗口,将刚才D盘下natapp目录下的natapp.exe拖动到命令行中,如下图所示
这样我们的服务器就已经创建好了,以后我们就可以通过 上面的 http:// 来访问自己的电脑了
注意: 在运行过程中,cmd命令行不可以关闭/
5): 下载腾讯提供的API接口, 叫api.php,也在刚才你所下载的网盘文件中.
我们把api.php文件放到 我们安装的phpStudy的目录下的 PHPTutorial的WWW目录下;
6): 把api.php放进去之后,打开这个文件, 查看这个文件中的 define("TOKEN","weixin") ,记住这个接口中的密钥是 weixin
7): 打开我们注册过的微信公众平台,找到工具下 的基本配置
提交成功后,并点击右侧的启动按钮,就启动成功了.(注意这里有一些注意点:如果提交不成功,多提交几次. 后面有写有哪些注意点)
8): 此时做到这里就基本上完成了,然后我们可以用自己的微信关注自己所创的公众号.随便发送一条消息.会出现下面问题:
4、手动开启自动回复(这里有个坑,一定要注意)
我们使用sublime将www下的api.php 文件打开,做下面操作
做了这些操作后,我们再向自己的公众号中发送消息,就可以正常回复了!
三、微信的6大接收接口
1. 我们想公众号发送文字消息,其就可以回复,发送图片,语音 就无法回复,这是为什么呢?
只要设置就在api.php接口中.
2. 微信如何接收消息的?
在微信公众平台下,打开开发者工具-->消息管理--->接收普通消息下
其中包括文本消息、图片,语音,图文等消息
3. 我们来分析一下api.php文件(重点)
首先 $msgType = "text"; 是表示接收的是什么类型的数据
$ contentStr 用来返回给我们是什么样的数据.
如果我们要使用 图片,图文等相关模板,需要将平台中的<XML>文件复制到api.php文件中.
将我们的需要展示的内容填充进去,就可以了
四、具体讲解图文消息接口
1、文本回复接口(文本回复四步走)
问题:微信公众平台是如何把数据发送给我们的APP的。
文本回复一共分为这样的几个步骤:
第一步:组装XML数据
第二步:定义相关的变量$msgType,$contentStr
第三步:使用sprintf函数,格式化变量到%s的位置
要用到的知识点:sprintf函数,在实际项目开发主要用于格式化字符串
sprint(要格式化的字符串,变量1,变量2,变量3...)
到底有多少个变量呢,就是要格式化的字符串中,有多少个%s就有多少个变量。
第四步:使用echo输出返回XML数据到微信APP
2、微信中的图文回复接口(重点中的重点)
3、编写图文接口(四步走)
第一步:组装XML数据(设置%s)
XML模板从哪里来,从微信的手册中获取:
把以上代码复制放到$newsTpl代码中:
放置完成后,不能立即停止,因为我们还没有放%s呢,必须放置%s
记住:有几个%s,因为一会还要定义几个变量。
第二步:设置相关的变量(有几个%s就要定义几个变量)
我们需要定义6个变量,但是前3个变量,系统默认已经有了,$fromUserName,$toUserName,$time。所以咱们真正定义的只有3个变量。
第三步:使用sprintf函数格式化第一步中的字符串
第四步:使用echo把图文消息返回给微信的APP
运行结果:
4、如果微信开发时遇到故障,改如何调试呢?
①打开浏览器,输入http://域名/api.php,看一下语法是否有错误
如果出现以上代码,代表微信接口没有问题,因为HTTP_RAW_POST_DATA没有经过腾讯服务器,只经过我们自己的服务器,所以报HTTP_RAW_POST_DATA.
注意点:
1. 在运行中我们不可以关闭命令行,否则就会出现错误
2. 要开启phpStudy
3. 当我们电脑重启后,将natapp.exe拖入到命令行后,会从新生成一个域名.
3.1 首先先把vaild()方法给打开, 把responseMsg()方法关闭,然后在valid()方法中 添加ob_clean()方法,清除缓存,否则会验证token失败.
public function valid(){$echoStr = $_GET["echostr"];//valid signature , optionif($this->checkSignature()){ob_clean();echo $echoStr;exit;}}
3.2 当启动成功后,一定要记住将api.php中的valid()方法注释掉,打开responseMsg()方法
PHP 一一 微信公众号开发(二次开发)相关推荐
- 微信公众号的二次开发(二 自定义菜单的创建)
在上篇<微信公众号的二次开发(一)>我们介绍了微信订阅号的一些坑, 以及微信公众平台开发的一些基本配置.下面我们继续介绍如何通过用户关注等行为.获取用户的openid. 自定义微信公众号菜 ...
- 如何判断微信公众号是否二次开发(一)
微信公众号是否二次开发,即微信公众号是否使用了公众平台开发接口(其中主要如:自定义菜单接口.配置第三方开发服务器接口.调用外部链接等). 接下来介绍如何用手机直观的去判断微信公众号是否二次开发,主要从 ...
- 微信公众号的二次开发(三、接收事件推送获取用户信息)
在上篇<微信公众号的二次开发(二 自定义菜单的创建)>中我们介绍了自定义菜单的创建.本篇文章将介绍如何通过接收事件推送来获取用户信息.首先我们阅读官方文档: 根据官方文档的介绍 微信公众号 ...
- 微信公众号的二次开发(一 订阅号没有获取网页授权的解决方法)
前言 应公司开发需求,最近需要进行公众号的二次开发.经过系列讨论,最后确定为使用订阅号来开发. 因为公众号开发要获取微信用户的基本信息,需要通过用户授权获取code,然后去换取openid,最后在获取 ...
- nodejs+express对微信公众号进行二次开发--接收消息,自动回复文本,图片以及代码优化
上篇说到微信开发配置,接下来着手开发,我们先来看看文本消息的接收与自动回复: 接收普通消息–当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上,当服务器接收 ...
- 微信公众号php二次开发,微信公众号开发之文本消息自动回复php代码
本文实例为大家分享了php微信文本消息自动回复 别代码,供大家参考,具体内容如下 1.PHP示例代码下载 下载地址1:http://xiazai.jb51.net/201608/yuanma/phpw ...
- Java开发微信公众号(二)---开启开发者模式,接入微信公众平台开发
接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 资料准备: 1.一个可以访问的外网,即80的访问端口,因为微信公众号接 ...
- 微信公众号无需二次登录_您无需两次解决问题-您需要一个设计系统
微信公众号无需二次登录 重点 (Top highlight) The design system concept can be differently defined according to eac ...
- 公众号分享页面php,微信公众号网页分享功能开发的示例代码
现在每天都可以看到很多微信分享的链接上面有网站或者商家的自定义的分享标题,和分享链接的描述及分享出去的图像,例如下面的分享出去的链接: 上面这个是微信的js-SDK页面分享给微信好友在聊天列表中显示的 ...
- 制作淘宝客微信公众号(二)
制作淘宝客微信公众号(二) 这篇文章主要是记录开发淘宝客微信公众号机器人的主要开发过程. 1.完整淘宝客接口流程 上一篇文章已经介绍了如何去调用一个淘宝联盟的API,但是实际上,用户发送链接,我们 ...
最新文章
- Ext学习-前后交互模式介绍
- 梦回93年,32岁的Yann LeCun在展示他的卷积网络...
- 大数据技术学习路线,有信心能坚持学习的朋友,从现在开始吧
- linux nDPI 协议检测 源码分析
- POJ1125 Floyd
- Ruby Regexp
- java开心消消乐代码_Vue实现开心消消乐游戏算法
- 为什么我会反对大家写工作日报
- oop matlab,oop – 在Matlab中设置对象的属性
- IP defragment
- js获取后端传过来的数据
- html响应式布局media,JS中使用media实现响应式布局_飛雲_前端开发者
- 阿里云python面试题_一看“左程云:200道算法与数据结构”,二刷“阿里云:70+算法题、30种大厂笔试高频知识点”,3月过去终于挺进我梦中的字节!...
- matlab gui 进度条,MATLAB GUI 之自制进度条
- Win10秘笈:两种方式修改网卡物理地址(MAC)
- 100个在线生信小工具
- [书目20110904]谢孟媛英文文法
- java开发工程师转正述职报告
- 计算机视觉、模式识别、机器学习常用牛人主页链接
- ELKStack实时分析Haproxy访问日志配置
热门文章
- php 获取月份的周数,PHP获取当前月份的周数只能使用php
- 【MOTRIX】使用motrix下载百度云文件
- 弱口令是什么?有哪些注意事项?
- Vue封装Tabs标签页
- java图片降噪_Java基于opencv实现图像数字识别(四)—图像降噪
- prometheus 阿里云短信告警
- python爬虫获取网站销售情况(内置源码)
- 小学计算机绘图体会,辅导小学生电脑绘画的几点做法
- The server time zone value ‘锟叫癸拷锟斤拷\u05FC时锟斤拷‘ is unrecognized or represents more than one time zone
- 在职场遇到一个总是说话带刺的同事怎么相处?