PHP 一一 微信公众号开发(二次开发)
编辑模式与开发者模式,这两种模式是互斥的.
编辑模式是平台内置的web系统,不需要专业的技术.
开发者模式可以通过腾讯的API接口进行二次开发,需要专业的PHP技术.
3. 首先要在平台地址中,创建一个订阅号.
订阅号和服务号的区别: 订阅号是针对个人的,服务号针对有营业执照的商户.
0. 在讲下面的一些知识之前: 大家首先把这个网盘中的一些 要使用的的文件,下载下来,后面会使用到.
网盘地址: 链接:https://pan.baidu.com/s/1qZzwLGC 密码:v9vk
1. 开发者模式原理图
还有一点,我们必须要有自己的服务器,在阿里云买一个服务器肯定需要钱啊,我们不想花钱怎么办?
这里就要使用到 内网渗透 的技术,把我们自己的电脑充当服务器(拥有自己的域名).
3、NATAPP内网渗透技术.(将本机充当一个服务器)
在 使用手机号注册一个自己的账号.如下图所示
此时我们需要下载一个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
提交成功后,并点击右侧的启动按钮,就启动成功了.(注意这里有一些注意点:如果提交不成功,多提交几次. 后面有写有哪些注意点)
4、手动开启自动回复(这里有个坑,一定要注意)
我们使用sublime将www下的api.php 文件打开,做下面操作
只要设置就在api.php接口中.
其中包括文本消息、图片,语音,图文等消息
3. 我们来分析一下api.php文件(重点)
首先 $msgType = "text"; 是表示接收的是什么类型的数据
$ contentStr 用来返回给我们是什么样的数据.
如果我们要使用 图片,图文等相关模板,需要将平台中的<XML>文件复制到api.php文件中.
将我们的需要展示的内容填充进去,就可以了
四、具体讲解图文消息接口
、文本回复接口(文本回复四步走)
文本回复一共分为这样的几个步骤:
第一步:组装XML数据
第二步:定义相关的变量$msgType,$contentStr
第三步:使用sprintf函数,格式化变量到%s的位置
要用到的知识点:sprintf函数,在实际项目开发主要用于格式化字符串
sprint(要格式化的字符串,变量1,变量2,变量3...)
到底有多少个变量呢,就是要格式化的字符串中,有多少个%s就有多少个变量。
、编写图文接口(四步走)
第一步:组装XML数据(设置%s)
把以上代码复制放到$newsTpl代码中:
放置完成后,不能立即停止,因为我们还没有放%s呢,必须放置%s
记住:有几个%s,因为一会还要定义几个变量。
第二步:设置相关的变量(有几个%s就要定义几个变量)
我们需要定义6个变量,但是前3个变量,系统默认已经有了,$fromUserName,$toUserName,$time。所以咱们真正定义的只有3个变量。
第三步:使用sprintf函数格式化第一步中的字符串
运行结果:
①打开浏览器,输入http://域名/api.php,看一下语法是否有错误
注意点:
1. 在运行中我们不可以关闭命令行,否则就会出现错误
2. 要开启phpStudy
3. 当我们电脑重启后,将natapp.exe拖入到命令行后,会从新生成一个域名.
3.1 首先先把vaild()方法给打开, 把responseMsg()方法关闭,然后在valid()方法中 添加ob_clean()方法,清除缓存,否则会验证token失败.
public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ ob_clean(); echo $echoStr; exit; } }3.2 当启动成功后,一定要记住将api.php中的valid()方法注释掉,打开responseMsg()方法