­

Laravel开发微信公众号【订阅号】后台的一些事情

  • 2019 年 11 月 13 日
  • 筆記

普遍的应用场景

对电脑这方面感兴趣的童鞋可能很清楚有一些“套路”,那就是回复某个关键词,获取某些素材、软件的下载地址。

很常见的需求。

今天我慢来聊一下用Laravel开发一个公众号后台的一些琐事。

也即我开发过程中的遇到的一些问题。

  • CSRF验证问题

CSRF验证问题

这个问题基本用Laravel都会知道:在Form表单中,需要用@csrf来验证。

如果没有csrf验证,会被Laravel拦截。

而今天我发现了一个添加“白名单”的方法,怪我基础不扎实。

那就是在app/Http/Middleware/VerifyCsrfToken.php添加白名单路径:

这样就解决了CSRF的验证问题。

微信订阅号开发流程

大致流程是:注册账号、获得权限、进行开发。

地址:https://mp.weixin.qq.com/

这个不重要,基本上都要开发了,肯定基础有,知道下一步干什么。

我想说的是验证服务器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,不然会一直验证失败的!