一.在进行微信公众号开发时第一步要做的就是接入服务器。而接入微信公众号开发,需要做三步:
1.填写服务器配置
2.验证服务器地址的有效性,(即token认证)
3.依据接口文档实现业务逻辑。
二.以下将说明如何在thinkphp中进行微信公众号开发
第一步:先安装phpstudy 并下载 thibkphp框架,放入phpstudy服务器中。
在我的博客中有一篇讲解了phpstudy的安装和thinkphp的框架。
当完成thinkphp的框架的安装后,我们可以在网站中打开网址看到一个笑脸,如下(phpwechat:是我的thinkphp的名称更改)
第二步:当thinkphp框架完成后,我们就可以在默认控制器中进行认证代码的实现了。代码如下:
<?php
namespace app\index\controller;
define("TOKEN", "tangsu");
class Index
{
public function index()
{
$this->valid();
}
//验证消息
public function valid()
{
$echoStr = $_GET["echostr"];
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
//检查签名
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if($tmpStr == $signature){
return true;
}else{
return false;
}
}
}
代码解释:1.当开发者提交信息时,微信服务器会发送get请求到你填写的服务器url上。
2.当get请求访问你的服务器时,会默认访问index控制器,然后执行valid方法,
valid方法,首先获取echostr的值,然后进行检查签名。如果签名检查为真,即通过,将echostr返回。此时验证成功。
第三步:进行测试:
1.由于微信公众号验证需要填写正确的域名url,无法使用本地地址。所以可以使用进行内网穿透。
使用方法:下载ngrok,安装之后,输入 "ngrok.exe http 80"
即可获取域名网址:(如:http://62ff06c6.ngrok.io ->对应的就是localhost:80端口)
2.在获取后域名后即可在微信公众号中进行验证了。
1.在服务端将token设置好相同的。2.将url设置为域名加默认的入口。
点击提交即可认证。该认证可能会有延迟,所以多点击几次提交即可。