说来惭愧PHP做了这么久,好像就没有从头开发过一个微信公众号,这次刚好有机会从头接入开发一个完整的公众号,也不能说完整,但是这些微信的接口我基本上都试一试~看看大概是什么情况。
首先:打通服务器与微信之间的通信。
我这里主要使用的框架是thinkphp5
首先,去百度上找一个微信公众号的类。这种资源很多,基本上找一个就行,下边我是用我找的类中的方法介绍,文末有资源可下载。我这里只贴部分这里需要使用到的代码。
Weixin.php
php
复制代码
/** * @name: 验证服务器地址有效性 * @author: camellia * @date: 20200711 * @email:805795955@qq.com * @param: $TOKEN string 签名字符串 * @return: data type description */ public function valid($TOKEN) { $res = $this->checkSignature($TOKEN); if($res) { $echostr = $_GET['echostr'];//随机的字符串 return $echostr; } else { return "Error"; } } /** * @name: 检查签名 * @desc: 描述 * @author: camellia * @date: 20200711 * @email:805795955@qq.com * @param: $TOKEN string 签名字符串 * @return: data type description */ protected function checkSignature($TOKEN) { if(empty($_GET)) { return false; } //一、接收微信服务器GET方式提交过来的4个参数数据 $signature = $_GET['signature'];//微信加密签名 $timestamp = $_GET['timestamp'];//时间戳 $nonce = $_GET['nonce'];//随机数 //二、加密/校验过程 // 1. 将token、timestamp、nonce三个参数进行字典序排序; // bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) 对数组排序 $tmpArr = array($TOKEN,$timestamp,$nonce);//将上面三个参数放到一个数组里面 sort($tmpArr,SORT_STRING); // 2. 将三个参数字符串拼接成一个字符串进行sha1加密; $tmpStr = implode($tmpArr); //将数组转化成字符串 $signatureStr = sha1($tmpStr); // 3. 开发者获得加密后的字符串与signature对比。 if($signatureStr == $signature) { return true; } else { return false; } }
调用:
ini
复制代码
/** * 验证微信接口 */ public function checkSignature() { $TOKEN = 'es3b3t41mk3matoji1tgortbctcoxiid'; $weixin = new weixin(); //var_dump($weixin); die; $res = $weixin->valid($TOKEN); echo $res; }
上文中设置的$TOKEN的值,需要和微信公众平台开发配置的相同。如下图所示:
服务器地址配置你刚刚能访问到你调用的接口的地址,令牌(Token)就是一个随机字符串,啥都可以,但是复杂度最好高点,毕竟看着高级点。
当然这部分微信官方是有文档的,但是微信这个文档吧,第一次做能不能看明白,就得看你自己的了,想看请移步《微信官方文档》
至此,服务器链接打通。
有好的建议,请在下方输入你的评论。
欢迎访问个人博客 guanchao.site
欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”