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

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

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

    class VerifyCsrfToken extends BaseVerifier
    {
     protected $except = [
        'wechatmp', 
     ];
    }
    

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

  3. 按照你熟悉的方式,在WechatController里写responseMsg:

    1. 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;
           }
       }
      

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

  4. https://blog.csdn.net/tianlebest/article/details/60667259

你可能感兴趣的:(用laravel搭一个微信公众号后台)