1.可以购买阿里云的服务器和域名。
2.使用内网渗透软件NATAPP把自己的计算机打造成自定义服务器,会自动拥有一个域名。
缺点就是关掉后域名会变化,因为是免费的,可以购买付费的就不会变了。
① 地址:https://natapp.cn/
② 创建隧道:
需要有phpstudy环境,如果更改过phpStudy端口号的,此位置设置为更改后的端口,比如8080
③ 在除C盘以外的任意盘符下,创建一个natapp文件夹
软件链接:https://pan.baidu.com/s/1lPYonGtMId8njJ21jnL02A 提取码:lx13
④ 获取隧道的authtoken(我的隧道里面,如下图所示)
⑤ 更改config.ini中的authtoken
⑥ 打开cmd窗口,切换到natapp目录
⑦ 使用natapp.exe –authtoken=我们自己的authtoken打开软件
运行成功后,如下图所示:
⑧然后就可以访问了。
① 下载微信的开发接口,wx_sample.php文件
文件链接:https://pan.baidu.com/s/1VwfJxEsxqM90M7IEuP6ywA 提取码:ncv5
② 把wx_sample.php文件更名为api.php文件
③ 把api.php,放到phpStudy中的WWW目录下
④ 查看api.php中的TOKEN密钥
默认为weixin,再加上免费的域名
有了域名 + TOKEN密钥就可以让微信连接到我们自己的服务器了。
⑤ 在微信公众平台设置域名 + 接口文件 + TOKEN
填写关键信息:
单击提交,启动启用按钮如下图所示:
⑥ 打开微信,向我们的平台发送任意字符,如下图所示:
问题:报错,说我们出现故障,但是到目前为止,我们没有更改为任何一行代码,为什么?
答:因为我们并没有在微信的接口中开启回复功能。
⑦ 开启自动回复功能(更改api.php接口)
1)当验证成功后,把以下代码注释掉!!!!!重要
2)在以上代码的下面,添加一行代码:!!!!!重要
保存,再次向平台发送任意字符,如下图所示:
$对象 = new 类名称(),在PHP中,通过这种方式创建的都是一个对象。
基本语法:
$对象 -> 方法名称(),如下图所示:
1)获取客户端APP发送过来的数据,格式XML
2)把XML数据转换为对象
3)发送过来的数据有哪些属性呢?(开发者工具->开发者手册->消息管理->接收普通消息)
ToUserName :我们的注册的微信公众平台账号
FromUserName :微信的信息,一个微信有一个唯一的openid
CreateTime :时间戳
MsgType :消息类型,如果是text代表文本消息(字符串),如果是image代表图片消息,如果voice代表语音消息。
Content :发送的文本内容
4)使用PHP代码发送微信信息
更改一下:
运行结果:
当我们通过微信APP向微信公众平台发送信息时,对于自定义服务器而言,这就是一个接收过程。
在微信开发中,如何判断微信发送给我们的平台的数据类型(文本、图片、语音)
① 接收MsgType这个属性,如下所示:
② 对$msgType进行判断,text=文本消息,image=图片消息,voice=语音消息
① 检查域名是否正确,因为natapp域名会自动更新
② 如果域名没有问题,但是总是显示token认证失败,看valid方法是否开启
③ 如果api.php页面有语法错误,其也会验证失败,怎么查看语法是否有错误呢?
答:我们可以在浏览器中,直接运行api.php,如下图所示:
出现以上提示,代表我们的api.php文件没有任何问题,肯定是问题①或问题②
如果api.php有错误显示如下:
文本消息回复接口(默认,知道怎么执行的即可)
音乐消息回复接口
图文消息回复接口
① 查看一下文本消息回复接口的XML模板(开发者文档->消息管理->被动回复用户消息)
② 查看文本消息的文本,api.php中如下图所示:
对比官方手册与api.php的文件内容,我们发现,api.php中的所有的CDATA中的方括号都是通过%s进行代替的,记住一个%s就是一个变量。
还要特别说明:并不是所有的%s变量都是未知的,有一些是已知的:
$fromUsername/$toUsername/$time
由此可知:如果想进行文本回复,我们只需要定义两个变量,一个是$msgType返回的数据类型,一个是$contentStr返回的文字内容。
③ 定义变量(缺几个%s就定义几个变量)
④ 把变量放在%s的位置,要用到的函数sprintf(),有几个参数:
$resultStr = sprintf(‘XML模板’,参数列表)
参数列表说明:在模板中,有几个%s,参数列表里面就有几个变量。
⑤ 发送XML模板到微信APP进行显示
要求:要送一个关键词“音乐”,系统返回一条音乐信息
要想实现这个功能,要分步骤实现:
① 判断用户发送给我们的关键字是不是“音乐”两个字(接收)
② 定义音乐的XML模板(到微信公众开发文档中去查看)
③ 定义变量,默认情况下,模板的前三个都有变量,只需要定义8-3=5个变量即可
④ 把变量放在%s的位置,用到sprintf()函数
⑤ 返回数据到微信APP
测试:
案例:当我们向平台发送“图文”关键词时,系统自动返回一条图文信息
① 先定义接收图文这个关键词
如果$keyword == “图文”,返回图文消息接口。
② 定义XML模板
由上图分析可知,一共有9个%s,所以系统中应该有9个变量,但是由于前3个变量已经定义,所以我们只需要定义9-3 = 6个变量即可。
③ 定义6个变量
$msgType :返回的类型,news代表图文消息
$count :返回的文章数量,暂时只能设置为1
$title :文章的标题
$description :针对标题的描述信息,不要太长
$picurl :封面图片的地址
$url :就是一点击图片,系统会自动跳转到指定的url页面
④ 把%s进行替换,替换为已定义的变量
⑤ 返回数据到微信APP
测试:
语音识别接口是接收消息的还是发送消息的?答:语音识别代表接收消息接口,所以只要判断$msgType == ‘voice’就可以了。
① 开启语音识别功能
找到如下菜单,单击开启(默认是关闭的)
设置完成后,我们的微信就具有语音识别功能了:
② 如何接收识别的结果呢?
③ 向接收MsgType一样,接收Recognition,得到文字信息
④ 返回识别后的结果
测试一下:特别注意,语音识别接口生效时间比较慢,一般是24小时后生效。还可以通过取消关注并再次关注账号,实现这个功能。