Laravel开发微信公众号【订阅号】后台的一些事情
- 2019 年 11 月 13 日
- 筆記
普遍的应用场景
对电脑这方面感兴趣的童鞋可能很清楚有一些“套路”,那就是回复某个关键词,获取某些素材、软件的下载地址。
很常见的需求。

今天我慢来聊一下用Laravel开发一个公众号后台的一些琐事。
也即我开发过程中的遇到的一些问题。
- CSRF验证问题
CSRF验证问题
这个问题基本用Laravel都会知道:在Form表单中,需要用@csrf
来验证。
如果没有csrf验证,会被Laravel拦截。
而今天我发现了一个添加“白名单”的方法,怪我基础不扎实。
那就是在app/Http/Middleware/VerifyCsrfToken.php
添加白名单路径:

这样就解决了CSRF的验证问题。
微信订阅号开发流程
大致流程是:注册账号、获得权限、进行开发。
这个不重要,基本上都要开发了,肯定基础有,知道下一步干什么。
我想说的是验证服务器URL的一些问题


可能新手会有点懵

点击提交的时候微信会给你发送一些字符串【包括signature,timestamp,nonce,echostr】
然后你通过token【前面设置的】和timestamp以及nonce通过算法算出来一个字符串,用他来和给定的signature比较。
如果验证成功,则输出echostr
PHP代码如下
$signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; define('TOKEN','xxxxxxxxxxxxxxxxxxxxxxxxx'); $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode($tmpArr); $tmpStr = sha1($tmpStr); $echoStr = $_GET["echostr"]; if ($tmpStr == $signature) { echo $echoStr; } else { echo 'no'; }
所以偷懒的一个方法是直接输出echostr就行。
还有一点需要提醒的是,你输入的URL不要有参数,要“干净”

什么意思?
URL可以是:https://www.misiyu.cn/xxx/xxx
但不能是:https://www.misiyu.cn/wechat?a=b&c=d
不能有?a=b&c=d
,不然会一直验证失败的!