美文网首页LaravelLaravel开发实践Laravel
用laravel搭一个微信公众号后台的坑

用laravel搭一个微信公众号后台的坑

作者: stois | 来源:发表于2016-07-07 22:12 被阅读4686次

我使用的是laravel5.2, 早期版本可能不适合下面的方法。

  1. 在routes.php写下接收微信服务器post请求的路径:
Route::post('wechatmp', 'WechatController@responseMsg');
  1. 在App\Http\Middleware\VerifyCsrfToken里,将该请求路径去除CSRF TOKEN的保护,官网说明
class VerifyCsrfToken extends BaseVerifier
{
  
    protected $except = [
       'wechatmp', 
    ];
}

在这里补充一下,csrf Token是一种laravel自身提供的请求保卫机制。必须符合csrf token的验证,对方发来的post请求才会被接受,常用在laravel的ajax请求。当然如果我们真的要开放某个接口,就使用上面的方式,把这个接口对应的csrf token关掉。

  1. 按照你熟悉的方式,在WechatController里写responseMsg:
public function responseMsg(Request $request){

        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
        if (!empty($postStr)){
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $RX_TYPE = trim($postObj->MsgType);
         //   $this->test($RX_TYPE) ;
            switch ($RX_TYPE)
            {
                case "text":
                    $resultStr = $this->receiveText($postObj);
                    break;
        case "image":
            $resultStr = $this->receiveImage($postObj); 
          break ;
        case "voice":
              $resultStr = $this->receiveVoice($postObj) ;
          break ;
                case "event":
                    $resultStr = $this->receiveEvent($postObj);
                    break;
                default:
                    $resultStr = "unknow msg type: ".$RX_TYPE;
                    break;
            }
            echo $resultStr;
        }else {
            echo "";
            exit;
        }
    }

后面的微信公众平台开发者文档都有。

相关文章

网友评论

  • e8bca8671312:非常谢谢你,这个坑还真没发现;这回正好用到laravel框架开发了,拿过之前封装好的微信类就是不能用,原来的项目没问题;研究了很长时间还是没发现;今天正好看到你发的文章,结果问题解决了,谢谢!:smile:
    stois:@追逐明天_a346 缘分
  • 28f8d5139184:我现在就遇到了这个问题。但按你的方法加了限制也不起作用呢。
    小小小胡:@stois 我的也不能进入到POST中,,无法得到微信服务器传来的值
    stois:@voidlh 哪一步出了问题?还是不能发post?
  • 该叶无法找到:这个…有点没明白。所以你的坑是csrf token?
    该叶无法找到:@stois :flushed:你在正文里说明确一点,可以把csrf的作用也讲讲。我给收了,帮助更多的人
    stois:@该叶无法找到 是我坑了自己...没好好读文档...

本文标题:用laravel搭一个微信公众号后台的坑

本文链接:https://www.haomeiwen.com/subject/rfbljttx.html